sersync實時同步
實時同步目的
1.解決單點故障
2.保證資料的一緻性
sersync做實時同步的依賴
1.rsync
2.inotify
Inotify 是一個通知接口,用來監控檔案系統的各種變化,如果檔案存取,删除,移動。可以非常友善地實作檔案
異動告警,增量備份,并針對目錄或檔案的變化及時作出響應。rsync+inotify可以實觸發式實時同步增量備份
sersync官網:TP
sersync實戰
環境準備
主機名 | WanIP | LanIP | 角色 | 部署服務 |
web01 | 10.0.0.7 | 172.16.1.7 | nfs用戶端 | httpd、php、nfs-utils |
web02 | 10.0.0.8 | 172.16.1.8 | nfs用戶端 | httpd、php、nfs-utils |
nfs | 10.0.0.31 | 172.16.1.31 | rsync用戶端、nfs服務端 | nfs-utils、rsync、inotify-tools、sersync |
backup | 10.0.0.41 | 172.16.1.41 | rsync服務端、nfs服務端(備機) | nfs-utils、rsync |
部署sersync
# 1.安裝sersync的依賴
[root@nfs ~]# yum install -y rsync inotify-tools
# 2.下載下傳sersync
## 國内下載下傳位址(盡量别用)
[root@nfs ~]# wget
http://test.driverzeng.com/other/sersync2.5.4_64bit_binary_stable_final.tar.gz
# 3.建立安裝目錄
[root@nfs ~]# mkdir /application
# 4.解壓sersync
[root@nfs ~]# tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz -C /application/
# 5.改名
[root@nfs ~]# mv /application/GNU-Linux-x86/ /application/sersync-2.5.4
# 6.修改配置檔案
[root@nfs ~]# vim /application/sersync-2.5.4/confxml.xml
inotifywait -mrq --format %w %f -e create,delete,attrib,close_write /data
</filter>
<inotify>
<delete start="true"/>
<createFolder start="true"/>
<createFile start="true"/>
<closeWrite start="true"/>
<moveFrom start="true"/>
<moveTo start="true"/>
<attrib start="true"/>
<modify start="true"/>
</inotify>
## 配置檔案中<sersync>段中的内容相當于以下指令
## rsync -az --delete /data [email protected]::nfs_data --password-file=/etc/rsync.pass
## (指定的選項)(推送資料目錄)(匿名使用者) (IP位址) (子產品名) (指定密碼檔案)
<sersync>
<localpath watch="/data">
<remote ip="176.16.1.41" name="nfs_data"/>
<!--<remote ip="192.168.8.39" name="tongbu"/>-->
<!--<remote ip="192.168.8.40" name="tongbu"/>-->
</localpath>
<rsync>
<commonParams params="-az --delete"/>
<auth start="true" users="www" passwordfile="/etc/rsync.pass"/>
<userDefinedPort start="false" port="874"/><!-- port=874 -->
<timeout start="false" time="100"/><!-- timeout=100 -->
<ssh start="false"/>
</rsync>
<failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once-->
<crontab start="false" schedule="600"><!--600mins-->
<crontabfilter start="false">
<exclude expression="*.php"></exclude>
<exclude expression="info/*"></exclude>
</crontabfilter>
</crontab>
# 7.建立密碼檔案
[root@nfs data]# echo '123' > /etc/rsync.pass
# 8.授權密碼檔案
[root@nfs data]# chmod 600 /etc/rsync.pass
# 9.啟動sersync
[root@nfs sersync-2.5.4]# ./sersync2 -rdo confxml.xml
# 10.測試是否同步
[root@nfs data]# touch wjh.txt
[root@nfs data]# ll
total 0
-rw-r--r-- 1 root root 0 May 22 22:00 wjh.txt
[root@backup nfs_backup]# ll
total 0
-rw-r--r-- 1 www www 0 May 22 22:00 wjh.txt