rsync+sersync实现数据实时同步

 

一台装sersync、一台装rsync服务

sersync服务器(数据源,源机器):192.168.0.63

rsync客户端(备份端,目标机器):192.168.0.64

1. 为什么要用rsync+sersync架构?

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

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

2. rsync+inotify-tools与rsync+sersync架构的区别?

(1) rsync+inotify-tools

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

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

(2) rsync+sersync

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

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

3. 同步过程:

(1) 在同步服务器上开启sersync服务,sersync负责监控配置路径中的文件系统事件变化。

(2) 调用rsync命令把更新的文件同步到目标服务器。

(3) 需要在主服务器配置sersync,在同步目标服务器配置rsync server(注意:是rsync服务)。

4. 同步过程和原理:

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

(2) 此时需要在同步主服务器上配置sersync服务。

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

(4) 在另一台服务器开启rsync守护进程服务,使sersync push文件过来。

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

rsync+sersync实现数据实时同步

图2-3 同步过程示意图

2.3.1 下载sersync

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

wget https://sersync.googlecode.com/files/sersync2.5.4_64bit_binary_stable_final.tar.gz(有时下载失败,所有要本地留存一份)

2.上传到服务器 /opt目录下。

[root@xuegod63 ~]# cd /opt #切换工作目录到/opt目录下。

[root@xuegod63 opt]# tar xvf sersync2.5.4_64bit_binary_stable_final.tar.gz #解压。

[root@xuegod63 opt]# mv GNU-Linux-x86 sersync #解压后的文件重命名为sersync。

2.3.2 配置sersync

[root@xuegod63 opt]# cd sersync #切换工作目录至sersync目录下。

[root@xuegod63 sersync]# cp confxml.xml confxml.xml.bak #备份配置文件,便于二次修改

1. 更改优化sersync配置文件:

[root@xuegod63 sersync]# vim confxml.xml  #修改配置文件中的24–28行,如下所示。

<sersync>

<localpath watch="/var/www/html"> #本地同步数据目录。

<remote ip="192.168.0.64" name="wwwroot"/> #rsync模块名称

2. 修改31–34行,认证部分(rsync密码认证)。

<rsync>

<commonParams params="-artuz"/>

<auth start="true" users="rsyncuser" passwordfile="/etc/rsync.passwd"/>

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

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

<ssh start="false"/>

3. 开启sersync守护进程同步数据。

[root@xuegod63 sersync]# /opt/sersync/sersync2  -d -r -o  /opt/sersync/confxml.xml

rsync+sersync实现数据实时同步

图 2-4 开启sersync守护进程

4. 测试

(1) 在63 /var/www/html/ 目录 增加、删除、或改目录文件。

(2) 看64 /web-back 目录的变化

[root@xuegod64 web-back]# watch ls -l

5. 设置sersync监控开机自动执行

[root@xuegod63 sersync]# vi /etc/rc.d/rc.local  #编辑rc.local文件,在最后添加一行。

/opt/sersync/sersync2 -d -r -o  /opt/sersync/confxml.xml   #设置开机自动运行脚本。

6. 添加脚本监控sersync是否正常运行

[root@xuegod63 ~]# vi /opt/check_sersync.sh   #编辑脚本,添加以下代码。

#!/bin/sh

sersync="/opt /sersync/sersync2"

confxml="/opt /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

[root@xuegod63 ~]# chmod +x /opt /check_sersync.sh  #添加脚本执行权限。

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

 

有兴趣学习Linux云计算架构师的可以关注我!

我给大家推荐一些入门学习资料,都是些经典的学习资料!

CCNA 网络基础课程
http://edu.51cto.com/sd/3ee4c

Linux centos7 最新版的基础学习视频  请比对蘑菇丁的课程如果大纲一致就不要购买了!
http://edu.51cto.com/sd/d572a

python3  函数编程入门
http://edu.51cto.com/sd/dd128

WEB开发工程师   JavaScript全民你飞机大战游戏开发视频课程
http://edu.51cto.com/sd/c6223

如果你基础学习的比较好可以尝试了解一下Linux Docker虚拟化及Kubernetes容器集群管理
http://edu.51cto.com/sd/480b1

原创文章,作者:carmelaweatherly,如若转载,请注明出处:https://blog.ytso.com/196488.html

(0)
上一篇 2021年11月16日
下一篇 2021年11月16日

相关推荐

发表回复

登录后才能评论