將備份數據傳輸到遠程服務器



一:背景介紹

二:建立單向無密碼登錄

三:腳本內容

四:將腳本放到Linux定時任務中




1.1在通過xtrabackup對MySQL數據庫進行備份的時候,不僅需要本地備份,更需要遠程備份,如果硬盤損壞的話,不至於數據全部損壞,而導致無法恢復數據。但是如果使用xtrabackup在對MySQL數據庫備份的時候通過流的方式備份並壓縮,這樣就無法進行正常的增量備份,所以在xtrabackup在備份完畢之後,將備份文件打包壓縮,再然後將此壓縮包傳輸到其它服務器中,這樣既不影響數據庫服務器的正常備份,還能把備份數據傳輸到另一臺服務器上,增加了數據的可靠性。




2.1在遠程服務器上生成公鑰和私鑰 

[root@linuxsvr ~]# ssh-keygen -t rsa

wKiom1VoN5mCeNa6AAHuojpYCN4426.jpg



2.2把公鑰傳到目標服務器(傳輸數據的目標服務器)

[root@linuxsvr .ssh]# scp id_rsa.pub root@IP:/root/.ssh/authorized_keys

wKioL1VoOe_CFsNHAABfE6v_Yt8465.jpg



2.3通過ssh的方式登錄目標服務器,看是否還需要密碼

ssh root@IP


2.4如果不用密碼無法登錄到目標服務器有以下幾種情況

2.4.1目錄.ssh的權限 chmod 700 /path/.ssh

2.4.2authroized_kyes的權限  chmod [600|644] /path/authorized_keys

2.4.3如果修改了以上兩個地方還不能達到想要的結果,那麼原因很可能是SELINUX導致的

2.4.3.1臨時關閉,重啓後失效

    setenforce 0

2.4.3.2永久關閉

    vi /etc/selinux/config  

    SELINUX=disabled  



3.1腳本內容

#!/bin/bash 


#本地備份目錄
backupDir=/backup

#遠程目標位置
remoteDir=/root/remote/

#進入到本地備份目錄
cd $backupDir

#文件名和後綴,文件名爲當前時間
fileName=`date +%F-%H-%M-%S`.tar.gz

#將/backup目錄下的所有內容壓縮爲fileName
tar zcvf $fileName ./*

#將壓縮文件傳輸到遠程服務器
scp $backupDir/$fileName [email protected]:$remoteDir

#刪除本地壓縮文件
rm -rf $backupDir/$fileName




4.1創建mysqlcron文件

#每天凌晨3:30執行

30 3 * * */root/scripts/compressed_file.sh

 

crontab mysqlcron 加入定時任務

crontab -l查看







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