Ubuntu下mysql定時(shí)跨服務(wù)器數(shù)據(jù)庫(kù)備份還原

條件:服務(wù)器A、服務(wù)器B

一、定時(shí)備份服務(wù)器A的數(shù)據(jù)庫(kù)

1.新建目錄存放.sh文件

cd mnt
mkdir db_backup
cd db_backup
vim backup.sh
#修改文件權(quán)限為可執(zhí)行
chmod +x backup.sh

2.備份服務(wù)器A的數(shù)據(jù)庫(kù)并傳輸?shù)椒?wù)器B

#備份路徑
BACKUP=/mnt/db_backup
#當(dāng)前時(shí)間
DATETIME=$(date +%Y-%m-%d)
#數(shù)據(jù)庫(kù)地址
HOST=xxx
#數(shù)據(jù)庫(kù)用戶名
DB_USER=xxx
#數(shù)據(jù)庫(kù)密碼
DB_PW=xxx
#數(shù)據(jù)庫(kù)名
DATABASE=xxx

#備份到服務(wù)器A
mysqldump  -u${DB_USER} -p${DB_PW} ${DATABASE} > ${BACKUP}/$DATABASE-$DATETIME.sql

cd $BACKUP
#傳輸?shù)椒?wù)器B
sshpass -p B的密碼 scp $DATABASE-$DATETIME.sql root@B的ip:/mnt/db_backup/

#刪除3天前備份的數(shù)據(jù),可以自行更改
find $BACKUP -mtime +3 -name "*.sql" -exec rm -rf {} \;

3.創(chuàng)建定時(shí)任務(wù)

#編輯crontab文件
vim /etc/crontab
添加以下內(nèi)容(每天6點(diǎn)01分執(zhí)行.sh文件)
01 6    * * *   root    /mnt/db_backup/backup.sh
#重啟cron服務(wù)
service cron restart

二、定時(shí)將sql文件導(dǎo)入服務(wù)器B的數(shù)據(jù)庫(kù)

1.新建目錄存放.sh文件(同上)
2.將A傳過(guò)來(lái)的sql文件導(dǎo)入到B

DATABASE=xxx
DATETIME=$(date +%Y-%m-%d)
#操作mysql
mysql -u user -ppasswd <<EOF
drop database $DATABASE;
create database $DATABASE;
use $DATABASE;
source /mnt/db_backup/$DATABASE-$DATETIME.sql;
EOF

3.創(chuàng)建定時(shí)任務(wù)(同上,時(shí)間可選擇晚于服務(wù)器A定時(shí)時(shí)間10分鐘)

三、問(wèn)題與解決

1.跨服務(wù)器傳輸sshpass報(bào)錯(cuò):

Host key verification failed

因?yàn)槭状瓮ㄟ^(guò)sshpass用A鏈接B,A中沒(méi)有相關(guān)的密碼記錄,所以要先在A中執(zhí)行一次:

sshpass 測(cè)試文件 root@B的ip:/mnt/db_backup/

根據(jù)提示鍵入密碼,使A有了B的相關(guān)記錄,即可解決此問(wèn)題
2.建議對(duì).sh文件制定定時(shí)任務(wù)前都先手動(dòng)執(zhí)行一遍,測(cè)試能否成功,執(zhí)行命令:

bash xxx.sh
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容