项目实战:rsync+sersync实现数据实时同步
一、组网介绍
本次实验使用两台主机:
qll251 角色:Rsync server + Sersync server
qll252 角色: Rsync client
本次实验采用CentOS7.7系统;同时禁用防火墙,关闭selinux
[root@qll251 ~]# cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
[root@qll251 ~]# systemctl stop firewalld && systemctl disable firewalld
[root@qll251 ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
[root@qll251 ~]# reboot #重启使selinux配置生效
[root@qll251 ~]# getenforce
Disabled
###以上便是本次实验环境的准备工作
二、开始部署
- 在备份源机器上部署sersync+rsync服务
1) 下载sersync的可执行文件
[root@qll251 ~]# wget https://sersync.googlecode.com/files/sersync2.5.4_64bit_binary_stable_final.tar.gz

2)解压sersync可执行文件
[root@qll251 ~]# tar -zxvf sersync2.5.4_64bit_binary_stable_final.tar.gz
GNU-Linux-x86/
GNU-Linux-x86/sersync2
GNU-Linux-x86/confxml.xml
[root@qll251 ~]# ls
GNU-Linux-x86 sersync2.5.4_64bit_binary_stable_final.tar.gz
[root@qll251 ~]# mv GNU-Linux-x86/ sersync2.5.4 #文件夹重命名
[root@qll251 ~]# ls
sersync2.5.4 sersync2.5.4_64bit_binary_stable_final.tar.gz
[root@qll251 ~]#
3)修改/root/sersync2.5.4/confxml.xml配置文件
[root@qll251 ~]# cd /root/sersync2.5.4/
[root@qll251 sersync2.5.4]# ls
confxml.xml sersync2
[root@qll251 sersync2.5.4]# cp confxml.xml confxml.xml.bak #大家养成一个好习惯,修改配置文件,第一件事情是:对它进行备份!
[root@qll251 sersync2.5.4]# vim confxml.xml
#####################下面是配置文件
23 <sersync>
24 <localpath watch="/data"> #本地备份源路径
25 <remote ip="192.168.1.252" name="web"/> #对端IP地址;web为对端模块名称
26 <!--<remote ip="192.168.8.39" name="tongbu"/>-->
27 <!--<remote ip="192.168.8.40" name="tongbu"/>-->
28 </localpath>
29 <rsync>
30 <commonParams params="-artuz"/>
31 <auth start="true" users="rsync_user" passwordfile="/etc/rsync.mypass"/> #开启认证模式,对端认证用户,及指定本地密码文本
###################
下图黄色箭头所指的代表本次实验需要修改的配置

4)创建本地备份源目录及rsync密码文本/etc/rsync.mypass,并设置相应权限
[root@qll251 ~]# mkdir /data
[root@qll251 ~]# echo 123123 > /etc/rsync.mypass
[root@qll251 ~]# chmod 600 /etc/rsync.mypass
[root@qll251 ~]#
5)安装并启动rsync服务
[root@qll251 ~]# yum -y install rsync xinetd
[root@qll251 ~]# systemctl start rsyncd && systemctl enable rsyncd
[root@qll251 ~]# systemctl start xinetd && systemctl enable xinetd
[root@qll251 ~]# rsync --daemon
- 在qll252主机上部署rsync服务
1)客户端安装rsync服务
[root@qll252 ~]# yum -y install rsync
2)修改/etc/rsyncd.conf配置文件
## vim /etc/rsyncd.conf //若文件不存在,需要自己创建
uid = root #运行进程的身份
gid = root #运行进程的组
address =192.168.1.252 #监听IP
port =873 #监听端口
hosts allow =192.168.1.0/24 #允许客户端的IP地址,可以是网段,或者用*表示所有
use chroot = yes #若rsync被黑客入侵,则锁定家目录,黑客无法再rsync运行的家目录之外创建文件
max connections =5 #最大连接数
pid file =/var/run/rsyncd.pid #进程PID,自动生成
lock file =/var/run/rsync.lock #指max connectios参数的锁文件
log file =/var/log/rsyncd.log #日志文件位置
motd file =/etc/rsyncd.motd #客户端登陆之后弹出的消息,需要创建
[web] #共享模块名称,sersync端需要跟它保持一致
path =/mybak #接收备份源端文件的路径
comment = used for mysql-data #描述
read only = false #设置服务端文件读写权限
list = yes #是否允许查看模块信息
auth users = rsync_user #指定备份用户,sersync端需要跟它保持一致
secrets file =/etc/rsync.passwd #本地存放用户的密码文件,格式是 用户名:密码
3)创建待接收备份文件的目录;创建密码文件/etc/rsync.passwd,并指定权限600
[root@qll252 ~]# mkdir /mybak
[root@qll252 ~]# echo "rsync_user:123123" > /etc/rsync.passwd #格式是 用户名:密码
[root@qll252 ~]# chmod 600 /etc/rsync.passwd
4)以守护进程方式运行rsync;同时确保开机自动运行该守护进程
[root@qll252 ~]# rsync --daemon --config=/etc/rsyncd.conf
[root@qll252 ~]# echo "rsync --daemon --config=/etc/rsyncd.conf" >> /etc/rc.local
三、开启sersync守护进程进行同步数据
我们先手动同步一次,
[root@qll251 ~]# rsync -avz /data rsync_user@192.168.1.252::web --password-file=/etc/rsync.mypass

手动同步成功,说明我们部署的环境是正确的!
接下来,我们开启sersync守护进程,实现两台服务器之间的数据实时同步
[root@qll251 ~]# /root/sersync2.5.4/sersync2 -d -r -o /root/sersync2.5.4/confxml.xml

已开启sersync守护进程,现在我们进行验证
验证方式:在服务器端批量创建文件,同时在客户端watch -n /mybak。以0.1秒的时间间隔进行刷新
验证结果:数据实时同步,如下图所示:

我们已经实现了,两台主机之间的数据实时同步。接下来我们研究下sersync开机自动监控数据同步
实现sersync开机自动监控数据同步
编辑/etc/rc.local
(最后一行添加追加该命令)
/root/sersync2.5.4/sersync2 -d -r -o /root/sersync2.5.4/confxml.xml
编辑完毕,reboot,如果一切正常。便可实现数据的实时同步
若重启主机后,
/etc/rc.local内的配置命令并未生效。
这时要确保/etc/rc.local和/etc/rc.d/rc.local都有可执行权限
原因如下:

上图中,我用黄线圈了两处:
第一句说明:/etc/rc.local是/etc/rc.d/rc.local的软链接
第二句:Please note that you must run ‘chmod +x /etc/rc.d/rc.local’ to ensure
通过以上得到结论:
由于/etc/rc.local是/etc/rc.d/rc.local的软链接,所以必须确保/etc/rc.local 和 /etc/rc.d/rc.local都有可执行权限。
解决办法:chmod +x /etc/rc.d/rc.local
重启,问题解决。
关于/etc/rc.local的小技巧,你今天get到了吗?
更多IT技术,请微信搜索公众号秦露露或者扫描下方二维码关注

项目实战:rsync+sersync实现数据实时同步的更多相关文章
- Rsync+sersync实现数据实时同步
前言: 一.为什么要用Rsync+sersync架构? 1.sersync是基于Inotify开发的,类似于Inotify-tools的工具 2.sersync可以记录下被监听目录中发生变化的(包括增 ...
- CentOS7下Rsync+sersync实现数据实时同步
近期公司要上线新项目,后台框架选型我选择当前较为流行的laravel,运行环境使用lnmp. 之前我这边项目tp32+apache,开发工具使用phpstorm. 新建/编辑文件通过phpstorm配 ...
- Linux下Rsync+sersync实现数据实时同步
inotify 的同步备份机制有着缺点,于是看了sersync同步,弥补了rsync的缺点.以下转自:http://www.osyunwei.com/archives/7447.html 前言: 一. ...
- centos7服务搭建常用服务配置之二:Rsync+sersync实现数据实时同步
目录 1.RSYNC数据备份 1.1 rsync服务简介 1.2 rsync特点和优势 1.3 rysnc运行模式简介 1.4 数据同步方式 2 Rsync实验测试 2.1 实验环境说明 2.2 服务 ...
- 实战:rsync+inotify实现数据实时同步
Linux 内核从 2.6.13 版本开始提供了 inotify 通知接口,用来监控文件系统的各种变化情况,如文件存取.删除.移动等.利用这一机制,可以非常方便地实现文件异动告警.增量备份,并针对目录 ...
- CentOS7+rsync+sersync实现数据实时同步
一.全网数据备份方案 1.需要备份的文件目录有(原则上,只要运维人员写入或更改的数据都需要备份)./data,/etc/rc.local,/var/spool/cron/root等,根据不同都服务器做 ...
- rsync+sersync实现文件实时同步
前言: 一.为什么要用Rsync+sersync架构? 1.sersync是基于Inotify开发的,类似于Inotify-tools的工具 2.sersync可以记录下被监听目录中发生变化的(包括增 ...
- sersync基于rsync+inotify实现数据实时同步
一.环境描述 需求:服务器A与服务器B为主备服务模式,需要保持文件一致性,现采用sersync基于rsync+inotify实现数据实时同步 主服务器A:192.168.1.23 从服务器B:192. ...
- Linux下Rsync+Inotify-tools实现数据实时同步
Linux下Rsync+Inotify-tools实现数据实时同步 注意:下面的三个案例都是rsync 每次都是全量的同步(这就坑爹了),而且 file列表是循环形式触发rsync ,等于有10个文件 ...
随机推荐
- memcached 最大能存储多大的单个 item?
1MB.如果你的数据大于 1MB,可以考虑在客户端压缩或拆分到多个 key 中. 为什么单个 item 的大小被限制在 1M byte 之内? 简单的回答:因为内存分配器的算法就是这样的. 详细的回答 ...
- java对象的克隆以及深拷贝与浅拷贝
一.为什么要使用克隆 在实际编程过程中,我们常常要遇到这种情况:有一个对象A,在某一时刻A中已经包含了一些有效值,此时可能 会需要一个和A完全相同新对象B,并且此后对B任何改动都不会影响到A中的值,也 ...
- Less使用@import进行Mixins
Import 指令 从其他样式表导入样式 在标准CSS中,@ import at-rules必须在所有其他类型的规则之前.但Less.js并不关心你放置@import语句的位置 Example: .f ...
- java-LinkedMap
输入一组数,输出是按每个出现的频率,比如1,3,3,4,5,9,9,9,3,3,输出为3,3,3,3,9,9,9,1,4,5如果频率一样就按原顺序输出. package com.lyb.array;i ...
- Flask 简单使用,这一篇就够了!
#Flask 安装依赖包及作用 - jinja2 模板语言 (flask依赖包) - markupsafe 防止css攻击 (flask依赖包) - werkzeug --wkz 类似于django中 ...
- 《自动控制原理》个人笔记(来自ppt课件)
控制的含义 控制(CONTROL)----某个主体使某个客体按照一定的目的动作.主体–人:人工控制: 机器:自动控制客体–指一件物体,一套装置,一个物化过程,一个特定系统. 人工控制与自动控制 人在控 ...
- Qunee for HTML5 v1.6新版本发布
Qunee for HTML5 V1.6正式发布,修复了一些 BUG,增加了滚动条支持,改进了编辑器,增加了JSON 导入导出.告警冒泡.连线流动,UI 定制等扩展示例,欢迎 访问 导航面板 增加了滚 ...
- 聊聊 DisplayObject 的x/y/regX/regY/rotation/scale/skew 属性
首先要指出的是:DisplayObject 实例的属性<x, y> 与 graphics.draw*(x, y, ...) 的参数<x, y>没有关系. 在原生的 Canvas ...
- 顺序、随机IO和Java多种读写文件性能对比
概述 对于磁盘的读写分为两种模式,顺序IO和随机IO. 随机IO存在一个寻址的过程,所以效率比较低.而顺序IO,相当于有一个物理索引,在读取的时候不需要寻找地址,效率很高. 基本流程 总体结构 我们编 ...
- CCF201512-2消除类游戏
问题描述 消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行m列的游戏棋盘上进行,棋盘的每一行每一列的方格上放着一个有颜色的棋子,当一行或一列上有连续三个或更多的相同颜色的棋子时,这些棋子都被消 ...