Rsync 實現window伺服器資料同步備份到Linux伺服器
公司最近window伺服器各種磁碟告警,都是老機器了,一時半會也沒有新機器來擴容,於是我就想把MySQL的每日全量檔案備份到Linux新機器上(別問為啥是每日全量,歷史問題);
查詢了下方案,大致分為兩類:
1、FTP/SSH等方式直接同步;服務端主動推送
2、通過第三方客戶端同步,如本次使用的Rsync;客戶端主動獲取
由於我要實現的是備份,代表著我不僅僅要把資料同步到Linux上,還要把Windows上的資料給刪除掉,SSH等方式需要在windows配置定時任務等,考慮到如果有意外發生可能導致資料被主動誤刪,所以採用了客戶端主動獲取的方式,使用第三方同步;
關於Rsync,它實現了不僅僅資料同步功能(兩個不同主機之間資料的完全同步),還提供了差異化引數的同步設定,如A伺服器同步B,若A檔案>B,可實現差異化同步到B ;當A<B,若要實現A與B一致,可用delete引數,主動刪除掉B上的多餘資料;若要實現A同步B後,刪除A中磁碟的佔用(資料轉移),可用remove引數再同步完後自動刪除A上的資料;
第三方同步軟體比較多,公認比較好的是Rsync,本次分享Rsync如何實現,以及注意事項;
上圖就是實現原理,具體表現為:
1、Windows伺服器上安裝Rsync軟體,官網下載即可,和常規Windows軟體一樣傻瓜式安裝,指的注意的一點是:
在安裝最後,會要求建立一個賬戶和密碼,作為Rsync管理的賬戶,必須要設定的,不設定無法執行,所以建立一個賬戶就行了,對賬戶授予資料夾的許可權(按需授權)。這裡和後面的同步賬戶不一樣,是兩個不同的賬戶,後面會做對比;
2、Windows上安裝完後對Rsync配置檔案進行設定,使得之後Linux客戶端的資訊能夠有正確校驗;
3、Linux安裝客戶端,方法直接yum install就行了
4、Linux上安裝完後需要新建一個密碼文件,並且授予只能root使用者使用的許可權,(這部建立和授權是必須的,即使最後我們不經過賬戶校驗也要建立這一步)
5、Linux客戶端執行同步命令即可;
關於Windows服務端配置檔案,單獨拿出來說明:
#不驗證使用者密碼 pid = 0 uid = 0 gid = 0 use chroot = false strict modes = false #指定ip連結,*代表不限制 hosts allow = * #最大連結數 max connections = 5 #日誌檔案 pid file = rsyncd.pid log file = rsyncd.log #埠 port = 873 # Module definitions # Remember cygwin naming conventions : c:\work becomes /cygwin/c/work # #備份資訊說明,Linux客戶端通過這個名字來找服務端資料資訊,可以自定義, #但最後客戶端執行命令需要和#這個一致 #可以定義多個備份資訊,讓不同ip的機子同步不同的資料 [svndata] #服務端資料存放位置 path = /cygdrive/d/mysqlbackup #執行連結ip hosts allow = * #只讀許可權,若是開啟則只能同步無法刪除 read only = false transfer logging = yes list = no lock file = rsyncd.lock #資料同步校驗賬戶,和Linux客戶端進行資料同步的驗證使用,當然可以不適用,由於我是在內網,所以沒用 #auth users = jf_backup_sync #同步校驗賬戶的驗證密碼 #secrets file = /cygdrive/d/Setting/Rsync/rsync_db.ps
這裡需要說明的是:資料同步賬戶和Windows服務端安裝時新建的賬戶是不一樣的;
可以理解是:windows安裝的時候新建的賬戶是管理Rsync這個工具的,
而配置檔案中的賬戶,是校驗同步資料的;
所以:要想Rsync工具能夠在同步完後刪除掉服務端資料,需要給管理賬戶賦予windows所有許可權,若是隻同步資料,也要資料可讀寫許可權,所以我們需要對管理賬戶授予windows許可權,一般授予所有許可權
同步賬戶的使用者名稱密碼和Linux客戶端上的資訊應該一致,因為Linux客戶端不要求同步賬戶名,所以要保證的是Linux客戶端上的密碼要一致;
最後要實現每天自動同步備份,只需要Linux上寫個shell指令碼,再配置一個定時任務即可;具體安裝方式可參考:
https://www.cnblogs.com/kevingrace/p/5972563.html
在Linux上啟動可能會有很多報錯,最好谷歌下Rsync具體引數意義;
實現服務端同步完後刪除檔案的引數是:--remove-source-files:
如:
rsync -av --progress --remove-source-files --port=873 172.16.**.**::svndata/* /data/win-backup
報錯若是報錯GID,UID等等,請按照相關報錯進行設定=0,我在搭建的時候報錯GID錯誤,百度上全都說UID=0,PID=0,實際上是要加一個GID=0,解決這個問題百度很久沒找到,最後去谷歌查了官方文件找到GID報錯解決方法;