数据实时同步解决方案2-sersync+rsync

sersync
特点:自带socket与http协议扩展,可以满足公司的二次开发,多线程,失败处理机制,重传,增量,c++编写,能过滤掉系统产生的临时文件,自带crontab
当线程队列有事件产生的时候,线程组线程会唤醒rsync进行同步,若失败,则延时重传,再失败则写log
过滤事件:删除一个有5个文件的目录时,会产生6个事件,则会过滤掉删除5个文件的事件,只保留删除目录的事件


前提:先部署好rsync,确保手工能够同步,rsync设置见inotify+rsync那篇文章

然后上传sersync的二进制打包文件,并解压,改名为sersync
tar xvf sersync2.5.4_64bit_binary_stable_final.tar.gz -C /usr/local
cd /usr/local && mv GNU-Linux-x86/ sersync
cd sersync

修改配置文件的localpath部分
vim confxml.xml

<localpath watch="/var/www/html">
<!--这是定义本地要同步的目录,若在一个配置文件中定义多个localpath,只有第一个才会生效,若是先监控多个目录,需要配置多实列-->
            <remote ip="127.0.0.1" name="myftp"/>
<!--定义远程主机,和模块名(在rsyncd.conf里定义那个一样),整体意思是将本地的/var/www/html同步到远程的myftp模块下-->
</localpath>

修改配置文件的rsync认证部分

<rsync>
            <commonParams params="-artuz"/>
            <auth start="true" users="rsync_backup" passwordfile="/etc/rsync.password"/>
            <userDefinedPort start="false" port="874"/><!-- port=874 -->
            <timeout start="true" time="100"/><!-- timeout=100 -->
            <ssh start="false"/>
</rsync>

启动sersync守护进程,与多实列启动(注意多实列配置文件只需要localpath不同就好了)
/usr/local/sersync/sersync2 -r -d -o /usr/local/sersync/confxml.xml
/usr/local/sersync/sersync2 -r -d -o /usr/local/sersync/confxml1.xml

写入开机自启动时,不需要加-r参数

最后附上一个文件系统压力测试语句
for n in `seq 100000` ; do echo ddd > $n.txt;done

注意:根据我的测试,inotify+rsync与sersync+rsync这两种方案,我觉得前者更稳定,cpu的占用更少,同步更快

声明:本文为原创,作者为 辣条①号,转载时请保留本声明及附带文章链接:https://boke.wsfnk.com/archives/66.html

最后编辑于:2017/2/19作者: 辣条①号

暂无评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注