定時任務定時備份docker中mysql的數據
定時備份腳本 backupdb.sh:
#!/bin/sh
db_user="數據庫用戶名"
db_passwd="數據庫密碼"
db_name="需要備份的數據庫名"
CONTAINERNAME="容器名"
REMOTE_USER="備份主機用戶名"
REMOTE_IP="備份主機ip"
REMOTE_DIR="備份主機的備份目錄
name="$(date +"%Y%m%d%H%M%S")"
docker exec -i $CONTAINERNAME /usr/bin/mysqldump -u$db_user -p$db_passwd $db_name >>/usr/data/backup/$name.sql
# 通過scp的方式將備份的數據轉移到另外一臺服務器
scp /usr/data/backup/$name.sql $REMOTE_USER@$REMOTE_IP:$REMOTE_DIR
# 保留最近一個月的數據
find /usr/data/backup -type f -mtime +20 -name "*.sql" -exec rm -rf {} \;
注意需要在docker安裝mysql的時候,需要在宿主機新建文件夾 /usr/data/backup
在window中編輯過的腳本需要去除空格和換行:
# 去除腳本中的空格和換行
sed -i 's/\r$//' /usr/data/backup/backupdb.sh
# 腳本中docker主機執行中執行容器命令時候 docker exec -it 需要將 t 去掉,否則在執行定時任務腳本的時候會報錯 the input device is not a TTY
通過scp的方式將數據保存到另外一臺服務器需要設置ssh免密登錄:
請參考: SSH免密登錄,實現A服務器免密登錄B服務器
啓動定時任務:
# 啓動定時任務
crontab -e
# 將定時任務寫入其中 分 時 日 月 年
* * * * * /bin/bash /usr/data/backup/backupdb.sh
# 查看定時任務列表
crontab -l