写点什么

Linux 云计算之使用 rsync+sersync 实现数据实时同步

作者:学神来啦
  • 2021 年 12 月 29 日
  • 本文字数:1668 字

    阅读完需:约 5 分钟

准备工作

一台装 sersync、一台装 rsync 服务 sersync 服务器(数据源,源机器):192.168.1.63rsync 客户端(备份端,目标机器):192.168.1.64

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

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

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

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

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

同步过程和原理:1.用户实时的往 sersync 服务器上写入更新文件数据。2.此时需要在同步主服务器上配置 sersync 服务。3.在另一台服务器开启 rsync 守护进程服务,以同步拉取来自 sersync 服务器上的数据。4.在另一台服务器开启 rsync 守护进程服务,使 sersync push 文件过来。

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


下载 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。
复制代码

配置 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.1.64" name="wwwroot"/> #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"/>#修改 31--34 行,认证部分(rsync 密码认证)。
复制代码
2.开启 sersync 守护进程同步数据。
[root@xuegod63 sersync]# /opt/sersync/sersync2 -d -r -o /opt/sersync/confxml.xml
复制代码


图:开启 sersync 守护进程

测试

在 63 /var/www/html/ 目录 增加、删除、或改目录文件。看 64 /web-back 目录的变化

[root@xuegod64 web-back]# watch ls -l
复制代码

设置 sersync 监控开机自动执行

[root@xuegod63 sersync]# vi /etc/rc.d/rc.local #编辑 rc.local 文件,在最后添加一行。/opt/sersync/sersync2 -d -r -o /opt/sersync/confxml.xml #设置开机自动运行脚本。[root@xuegod63 sersync]# chmod 755 /etc/rc.d/rc.local #添加执行权限。添加脚本监控 sersync 是否正常运行[root@xuegod63 ~]# vi /opt/check_sersync.sh #编辑脚本,添加以下代码。#!/bin/shsersync="/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 &elseexit 0;fi[root@xuegod63 ~]# chmod +x /opt /check_sersync.sh#添加脚本执行权限,把这个脚本加到任务计划,定期执行检测。
复制代码

到此 rsync+sersync 实现数据实时同步已完成

想要获取源码笔记或视频教程的联系小编哦!


用户头像

学神来啦

关注

还未添加个人签名 2021.06.02 加入

10年Linux使用及管理经验,7年IT在线教育培训经验。精通Linux、Python、思科、C++、安全渗透等技术。曾任职国内知名互联网公司高级运维架构师、运维总监。对基于Linux下开源程序Openstack、Docker、K8S、DevOps、

评论

发布
暂无评论
Linux云计算之使用rsync+sersync 实现数据实时同步