利用linux系統(tǒng)自帶的cron 定時(shí)備份數(shù)據(jù)庫(kù),不需要寫(xiě)代碼了
linux系統(tǒng)自帶的cron 定時(shí)備份數(shù)據(jù)庫(kù)
本來(lái)在代碼里面寫(xiě)了一個(gè)定時(shí)任務(wù),每隔10分鐘定時(shí)備份數(shù)據(jù)庫(kù),其他項(xiàng)目都沒(méi)問(wèn)題,原來(lái)部署的docker項(xiàng)目都沒(méi)問(wèn)題,這次新部署一個(gè)項(xiàng)目定時(shí)任務(wù)總是報(bào)錯(cuò),報(bào)錯(cuò)信息:nsenter: reassociate to namespace 'ns/ipc' failed: Operation not permitted。弄起來(lái)覺(jué)得麻煩,就想了另外一個(gè)方法,利用linux系統(tǒng)帶的crontab進(jìn)行定時(shí)執(zhí)行備份任務(wù)。centos 7.X系統(tǒng)。
有需要的直接拿去用......
1、創(chuàng)建備份腳本
進(jìn)入目錄 /usr/local/bin/ 創(chuàng)建一個(gè)mysql_backup.sh 腳本,腳本名稱(chēng)可以自己定義。并且付給讀寫(xiě)執(zhí)行權(quán)限 chmod 777 mysql_backup.sh
創(chuàng)建完成之后,寫(xiě)腳本內(nèi)容,貼在下面(記住要一行一行復(fù)制,否則可能會(huì)報(bào)錯(cuò)bad interpreter: Text file busy):
#!/bin/bash # 配置參數(shù) BACKUP_DIR="/home/tono/sql" FILENAME="$BACKUP_DIR/tono_$(date +\%Y\%m\%d-\%H\%M).sql" # 執(zhí)行備份語(yǔ)句 docker exec polo-mysql mysqldump -uroot -pkenuo@2022 --databases tono > "$FILENAME" # 驗(yàn)證備份結(jié)果 if [ $? -eq 0 ]; then echo "[$(date)] succes: $FILENAME" >> /var/log/mysql_backup.log else echo "[$(date)] fail: $?" >> /var/log/mysql_backup.log fi # 清理舊備份(保留最近4個(gè)文件) find $BACKUP_DIR -name "tono_*.sql" -type f | sort -r | tail -n +4 | xargs rm -f --
2、linux創(chuàng)建任務(wù)計(jì)劃執(zhí)行以上腳本
在宿主機(jī):執(zhí)行命令:crontab -e 沒(méi)有這個(gè)命令下載就好了。
執(zhí)行上面命令后,會(huì)打開(kāi)vim編輯,按insert鍵盤(pán)進(jìn)行編輯,如下:
第一句是每隔10分鐘,執(zhí)行腳本。第二句是寫(xiě)日志。

不一定非要等10分鐘,可以先執(zhí)行mysql_backup.sh腳本,在此腳本所在目錄下直接敲回車(chē)命令./mysql_backup.sh,成功生成sql腳本表示腳本沒(méi)問(wèn)題。
等待十分鐘后,查看定時(shí)任務(wù)是否成功。
需要docker命令的進(jìn)行數(shù)據(jù)庫(kù)備份的也可以留言或聯(lián)系我。

浙公網(wǎng)安備 33010602011771號(hào)