定時自動備份mysql數(shù)據(jù)庫,并發(fā)送到遠(yuǎn)程服務(wù)器,刪除過期本地備份

在實(shí)際項(xiàng)目中,遇到有客戶機(jī)房斷電導(dǎo)致數(shù)據(jù)庫數(shù)據(jù)丟失的問題,又因?yàn)閭浞萑轂?zāi)不及時,導(dǎo)致部分?jǐn)?shù)據(jù)恢復(fù)不了。使用Linux的自動定時任務(wù)命令crontab對數(shù)據(jù)庫進(jìn)行定時備份可以減少這種情況發(fā)生。但這樣還不夠安全,萬一本地磁盤壞了,造成的損失將無法彌補(bǔ)。


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ù)到遠(yuǎn)程服務(wù)器

? ? ?遠(yuǎn)程手動備份數(shù)據(jù)費(fèi)時費(fèi)力且不及時。最好的方法就是通過腳本實(shí)現(xiàn)遠(yuǎn)程自動互備。但遠(yuǎn)程無論是通過SSH登陸,還是通過scp拷貝文件都需要輸入密碼。為了克服這個問題,首先需要實(shí)現(xiàn)不需要密碼的SSH登陸,這樣就可以使用 rsync,scp,rexec等命令來做的遠(yuǎn)程備份了。

前提:本地服務(wù)器:A, 遠(yuǎn)程服務(wù)器:B

3.1 生成密鑰對

假設(shè)A,B兩服務(wù)器,現(xiàn)在需要在A機(jī)上用root登陸B(tài)機(jī),而不需要輸入密碼。那我們可按照下面的步驟來做:

3.1.1 在本地服務(wù)器A上生成rsa證書

在本地服務(wù)器A上生成rsa證書,運(yùn)行命令:

ssh-keygen -t rsa

?cp生成rsa公鑰證書到遠(yuǎn)程服務(wù)器B

使用scp命令進(jìn)行遠(yuǎn)程復(fù)制,將A機(jī)生成的id_rsa.pub.A拷貝到遠(yuǎn)程服務(wù)器B的/root/.ssh目錄下

scp /root/.ssh/id_rsa.pub.A root@遠(yuǎn)程服務(wù)器ip:/root/.ssh/

這里使用scp命令需要輸入密碼,當(dāng)我們把下面的第三步執(zhí)行完畢之后,以后本地服務(wù)器A使用scp命令復(fù)制文件到遠(yuǎn)程服務(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的腳本,達(dá)到自動備份數(shù)據(jù)庫到遠(yuǎn)程服務(wù)器。

查看:最終腳本

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

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

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