Rsync + Sersync 实时数据同步方案
方案架构
- 源服务器:部署 Sersync(监控文件变化) + Rsync(推送数据)
- 目标服务器:部署 Rsync Daemon(接收数据)
- 同步逻辑:源服务器文件变动 → Sersync 实时触发 → Rsync 增量同步至目标服务器
详细实施步骤
一、目标服务器配置(数据接收端)
- 安装 Rsync
bash
yum install rsync -y # CentOS
apt install rsync -y # Ubuntu
- 创建 Rsync 配置文件
bash
vim /etc/rsyncd.conf
ini
uid = root
gid = root
use chroot = no
max connections = 2000
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[data_backup] # 模块名称(客户端同步时指定)
path = /data/backup # 同步目录
comment = Backup Directory
read only = no # 允许写入
auth users = rsync_user # 认证用户
secrets file = /etc/rsync.password # 密码文件
- 创建认证文件
bash
echo "rsync_user:your_password" > /etc/rsync.password
chmod 600 /etc/rsync.password
- 创建同步目录
bash
mkdir -p /data/backup
chown -R rsync_user:rsync_user /data/backup
- 启动 Rsync 守护进程
bash
systemctl start rsyncd
systemctl enable rsyncd
- 开放防火墙端口
bash
firewall-cmd --add-port=873/tcp --permanent
firewall-cmd --reload
二、源服务器配置(数据发送端)
- 安装 Rsync
bash
yum install rsync -y # CentOS
apt install rsync -y # Ubuntu
- 创建 Rsync 密码文件
bash
echo "your_password" > /etc/rsync.password
chmod 600 /etc/rsync.password
- 测试手动同步
bash
rsync -avz /source/data/ rsync_user@目标服务器IP::data_backup --password-file=/etc/rsync.password
- 作用:验证配置正确性,确保网络和权限正常。
- 安装 Sersync
bash
wget https://github.com/wsgzao/sersync/raw/master/sersync2.5.4_64bit_binary_stable_final.tar.gz
tar -zxvf sersync2.5.4_64bit_binary_stable_final.tar.gz -C /opt/
mv /opt/GNU-Linux-x86/ /opt/sersync
- 修改 Sersync 配置文件
bash
vim /opt/sersync/confxml.xml
xml
<!-- 监控目录设置 -->
<localpath watch="/source/data"> <!-- 源服务器需同步的目录 -->
<remote ip="目标服务器IP" name="data_backup"/> <!-- 目标服务器模块名 -->
</localpath>
<!-- Rsync 参数 -->
<rsync>
<commonParams params="-artuz"/> # 归档模式(保留属性)
<auth start="true" users="rsync_user" passwordfile="/etc/rsync.password"/>
<timeout start="false" time="100"/> <!-- 超时设置 -->
</rsync>
- 启动 Sersync
bash
/opt/sersync/sersync2 -d -r -o /opt/sersync/confxml.xml
- 参数说明:
- -d:守护进程模式
- -r:启动时先全量同步
- -o:指定配置文件
- 设置开机自启
bash
echo "/opt/sersync/sersync2 -d -r -o /opt/sersync/confxml.xml" >> /etc/rc.local
chmod +x /etc/rc.local
三、验证实时同步
- 在源服务器创建测试文件
bash
touch /source/data/testfile.txt
- 检查目标服务器同步结果
bash
ls /data/backup # 应出现 testfile.txt
- 查看 Sersync 日志
bash
tail -f /opt/sersync/rsync_fail_log.sh # 同步失败日志
四、多维优化与监控
1. 性能优化
- 调整 inotify 限制(解决监控文件数不足问题):
bash
echo "fs.inotify.max_user_watches=1000000" >> /etc/sysctl.conf
sysctl -p
- Rsync 带宽限制(避免影响业务):
xml
<!-- 在 confxml.xml 中增加 -->
<commonParams params="--bwlimit=10240 -artuz"/> <!-- 限速 10MB/s -->
2. 高可用方案
- 双活监控:部署多个 Sersync 进程监控不同目录。
- 异常重启:添加 crontab 监控进程:
bash
*/5 * * * * pgrep sersync2 || /opt/sersync/sersync2 -d -o /opt/sersync/confxml.xml
3. 安全加固
- Rsync 最小权限:
- 目标服务器使用非 root 用户运行 Rsync。
- 配置文件设置 uid = rsync_user, gid = rsync_user。
- SSH 隧道加密:
xml
<!-- 修改 confxml.xml -->
<rsync>
<ssh start="true" port="22" user="rsync_user"/>
</rsync>
4. 故障排查工具
- 手动触发同步:
bash
/opt/sersync/sersync2 -r -o /opt/sersync/confxml.xml
- 查看 inotify 事件:
bash
tail -f /proc/sys/fs/inotify/* # 监控事件队列
方案优势
- 秒级延迟:Sersync 基于 inotify 内核事件触发,响应速度 <1s。
- 增量高效:Rsync 只同步变化部分,节省带宽。
- 低资源占用:Sersync 单进程设计,CPU/内存消耗极低。
- 断点续传:Rsync 支持传输中断后续传。
注意:大规模集群建议使用 Lsyncd 或 DRBD,单服务器场景本方案为最优解。
Rsync + Sersync 实时数据同步方案的更多相关文章
- rsync+inotify实时数据同步多目录实战
rsync+inotify实时数据同步多目录实战 inotify配置是建立在rsync服务基础上的配置过程 操作系统 主机名 网卡eth0 默认网关 用途 root@58server1 1 ...
- rsync+inotify实时数据同步单目录实战
rsync+inotify实时数据同步单目录实战 rsync+inotify实时数据同步单目录实战 inotify是一个强大的.细粒度的.异步的文件系统事件监控机制,linux内核从2.6.13起 ...
- Linux学习系列之Inotify+Rsync实现实时数据同步
Inotify简介 inotify介绍 inotify是一种强大的.异步的文件系统监控机制,linux内核从2.6.13起,加入了inotify的支持,通过inotify可以监控文件系统中添加.删除. ...
- Inotify+rsync实现实时数据同步
使用rsync可以实现数据同步,但是即使使用crontab定时任务最小执行间隔为1分钟,在数据实时性要求比较高场合需使用inotify+rsync实现实时同步 下载inotify wget https ...
- centos7部署inotify与rsync实现实时数据同步
实验环境:CentOS Linux release 7.6.1810 node1:192.168.216.130 客户端(向服务端发起数据同步) node2:192.168.216.132 服务端(接 ...
- Rsync+inotify 实时数据同步 inotify master 端的配置
强大的,细致的,异步的文件系统事件监控机制.Linux 内科从 2.6.13 起支持 inotify Inotify 实现的几款软件:Inotify,sersync,lsyncd ※Inotify 实 ...
- Linux系统实时数据同步inotify+rsync
一.inotify简介 inotify是Linux内核的一个功能,它能监控文件系统的变化,比如删除.读.写和卸载等操作.它监控到这些事件的发生后会默认往标准输出打印事件信息.要使用inotify,Li ...
- Linux下Rsync+sersync实现数据实时同步
inotify 的同步备份机制有着缺点,于是看了sersync同步,弥补了rsync的缺点.以下转自:http://www.osyunwei.com/archives/7447.html 前言: 一. ...
- Rsync+sersync实现数据实时同步
前言: 一.为什么要用Rsync+sersync架构? 1.sersync是基于Inotify开发的,类似于Inotify-tools的工具 2.sersync可以记录下被监听目录中发生变化的(包括增 ...
- CentOS7下Rsync+sersync实现数据实时同步
近期公司要上线新项目,后台框架选型我选择当前较为流行的laravel,运行环境使用lnmp. 之前我这边项目tp32+apache,开发工具使用phpstorm. 新建/编辑文件通过phpstorm配 ...
随机推荐
- 第2讲、从启动到表单加载:Odoo 18 的完整执行流程详解
了解 Odoo 在从启动到用户打开一个模型表单视图时,内部到底发生了什么,是模块开发.性能调优和故障排查的关键.本文将为你系统梳理 Odoo 18 的执行流程与关键方法调用链,适用于开发者与技术架构师 ...
- 使用批处理脚本在win10系统启动Redis 5.0.10
在<Spring Boot 整合Jedis连接Redis和简单使用>中,小编已经介绍了如何安装和启动Redis,但是,每次启动Redis 5.0.10 都是需要两个命令行窗口,执行启动 ...
- 代码随想录第11天 | 二叉树part01
理论基础 需要了解 二叉树的种类,存储方式,遍历方式 以及二叉树的定义 文章讲解:https://programmercarl.com/%E4%BA%8C%E5%8F%89%E6%A0%91%E7 ...
- pythonOCC 将二维坐标转化为三维坐标
OCC 当中提供了多种方式转换 直接转换为三维坐标 使用 V3d_View.ProjReferenceAxe()会返回有6个元素的元组,前三位分别对应 XYZ 例子 self._display.Vie ...
- CF contest 1935 Round 932 (Div. 2) A-D题解
Codeforces Round 932 (Div. 2) A-D题解 Codeforces Round 932 (Div. 2) 绪言 很菜,AB速度慢,卡在C,想DP,但是时间优化不下来,说服自己 ...
- 我做了个 AI 高考分数预测器,这次终于能上清华了!
马上高考了,可惜我今年有事情参加不了了,就帮帮广大考生朋友们,送大家一个我自己做的高考神器吧! 铛铛铛铛,就是这个 高考分数预测器! 体验地址:https://gaokao.codefather.cn ...
- MySQL 情节:SQL 语句的表演
本文由 ChatMoney团队出品 第一幕:解析与优化 - "翻译官与谋士" SQL 解析器是第一个上场的角色,任务就是把 SQL 请求翻译成 MySQL 能听懂的语言.就像你点餐 ...
- 一个基于 .NET 开源、模块化 AI 图像生成 Web 用户界面
前言 今天大姚给大家分享一个基于 .NET 开源.模块化 AI 图像生成 Web 用户界面:SwarmUI. 项目介绍 SwarmUI (原 StableSwarmUI)是一个基于 .NET 开源(M ...
- DTMO 直播预告|Taier 的 Web 前端架构解析
原文链接:DTMO 直播预告|Taier 的 Web 前端架构解析 一.直播介绍 上两期,我们为大家分享了 Taier 入门及控制台的介绍,本期我们为大家分享 Taier 的 Web 前端架构介绍. ...
- springboot~入门第一篇~
首先新建个 maven 项目菜单 -> File -> New -> Other -> Maven -> Maven -> Maven Project -> ...