使用sersync实现实时数据同步
Posted Happy_Future
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用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文件
配置文件
[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
文件服务器确认与备份服务器连接正常
测试同步数据
[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基于rsync+inotify实现数据实时同步