数据实时同步解决方案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"></remote>
<!--定义远程主机,和模块名(在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/344.html
谢谢你请我吃辣条谢谢你请我吃辣条

如果文章对你有帮助,欢迎点击上方按钮打赏作者

最后编辑于:2022/12/17作者: 辣条①号

现在在做什么? 接下来打算做什么? 你的目标什么? 期限还有多少? 进度如何? 不负遇见,不谈亏欠!

暂无评论

发表回复

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

arrow grin ! ? cool roll eek evil razz mrgreen smile oops lol mad twisted wink idea cry shock neutral sad ???

文章目录