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 所示。
图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行,如下所示。
2. 修改31--34行,认证部分(rsync密码认证)。
3. 开启sersync守护进程同步数据。
[root@xuegod63 sersync]# /opt/sersync/sersync2 -d -r -o /opt/sersync/confxml.xml
图 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