在實際項目中薇芝,遇到有客戶機房斷電導(dǎo)致數(shù)據(jù)庫數(shù)據(jù)丟失的問題蓬抄,又因為備份容災(zāi)不及時,導(dǎo)致部分?jǐn)?shù)據(jù)恢復(fù)不了夯到。使用Linux的自動定時任務(wù)命令crontab對數(shù)據(jù)庫進行定時備份可以減少這種情況發(fā)生嚷缭。但這樣還不夠安全,萬一本地磁盤壞了黄娘,造成的損失將無法彌補峭状。
1克滴、創(chuàng)建腳本備份數(shù)據(jù)庫
新建備份文件并賦予可以執(zhí)行的權(quán)限
mkdir -p /home/mysql_backup/
touch /home/mysql_backup/mysql_backup.sh
chmod 551 /home/mysql_backup/mysql_backup.sh
編輯/home/mysql_backup/mysql_backup.sh
vim /home/mysql_backup/mysql_backup.sh
# Name:mysql_backup.sh
# This is a ShellScript For Auto DB Backup and Delete old Backup
#備份地址
backupdir=/home/mysql_backup
#備份文件后綴時間
time=_` date +%Y_%m_%d_%H_%M_%S `
#需要備份的數(shù)據(jù)庫名稱
db_name=test
#mysql 用戶名
#db_user=
#mysql 密碼
#db_pass=
#mysqldump命令使用絕對路徑
mysqldump --all-databases -u $db_user -p$db_pass | gzip > $backupdir/$time.sql.gz
#刪除7天之前的備份文件
find $backupdir -name "*.sql.gz" -type f -mtime +7 -exec rm -rf {} \; > /dev/null 2>&1
2.定時執(zhí)行腳本
編輯crontab
vim /etc/crontab
在最后一行加入
* */1 * * * root /home/mysql_backup/mysql_backup.sh
重啟crontab
service crond restart
3.備份數(shù)據(jù)到遠程服務(wù)器
? ? ?遠程手動備份數(shù)據(jù)費時費力且不及時。最好的方法就是通過腳本實現(xiàn)遠程自動互備优床。但遠程無論是通過SSH登陸劝赔,還是通過scp拷貝文件都需要輸入密碼。為了克服這個問題胆敞,首先需要實現(xiàn)不需要密碼的SSH登陸着帽,這樣就可以使用 rsync,scp移层,rexec等命令來做的遠程備份了仍翰。
前提:本地服務(wù)器:A, 遠程服務(wù)器:B
3.1 生成密鑰對
假設(shè)A观话,B兩服務(wù)器予借,現(xiàn)在需要在A機上用root登陸B(tài)機,而不需要輸入密碼频蛔。那我們可按照下面的步驟來做:
3.1.1 在本地服務(wù)器A上生成rsa證書
在本地服務(wù)器A上生成rsa證書灵迫,運行命令:
ssh-keygen -t rsa
?cp生成rsa公鑰證書到遠程服務(wù)器B
使用scp命令進行遠程復(fù)制,將A機生成的id_rsa.pub.A拷貝到遠程服務(wù)器B的/root/.ssh目錄下
scp /root/.ssh/id_rsa.pub.A root@遠程服務(wù)器ip:/root/.ssh/
這里使用scp命令需要輸入密碼晦溪,當(dāng)我們把下面的第三步執(zhí)行完畢之后瀑粥,以后本地服務(wù)器A使用scp命令復(fù)制文件到遠程服務(wù)器B的話,就不需要再次輸入密碼三圆。
3.2狞换、密鑰配對
3.2.1?創(chuàng)建authorized_keys文件
當(dāng)上面將服務(wù)器A上的id_rsa.pub.A 文件copy到了服務(wù)器B后,現(xiàn)在我們在 B 的/root/.ssh下創(chuàng)建authorized_keys文件舟肉,使用如下命令
touch authorized_keys
3.2.2 將id_rsa.pub.A文件內(nèi)容追加到authorized_keys 文件中
通過 cat 命令 把id_rsa.pub.A 追寫到 authorized_keys 文件中修噪,命令依次如下:
cat id_rsa.pub.A >> authorized_keys
3.3 修改authorized_keys文件的權(quán)限
執(zhí)行如下命令,修改authorized_keys文件的權(quán)限
chmod 400 authorized_keys
authorized_keys文件的權(quán)限很重要度气,如果設(shè)置為777割按,那么登錄的時候膨报,還是需要提供密碼的磷籍。
3.4 測試
測試服務(wù)器A使用scp命令復(fù)制文件到服務(wù)器B是否還需要密碼
在服務(wù)A上,再次使用剛才的命令现柠,發(fā)現(xiàn)已經(jīng)可以不需要輸入密碼院领。
最后修改mysql_backup.sh的腳本,達到自動備份數(shù)據(jù)庫到遠程服務(wù)器够吩。
查看:最終腳本