我們在選擇VPS、服務器架設項目之後,所有的項目、網站數據都需要我們自行備份和維護,即便有些服務商有提供管理型服務器,但是數據自行備份和管理纔是較爲靠譜的。無論是網站,還是其他項目,數據的備份方式有很多種,有服務商提供的快照備份,也可以我們手工和自動利用腳本備份到本地服務器或者遠程服務器。
但是,較多的做法都只能做到定期和定時的備份,如果我們網站項目數據吞吐量比較大,那定時備份並不能完美的解決數據的容災問題,萬一數據丟失或者不完整,我們可能只能恢復到上一個備份點,也會產生數據丟失。如果我們項目比較大且數據重要,定時備份的方式肯定不行的。
我們可以在定時備份的同時,採用增量同步備份,比如主服務器數據增加一剎那,也會在備份服務器中同步過去,如果我們數據更爲重要的,還可以採用多臺備份服務器同步。在這篇文章中,老部落(微信公衆號:imweber)重新整理一份較爲完整且確實可行的Rsync同步增量備份方式。
第一、準備工作
1、數據備份
如果我們沒有把握一次性搞定,我們可以準備兩臺測試環境服務器實現Rsync同步備份功能之後再用到生產環境。如果用到生產環境,我們可以將服務器快照備份,或者將網站、項目數據備份。
2、服務器準備
這裏我們採用的是Rsync同步增量備份,所以我們需要準備主服務器、以及一臺備份服務器。鑑於數據備份後的功能,我們可以直接備份到備份服務器某一個目錄,或者將備份服務器安裝主服務器環境,將需要備份的網站項目備份到對應的同目錄中。
3、端口開放
如果我們服務器沒有設定iptables防火牆規則,那就不要設置端口。如果我們有設置iptables防火牆,那就需要將873端口添加放行。
vi /etc/sysconfig/iptables
打開iptables規則文檔,添加:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 873 -j ACCEPT
編輯保存之後,然後/etc/init.d/iptables restart重啓才能生效。同樣的方法,我們需要在主服務器和備份服務器同時設置。
第二、配置備份服務器
1、安裝rsync
yum install rsync xinetd -y
2、配置文件
vi /etc/xinetd.d/rsync
將配置文件disable參數從"yes"換成"no"。
3、創建配置文件
vi /etc/rsyncd.conf
創建文件,然後將下面腳本添加:
log file = /var/log/rsyncd.logpidfile = /var/run/rsyncd.pidlock file = /var/run/rsync.locksecrets file = /etc/rsync.passmotd file = /etc/rsyncd.Motd#創建一個模塊名稱,後面需要一致[www.laobuluo.com]#備份服務器目錄地址path = /home/wwwroot/www.laobuluo.com#對應上面模塊名稱comment = www.laobuluo.comuid = rootgid = rootport = 873use chroot = noread only = nolist = nomax connections = 200timeout = 600#創建一個同步用戶名,隨便取,反正後面出現的時候要一致auth users = www.laobuluo.com_user#主服務器IP地址hosts allow = xxx.xxx.xxx.xxx
根據我們網站項目以及服務器實際信息創建文件貼到配置文件中保存退出。
4、創建密碼配對文件
vi /etc/rsync.pass
創建密碼配對文件:
www.laobuluo.com_user:1234567890passwd
紅色字段需要對應上面的auth users,藍色部分是我們創建配對的密碼。後面主服務器配置的時候也需要用到密碼,所以必須一致。
5、開放權限和啓動
chmod 600 /etc/rsyncd.confchmod 600 /etc/rsync.passservice xinetd restart
第三、配置主服務器
1、安裝rsync
yum install rsync xinetd -y
2、配置文件
vi /etc/xinetd.d/rsync
將配置文件disable參數從"yes"換成"no"。
3、創建密碼配對文件
vi /etc/passwd.txt
將我們上面在備份服務器中藍色的密碼丟進來,必須一致。
4、授權和啓動
chmod 600 /etc/passwd.txtservice xinetd restart
第四、配置主服務器
這一步我們繼續配置主服務器,需要安裝和配置inotify-tools來實現同步增量備份。
1、安裝環境包
yum install make gcc gcc-c++ -y
2、下載和安裝inotify-tools
cd /usr/local/srcwget https://download.laobuluo.com/tools/inotify-tools-3.14.tar.gztar -zxvf inotify-tools-3.14.tar.gzcd inotify-tools-3.14./configure --prefix=/usr/local/inotifymakemake install
3、配置環境變量
echo "PATH=/usr/local/inotify/bin:$PATH" >>/etc/profile.d/inotify.shsource /etc/profile.d/inotify.shecho "/usr/local/inotify/lib" >/etc/ld.so.conf.d/inotify.confln -s /usr/local/inotify/include /usr/include/inotify
4、配置參數
vi /etc/sysctl.conf
添加到腳本最後:
fs.inotify.max_queued_events=99999999fs.inotify.max_user_watches=99999999fs.inotify.max_user_instances=65535
5、創建觸發腳本
vi /usr/local/inotify/rsync.sh
創建腳本:
#!/bin/sh#同步主服務器網站目錄srcdir=/home/wwwroot/www.laobuluo.com#目錄名稱dstdir=www.laobuluo.comexcludedir=/usr/local/inotify/exclude.list#對應同步名稱要一致rsyncuser=www.laobuluo.com_userrsyncpassdir=/etc/passwd.txt#備份服務器IP地址dstip="xxx.xxx.xxx.xxx"for ip in $dstipdorsync -avH --port=873 --progress --delete --exclude-from=$excludedir $srcdir $rsyncuser@$ip::$dstdir --password-file=$rsyncpassdirdone/usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,modify,delete,create,attrib,move $srcdir | while read filedofor ip in $dstipdorsync -avH --port=873 --progress --delete --exclude-from=$excludedir $srcdir $rsyncuser@$ip::$dstdir --password-file=$rsyncpassdirecho " ${file} was rsynced" >> /tmp/rsync.log 2>&1donedone
修改自行的文件和目錄,然後保存退出。
6、創建排除目錄列表
vi /usr/local/inotify/exclude.list
創建一個排除目錄,這裏可以添加不同步的目錄,一行一個目錄。如果暫時沒有可以留空,以後需要用到在添加。
7、授權和設置開機啓動
chmod +x /usr/local/inotify/rsync.sh
這裏我們授權。
vi /etc/rc.d/rc.local
最後一行添加:
sh /usr/local/inotify/rsync.sh &
第五、檢測以及生效小結
1、檢查生效
設置完畢之後,我們可以通過手工檢查
sh /usr/local/inotify/rsync.sh &
在主服務器執行腳本,如果看到有目錄在進度,說明完美,然後去備份服務器中可以看到已經備份到的文件目錄。
2、自動生效
重啓主服務器,然後就會自動生效。如果不放心我們可以在主服務器對應目錄丟一個文件看看備份服務器是否有增加。
這樣,我們就通過rsync實現主服務器與備份服務器之間的同步增量備份,來解決大數據吞吐的解決容災問題。如果我們數據不大,可以採用定時和手工備份,畢竟這樣一套設置下來確實比較費時間。
本文原創來自:https://www.laobuluo.com/1070.html