使用sersync实现实时数据同步

男儿欲遂平生志,六经勤向窗前读。这篇文章主要讲述使用sersync实现实时数据同步相关的知识,希望能为你提供帮助。
一、概述sersync类似于inotify,同样用于监控,但它克服了inotify的缺点.sersync不仅可以实现实时同步,另外还自带crontab功能,只需在xml配置文件中开启,即也可以按要求隔一段时间整体同步一次,而无需再额外配置crontab功能。
二、实现sersync下载地址: https://code.google.com/archive/p/sersync/downloads
文件服务器端配置:将sersync文件上传至文件服务器上解压,并移动到/usr/local下

tar -xf sersync2.5.4_64bit_binary_stable_final.tar.gz mv GNU-Linux-x86 /usr/local/sersync

配置环境变量
echo \'PATH=/usr/local/sersync:$PATH\' > /etc/profile.d/sersync.sh source /etc/profile.d/sersync.sh

后面的操作都要依赖于rsync,需要确保文件服务器上已经安装rsync工具
配置连接密码文件
echo 123456 > /etc/rsync.pas chmod 600/etc/rsync.pas

sersync样例配置文件
[root@localhost www]# cat /usr/local/sersync/confxml.xml < ?xml version="1.0" encoding="ISO-8859-1"?> < head version="2.5"> < host hostip="localhost" port="8008"> < /host> < debug start="false"/> < fileSystem xfs="false"/> < filter start="false"> < exclude expression="(.*)\\.svn"> < /exclude> < exclude expression="(.*)\\.gz"> < /exclude> < exclude expression="^info/*"> < /exclude> < exclude expression="^static/*"> < /exclude> < /filter> < inotify> < delete start="true"/> < createFolder start="true"/> < createFile start="false"/> < closeWrite start="true"/> < moveFrom start="true"/> < moveTo start="true"/> < attrib start="true"/> < !-- 属性同步开关 --> < modify start="false"/> < /inotify> < sersync> < localpath watch="/www"> < !-- 监控目录 --> < remote ip="192.168.22.98" name="backup"/> < !-- rsync服务器的ip和目录 --> < !--< remote ip="192.168.8.39" name="tongbu"/> --> < !--< remote ip="192.168.8.40" name="tongbu"/> --> < /localpath> < rsync> < commonParams params="-artuz"/> < auth start="true" users="rsyncuser" passwordfile="/etc/rsync.pas"/> < !-- 上面认证用户开关和密码文件配置信息 --> < 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> < plugin start="false" name="command"/> < /sersync> < plugin name="command"> < param prefix="/bin/sh" suffix="" ignoreError="true"/> < !--prefix /opt/tongbu/mmm.sh suffix--> < filter start="false"> < include expression="(.*)\\.php"/> < include expression="(.*)\\.sh"/> < /filter> < /plugin> < plugin name="socket"> < localpath watch="/opt/tongbu"> < deshost ip="192.168.138.20" port="8009"/> < /localpath> < /plugin> < plugin name="refreshCDN"> < localpath watch="/data0/htdocs/cms.xoyo.com/site/"> < cdninfo domainname="ccms.chinacache.com" port="80" username="xxxx" passwd="xxxx"/> < sendurl base="http://pic.xoyo.com/cms"/> < regexurl regex="false" match="cms.xoyo.com/site([/a-zA-Z0-9]*).xoyo.com/images"/> < /localpath> < /plugin> < /head>

备份服务器端配置:安装rsync-daemon工具来生成service文件
使用sersync实现实时数据同步

文章图片

配置文件
[root@localhost ~]# cat /etc/rsyncd.conf # /etc/rsyncd: configuration file for rsync daemon mode# See rsyncd.conf man page for more options.# configuration example: uid = root gid = root # use chroot = yes max connections = 0 pid file = /var/run/rsyncd.pid exclude = lost+found/ transfer logging = yes timeout = 900 reverse lookup = no [backup] path = /data/backup comment = backup dir read only = no auth users = rsyncuser secrets file = /etc/rsync.pas

创建服务端密码文件
echo \'rsyncuser:123456\' > /etc/rsync.pas chmod 600 /etc/rsync.pas

文件服务器确认与备份服务器连接正常
使用sersync实现实时数据同步

文章图片

测试同步数据
[root@localhost sersync]# rsync -avz --delete --password-file=/etc/rsync.pas /www/ rsyncuser@192.168.22.98::backup

使用sersync后台同步
sersync2 -dro /usr/local/sersync/confxml.xml

PS:sersync可以支持多实例运行,只需要分配指定配置文件
开机启动可以定义在/etc/rc.local文件中,别忘记改执行权限。
验证sersync的执行效果
使用sersync实现实时数据同步

文章图片

三、总结【使用sersync实现实时数据同步】通过以上可以基本实现文件服务器的实时同步。

    推荐阅读