使用sersync实现数据实时同步
- sersync诞生过程
- 部署前提
- 配置rsync
- 部署sersync
- 配置sersync的path变量
- 修改sersync配置文件
- sersync常用参数
- 使用服务文件实现开机自启动
- 实时同步服务debug
sersync诞生过程
sersync作者:前金山公司周洋(花椒直播)
数据实时同步 (inotify+rsync 脚本) —> 开发实时同步程序(inotify+rsync)
原理:https://www.bilibili.com/video/BV1TK411B7hU
代码仓库:https://code.google.com/archive/p/sersync/source/default/source
项目地址:https://github.com/wsgzao/sersync
项目下载地址:https://code.google.com/archive/p/sersync/downloads
参考:https://blog.csdn.net/m0_46095955/article/details/104032057
sersync
是使用c++
编写,而且对Linux系统文件系统产生的临时文件和重复的文件操作进行过滤(详细见附录,这个过滤脚本程序没有实现),所以在结合rsync同步的时候,节省了运行时耗和网络资源。因此更快。sersync
配置起来很简单,其中已经静态编译好2进制文件和xml配置文件,直接使用即可。sersync
使用多线程进行同步,尤其在同步较大文件时,能够保证多个服务器实时保持同步状态。sersync
有出错处理机制,通过失败队列对出错的文件重新同步,如果仍旧失败,则按设定时长对同步失败的文件重新同步。sersync
不仅可以实时同步
,另外还自带crontab功能
,只需在xml配置文件中开启,即可按需求隔一段时间整体同步一次。无需再额外配置crontab功能。sersync
有socket
与http插件
扩展,满足二次开发的需要。
部署前提
- 已安装inotify-tools
- rsync为
守护进程模式
或已配置ssh免密
# 安装inotify-tools
yum install -y inotify-tools
# 安装rsync
yum install -y rsync
配置rsync
https://blog.csdn.net/omaidb/article/details/121746997
部署sersync
一般情况下
部署在rsync
的client端
- 下载软件二进制包
https://github.com/wsgzao/sersync
sersync2.5.4是软件的最后版本。
# 下载sersync二进制包
wget -c https://raw.githubusercontent.com/wsgzao/sersync/master/sersync2.5.4_64bit_binary_stable_final.tar.gz
- 解压软件, 并保存到相应目录中
# 创建目录
mkdir -p /usr/local/sersync
# 解压文件
tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz
# 查看解压的目录结构
tree GNU-Linux-x86
# 将sersync2修改为sersync
mv GNU-Linux-x86/sersync2 GNU-Linux-x86/sersync
# 将目录下文件移动到/usr/local/sersync/
mv GNU-Linux-x86/* /usr/local/sersync/
配置sersync的path变量
# 指定sersync程序的路径
export PATH="$PATH:/usr/local/sersync"
使path变量生效source /etc/profile.d/sersync.sh
修改sersync配置文件
vim /usr/local/sersync/confxml.xml
带有详细注释
的配置文件
:
https://github.com/omaidb/qiaofei_notes/tree/main/config_bak/sersync
2个配置文件
rsyncd
守护进程模式配置:rsyncd_confxml.xml
ssh免密
模式配置:ssh_key_confxml.xml
sersync常用参数
# 查看 sersync 参数
sersync -h
参数 | 解释 |
---|---|
-d | 启用守护进程模式 |
-r | 在监控前,将监控目录与远程主机用rsync命令推送一遍 |
-n | 指定开启守护线程的数量,默认为10个 |
-o | 指定配置文件 ,默认使用confxml.xml 文件 |
-m refreshCDN | 启用刷新CDN模块-插件 |
-m socket | 启用socket模块-插件 |
-m http | 启用http模块-插件 |
不加 -m参数 | 则默认执行同步程序 |
# 后台启动sersync同步服务程序
## -d 启用守护进程模式
## -r 在监控前,将监控目录与远程主机用rsync命令推送一遍
## -o 指定配置文件
sersync -dro /usr/local/sersync/confxml.xml
使用服务文件实现开机自启动
vim /etc/systemd/system/sersync.service
# /etc/systemd/system/sersync.service
[Unit]
Description= sersync数据实时同步服务
# 当指定的配置文件存在时,服务才会启动
ConditionPathExists=/usr/local/sersync/confxml.xml
[Service]
# 启动命令,不要加-d
ExecStart=/usr/local/sersync/sersync -ro /usr/local/sersync/confxml.xml
# 服务停止时的命令
## 命令要以绝对路径执行
ExecStop=/usr/bin/killall sersync
[Install]
WantedBy=multi-user.target
保存后,重载服务
# 重载服务
systemctl daemon-reload
# 设置开机自启动
systemctl enable --now sersync.service
实时同步服务debug
修改配置文件
参数,进行调试
vim /usr/local/sersync/confxml.xml
<!-- 开启debug模式 -->
<debug start="true"/>
修改完debug模式
后重启服务
# 重启服务
systemctl restart sersync
# journalctl实时查看日志
journalctl -u sersync -f
使用前台运行
查看详细日志
# 停止服务
systemctl stop sersync
# 不加-d以前台模式打印日志输出
sersync -ro /usr/local/sersync/confxml.xml