Rsync+sersync实现数据实时同步

Rsync+sersync实现数据实时同步

        sersync可以记录下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或者某一个目录的名字,然后使用rsync同步的时候,只同步发生变化的文件或者目录

一、为什么要用rsync+sersync架构?

1、sersync是基于inotify开发的,类似于inotify-tools的工具

2、sersync可以记录下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或者某一个目录的名字,然后使用rsync同步的时候,只同步发生变化的文件或者目录

二、rsync+inotify-tools与rsync+sersync架构的区别?

1、rsync+inotify-tools

 a、inotify只能记录下被监听的目录发生了变化(增,删,改)并没有把具体是哪个文件或者哪个目录发生了变化记录下来;

 b、rsync在同步的时候,并不知道具体是哪个文件或目录发生了变化,每次都是对整个目录进行同步,当数据量很大时,整个目录同步非常耗时(rsync要对整个目录遍历查找对比文件),因此效率很低

2、rsync+sersync

 a、sersync可以记录被监听目录中发生变化的(增,删,改)具体某个文件或目录的名字

 b、rsync在同步时,只同步发生变化的文件或目录(每次发生变化的数据相对整个同步目录数据来说很小,rsync在遍历查找对比文件时,速度很快),因此效率很高。

三、同步过程和原理:

1.  用户实时的往sersync服务器上写入更新文件数据;

2.  此时需要在同步主服务器上配置sersync服务;

3.  在另一台服务器开启rsync守护进程服务,以同步拉取来自sersync服务器上的数据;

通过rsync的守护进程服务后可以发现,实际上sersync就是监控本地的数据写入或更新事件;然后,在调用rsync客户端的命令,将写入或更新事件对应的文件通过rsync推送到目标服务器

Sersync配置步骤详解

环境说明:一台服务器装sersync   一台装rsync服务

Sersync服务器(数据源,源机器):192.168.3.63

Rsync服务器(备份端,目标机器):192.168.3.64

有关rsync配置请查看:https://l-t.top/524.html,该文章与本文章承上启下步骤是连续的。

约定配置路径如下:

sersync程序运行和对应的配置文件目录放在/usr/local/sersync

rsync程序对应的配置文件目录放在/etc/rsyncd.conf 

1、下载sersync

在google code下载sersync的可执行文件版本,里面有配置文件与可执行文件

google code下载页面地址:https://code.google.com/archive/p/sersync/downloads

wget 

https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/sersync/sersync2.5.4_64bit_binary_stable_final.tar.gz 

(翻墙有时下载失败,所有要本地留存才行)

备份下载链接:sersync2.5.4_64bit_binary_stable_final.tar.gz

上传压缩包到服务器 /opt  目录下

tar zxvf sersync2.5.4_64bit_binary_stable_final.tar.gz

mv GNU-Linux-x86 /usr/local/sersync

2、配置sersync

先复制备份一下配置文件

[root@xuegod63 sersync]# cp confxml.xml confxml.xml.bak

更改优化sersync配置文件:

 修改24--28行:

<sersync>

        <localpath watch="/var/www/html">    <!-- 定义要同步的文件目录-->

            <remote ip="192.168.0.64" name="wwwroot"/>    <!-- 定义备份端服务器的Ip和备份端服务器上rsync自定义的模块名-->

修改31--34行,认证部分【rsync密码认证】

<rsync>

            <commonParams params="-artuz"/>   <!-- rsync 执行时使用的参数-->

            <auth start="true" users="rsyncuser" passwordfile="/etc/rsync.passwd"/>  <!-- rsync 执行时使用的用户名和密码文件-->

            <userDefinedPort start="false" port="874"/><!-- port=874 -->

            <timeout start="false" time="100"/><!-- timeout=100 -->

            <ssh start="false"/>

修改完如下所示:(红色标出部分为需要修改的部分)

image.png

开启sersync守护进程同步数据

/root/sersync/sersync2  -d -r -o  /opt/sersync/confxml.xml

正常开启sersync守护进程结果如下图:

image.png

测试增删改文件,确定服务运行是否正常

在63的/var/www/html/ 目录 增删改目录文件,看64 /web-back 目录的变化

[root@centos7-64 web-back]# watch ls -l

3、设置sersync监控开机自动执行

vim /etc/rc.d/rc.local  #编辑,在最后添加一行

echo '/usr/local/sersync/sersync2 -d -r -o  /usr/local/sersync/confxml.xml' >> /etc/rc.d/rc.local        #设置开机自动运行脚本


4、添加脚本监控sersync服务

添加脚本监控sersync服务运行是否正常,未运行则自动运行sersync服务

vim  /usr/local/sersync/check_sersync.sh  #编辑,添加以下代码

#!/bin/sh
sersync="/usr/local/sersync/sersync2"
confxml="/usr/local/sersync/confxml.xml"
status=$( ps aux | grep 'sersync2' | grep -v 'grep' | wc -l )
if [ $status -eq 0 ];then
        $sersync -d -r -o $confxml &
else
        exit 0
fi


#添加脚本执行权限

chmod +x /usr/local/sersync/check_sersync.sh

把这个脚本加到任务计划,定期执行检测

比如每5分钟检测一次是否正常

5 * * * * sh /usr/local/sersync/check_sersync.sh


补充: 多实例情况

1、配置多个confxml.xml文件(比如:www、bbs、blog....等等)

2、根据不同的需求同步对应的实例文件

/usr/local/sersync/sersync2  -r -d -o /usr/local/sersync/www_confxml.xml

/usr/local/sersync/sersync2  -r -d -o /usr/local/sersync/bbs_confxml.xml

/usr/local/sersync/sersync2  -r -d -o /usr/local/sersync/blog_confxml.xml


最后,方便配置单独梳理了了个sersync+rsync快速配置TXT文档

Sersync+Rsync快速配置.txt


版权声明:
作者:WaterBear
链接:https://l-t.top/529.html
来源:雷霆运维
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>