实时同步
一、实时同步服务原理/概念
1)需要部署好rsync守护进程服务,实现数据传输 2)需要部署好inotify服务,实现目录中数据变化监控 3)将rsync服务和inotify服务建立联系,将变化的数据进行实时备份传输
1.什么是实时同步? 实时同步是一种只要当前目录发生变化则会触发一个事件,事件触发后会将变化的目录同步至远程服务器。
二、实时同步服务部署
1)部署rsync守护进程
服务端配置操作 客户端配置操作
2)部署inotify监控服务
第一个步骤:安装软件
yum install -y inotify-tools
第二个步骤:熟悉命令的使用
/usr/bin/inotifywait --- 监控目录数据信息变化
/usr/bin/inotifywatch --- 对监控的变化信息进行统计
/data/ oldboy01.txt
oldboy02.txt --- rsync --exclude
oldboy03.txt
1、inotifywait命令使用方法:
inotifywait [参数] 监控的目录
-m|--monitor --- 实现一直监控目录的数据变化
-r|--recursive --- 进行递归监控
-q|--quiet --- 尽量减少信息的输出
--format <fmt> --- 指定输出信息的格式
--timefmt --- 指定输出的时间信息格式
-e|--event --- 指定监控的事件信息
2、创建文件监控信息输出
[root@nfs01 ~]# touch /data/hgg.txt
/data/ CREATE user13 --- 一个文件被创建
/data/ OPEN user13 --- 打开创建的文件
/data/ ATTRIB user13 --- 修改文件的属性信息
/data/ CLOSE_WRITE,CLOSE user13 --- 保存关闭一个文件
3、删除文件监控信息输出
/data/ DELETE user13
4、 修改文件监控信息输出
[root@nfs01 ~]# echo 123 > /data/hgg02.txt
/data/ CREATE user10
/data/ OPEN user10
/data/ MODIFY user10
/data/ CLOSE_WRITE,CLOSE user10
5、sed命令修改文件原理
[root@nfs01 ~]# sed -i 's#123#321#g' /data/hgg02.txt
/data/ OPEN user10 --- 打开文件
/data/ CREATE sedpSAFR7 --- 创建出一个临时文件(内存)
/data/ OPEN sedpSAFR7 --- 临时文件进行打开
/data/ ACCESS user10 --- 读取源文件内容
/data/ MODIFY sedpSAFR7 --- 修改临时文件
/data/ ATTRIB sedpSAFR7 --- 临时文件属性变化
/data/ CLOSE_NOWRITE,CLOSE user10 --- 不编辑直接关闭源文件
/data/ CLOSE_WRITE,CLOSE sedpSAFR7 --- 写入关闭临时文件
/data/ MOVED_FROM sedpSAFR7 --- 将临时文件移除
/data/ MOVED_TO user10 --- 移入一个新的user10源文件
6、 inotify监控命令格式:
inotifywait -mrq --timefmt "%F" --format "%T %w %f 事件信息:%e" /data -e CREATE create创建、delete删除、moved_to移入、close_write修改
企业应用:防止系统重要文件被破坏 需要用到inotify进行实时一直监控 /etc passwd /var/spool/cron/root
3)部署sersync同步服务
第一个里程:需要下载,保留上传到linux服务器中 https://github.com/wsgzao/sersync --下载地址 上传linux服务器 rz -y --- 选择需要上传的数据信息 PS:软件尽量都统一保存在/server/tools目录中
第二个里程:解压软件压缩包,将解压的数据进行保存
unzip sersync_installdir_64bit.zip --解压文件
[root@nfs01 tools]# tree sersync_installdir_64bit
sersync_installdir_64bit
└── sersync
├── bin --- sersync软件命令目录
│?? └── sersync
├── conf --- sersync软件配置目录
│?? └── confxml.xml
└── logs --- sersync软件日志目录
[root@nfs01 tools]# mv sersync_installdir_64bit/sersync/ /usr/local/
第三个里程:编写配置文件:
说明:排除指定数据信息不要进行实时传输同步(不修改)
vim conf/confxml.xml
6 <filter start="false">
7 <exclude expression="(.*)\.svn"></exclude>
8 <exclude expression="(.*)\.gz"></exclude>
9 <exclude expression="^info/*"></exclude>
10 <exclude expression="^static/*"></exclude>
11 </filter>
说明:定义inotify程序需要监控的事件(不修改)
12 <inotify>
13 <delete start="true"/>
14 <createFolder start="true"/>
15 <createFile start="false"/>
16 <closeWrite start="true"/>
17 <moveFrom start="true"/>
18 <moveTo start="true"/>
19 <attrib start="false"/>
20 <modify start="false"/>
21 </inotify>
说明:修改rsync配置数据
<sersync>
<localpath watch="/data">
<remote ip="172.16.1.41" name="backup"/>
<!--<remote ip="192.168.8.39" name="tongbu"/>-->
<!--<remote ip="192.168.8.40" name="tongbu"/>-->
</localpath>
<rsync>
<commonParams params="-az"/>
<auth start="true" users="rsync_backup" passwordfile="/etc/rsyncd.password"/>
<userDefinedPort start="true" port="874"/><!-- port=874 -->
第四个里程:启动sersync服务程序
[root@nfs01 bin]# chmod a+x sersync --赋予文件执行权限
临时设置:
[root@nfs01 bin]# export PATH="$PATH:/usr/local/sersync/bin"
[root@nfs01 bin]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/sersync/bin
永久设置:
[root@nfs01 bin]# echo export PATH="$PATH:/usr/local/sersync/bin" >>/etc/rc.local
[root@nfs01 bin]# tail -1 /etc/rc.local
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/sersync/bin
sersync -h --查看参数说明
参数-d: 启用守护进程模式 参数-r: 在监控前,将监控目录与远程主机用rsync命令推送一遍 进行同步测试 参数-o: 指定配置文件,默认使用confxml.xml文件 -o /usr/local/sersync/conf/confxml.xml -o /usr/local/sersync/conf/confxml02.xml
启动实时同步服务
sersync -dro /usr/local/sersync/conf/confxml.xml
停止实时同步服务(杀进程) yum install -y psmisc --安装通过进程名杀进程软件 killall sersync /etc/rc.local <-- sersync -dro /usr/local/sersync/conf/confxml.xml 开机自动启动
三、实时同步服务概念总结
-
实现实时同步的原理 监控目录数据变化 --- inotify 将数据进行传输 --- rsync 将监控和传输进行整合 --- sersync
-
实现实时同步部署方法
-
部署rsync守护进程
-
部署inotify软件
-
-