定時任務定時備份docker中mysql並將數據自動保存到另外一臺服務器

定時任務定時備份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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章