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"/>
修改完如下所示:(红色标出部分为需要修改的部分)
开启sersync守护进程同步数据
/root/sersync/sersync2 -d -r -o /opt/sersync/confxml.xml
正常开启sersync守护进程结果如下图:
测试增删改文件,确定服务运行是否正常
在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文档
共有 0 条评论