[MySQL] 簡易備份指令, 新增docker相關


Ref: https://hub.docker.com/_/mysql/
如果是使用 docker
假如建立 mysql 的指令是使用
docker run --name mysql2 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=自己建立的密碼 -v /data/db:/var/lib/mysql -d mysql

備份的話可以使用
docker exec mysql2 sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /path/to/backup.sql

#!/bin/bash
MYSQL_CONTAINER='mysql2'
SAVE_DIR='/root/looker_video_backup'
/usr/bin/docker exec "$MYSQL_CONTAINER" sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > "$SAVE_DIR/backup_`date +%Y%m%d`.sql"
# find
#  -mtime n 指定檔案的最後修改時間(modification time),單位為天
#    ex: find -mtime 7 => 七天內的被修改過的檔案會被搜出來
#  -name 搜尋名字為後面字串的檔案
#  -exec 將搜尋出來的結果導向後面的指令去執行
# ref: https://blog.gtwang.org/linux/unix-linux-find-command-examples/
find $data_dir -mtime +7 -name 'data_[1-9].sql' -exec rm -rf {} \;



資料來源: https://code.yidas.com/mysqldump/

備份單一資料庫
#mysqldump -h hostname -u root -p database_name > backup.sql;

備份資料庫中單一資料表
# mysqldump -u root -p database_name table_name > backup.sql;

備份資料庫中多張資料表
# mysqldump -u root -p database_name table1 table2 > backup.sql;

備份多個資料庫
# mysqldump -u root -p --databases db1 db2 > backup.sql;

備份所有資料庫
# mysqldump -u root -p --all-databases > backup.sql;


復原使用mysql
復原單一資料庫
# mysql -u root -p database_name < backup.sql

復原多個資料庫
# mysql -u root -p < backup.sql



因為新版mysqldump預設會使用UTF8,所以還原較沒問題, 
若為舊版的mysqldump, 
則需要使用–default-character-set 指定字集

留言

這個網誌中的熱門文章

[MySQL] schema 與資料類型優化

[翻譯] 介紹現代網路負載平衡與代理伺服器