【Docker】mysql使用mysqldump定時備份數據庫

轉自:https://www.jianshu.com/p/be1e581acb8e

 

1、crontab 是用來讓使用者在固定時間或固定間隔執行程序之用
手動啓動crontab服務:

service crond start

crontab相關知識:參考,https://blog.csdn.net/qq_32688731/article/details/88203654

2、mysqldump

docker中mysqldump的完整路徑docker exec /usr/bin/mysqldump。

mysqldump詳解

3、數據庫備份腳本
功能:mysql 每天定時備份, 並刪除7天以前的備份
mysql_dumps.sh:

#!/bin/bash

docker_name = mysql
data_dir = "/opt/docker/mysql/backup/"
docker exec -it ${docker_name} mysqldump -uroot -pmysql@Pwd.. --all-databases > "$data_dir/data_`date +%Y%m%d`.sql"
send=`date '+%Y-%m-%d %H:%M:%S'`
if [ $? -ne 0 ];
then
    # 任務失敗,發送郵件
    echo "$send 任務失敗,發送郵件"
    exit -1
else
    echo "$send 數據備份成功!"
fi

find $data_dir -mtime +7 -name 'data_[1-9].sql' -exec rm -rf {} \;

4、通過linux cron設置定時任務
crontab -e:

0 2 * * * sh /opt/docker/mysql/mysql_dumps.sh > /opt/docker/mysql/mysql_dumps.log 2>&1

5、遇到的問題

/bin/sh^M: bad interpreter: No such file or directory

原因:這是不同系統編碼格式引起的:在windows系統中編輯的.sh文件可能有不可見字符,所以在Linux系統下執行會報以上異常信息。
解決:
1).在windows下轉換:
利用一些編輯器如UltraEdit或EditPlus等工具先將腳本編碼轉換,再放到Linux中執行。轉換方式如下(UltraEdit):File-->Conversions-->DOS->UNIX即可。
2).在linux中編寫改腳本。

 

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章