使用sersync实现数据实时同步

sersync诞生过程

sersync作者:前金山公司周洋(花椒直播)
数据实时同步 (inotify+rsync 脚本) —> 开发实时同步程序(inotify+rsync)

原理:https://www.bilibili.com/video/BV1TK411B7hU

代码仓库:https://github.com/omaidb/sersync3
https://code.google.com/archive/p/sersync/source/default/source

项目地址:https://github.com/omaidb/sersync3
https://github.com/wsgzao/sersync

项目下载地址:https://code.google.com/archive/p/sersync/downloads

参考:
https://blog.csdn.net/m0_46095955/article/details/104032057
https://linux.cn/article-6032-1.html

  1. sersync是使用c++编写,而且对Linux系统文件系统产生的临时文件和重复的文件操作进行过滤(详细见附录,这个过滤脚本程序没有实现),所以在结合rsync同步的时候,节省了运行时耗和网络资源。因此更快。
  2. sersync配置起来很简单,其中已经静态编译好2进制文件和xml配置文件,直接使用即可。
  3. sersync使用多线程进行同步,尤其在同步较大文件时,能够保证多个服务器实时保持同步状态。
  4. sersync有出错处理机制,通过失败队列对出错的文件重新同步,如果仍旧失败,则按设定时长对同步失败的文件重新同步。
  5. sersync不仅可以实时同步,另外还自带crontab功能,只需在xml配置文件中开启,即可按需求隔一段时间整体同步一次。无需再额外配置crontab功能。
  6. sersyncsockethttp插件扩展,满足二次开发的需要。

部署前提

  • 已安装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

一般情况下部署在rsyncclient端

  1. 下载软件二进制包

https://github.com/omaidb/qiaofei_notes/tree/main/shell_code/sersync

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
  1. 解压软件, 并保存到相应目录中
# 创建目录
mkdir -p /usr/local/sersync

# 解压文件
tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz

# 查看解压的目录结构
tree GNU-Linux-x86

image.png

# 将sersync2修改为sersync
mv GNU-Linux-x86/sersync2 GNU-Linux-x86/sersync

# 将目录下文件移动到/usr/local/sersync/
mv GNU-Linux-x86/* /usr/local/sersync/

配置sersync的path变量

vim /etc/profile.d/sersync.sh

# 指定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常用参数

image.png

# 查看 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

猜你喜欢

转载自blog.csdn.net/omaidb/article/details/133091969