Rsync+inotify+sersync部署实时同步服务
实时同步服务原理/概念
1)需要部署好rsync守护进程服务,实现数据传输
2)需要部署好inotify服务,实现目录中数据变化监控
3)将rsync服务和inotify服务建立联系,将变化的数据进行实时备份传输
实时同步服务软件部署
inotify+rsyc实现实时同步备份
1、安装inotify软件
yum -y install inotify-tools
[root@Nfs01 ~]# rpm -ql inotify-tools
/usr/bin/inotifywait <– 实现对数据目录信息变化监控(重点了解)
usr/bin/inotifywatch <– 监控数据信息变化,对变化的数据进行统计
[root@Nfs01 ~]# ll /proc/sys/fs/inotify/
total 0
-rw-r–r– 1 root root 0 Aug 3 21:44 max_queued_events
-rw-r–r– 1 root root 0 Aug 3 21:44 max_user_instances
-rw-r–r– 1 root root 0 Aug 3 21:44 max_user_watches
max_user_watches: 设置inotifywait或inotifywatch命令可以监控的文件数量(单进程) # 默认只能监控8192个文件
max_user_instances: 设置每个用户可以运行的inotifywait或inotifywatch命令的进程数 # 默认每个用户可以开启inotify服务128个进程
max_queued_events: 设置inotify实例时间(event)队列可容纳的时间数量 # 默认监控时间队列长度为16384
2、将rsync守护进程模式部署完毕
**rsync服务端部署**
1)检查rsync软件是否安装
2)编写rsync软件主配置文件
3)创建备份目录管理用户
4)创建备份目录,病进行授权
5)创建认证文件,编写认证用户和密码信息,设置文件权限为600
6)启动rsync守护进程服务
rsync客户端部署
1)检查rsync软件是否安装
2)创建认证文件,编写认证用户密码信息即可,设置文件权限为600
3)利用客户端进行数据同步测试
3、让inotify软件和rsync软件服务建立连接(shell脚本)
rsync软件应用命令:
rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup01 –-password-file=/etc/rsync.password
inotify软件应用命令:
inotifywait
-m|–monitor – 实现一致监控目录的数据变化
-r – 进行递归监控
-q|–quiet – 尽量减少信息的输出
-d|--daemon - 后台运行,以守护进程方式运行
-e – 指定监控的事件信息
man inotifywait 查看所有参数说明和所有可以监控的事件信息
--timefmt - 当在--format选项中使用%T时,--timefrt选项则可以用来指定自定义的符合strftime规范的时间格式,--timefrt后常用的参数是'%d/%m/%y %H:%M';
man strftime 获取更多时间参数信息
--format - 自定义inotifywait的输出格式,如--format '%T %w %f';常用的格式符如下:
%w - 显示被监控文件的文件名;
%f - 如果发生某事件的对象是目录,则显示被监控目录的名字;默认显示为空串;
%T - 使用--timefmt选项中自定义的时间格式.
主要用到的事件信息:
create创建、delete删除、moved_to移入、close_write修改
inotifywait -rmq --timefmt "%F" --format "%T %w%f 事件信息: %e" /data # 相对完整的命令应用
inotifywait -rmq --timefmt "%F" --format "%T %w%f 事件信息: %e" -e create /data # 指定监控事件信息
inotifywait -rmq --timefmt "%F" --format "%T %w%f 事件信息: %e" -e create,delete,moved_to,close_write /data
编写脚本:实现inotify与rsync软件结合
#!/bin/bash
#实时同步
inotifywait -rmq --timefmt "%F" --format "%T %w%f 事件: %e" -e create,delete,moved_to,close_write /data | \
while read line
do
rsync -avz $line rsync_backup@172.16.1.41::backup01 --password-file=/etc/rsync.password
done
shell循环语法总结:
for循环 for xx in 循环条件内容信息;do xxx;done
while循环 while 循环条件; do xx; done <–只要条件满足,就一直循环
while true; do xx ; done <–死循环
sersync+rsync实现实时同步备份
1、下载安装软件,软件下载链接(https://github.com/wsgzao/sersync)
将sersync2和confxml.xml文件移动到/usr/local/sersync目录下面
2、编写sersync配置文件
-rwxr-xr-x 1 root root 2214 Oct 26 2011 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>
说明:实现同步数据过滤排除功能
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>
说明:类似于inotify的-e参数功能,指定监控的事件信息
24 <localpath watch=”/data”> –指定监控目录
25 <remote ip=”172.16.1.41″ name=”nfsbackup”/>
–指定备份服务器地址 –指定备份服务器模块信息
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=”-az”/>
–指定rsync推送命令参数
31 <auth start=”true” users=”rsync_backup” passwordfile=”/etc/rsync.password”/>
–指定rsync认证用户 –指定rsync认证文件
32 <userDefinedPort start=”false” port=”874″/><!– port=874 –>
–使用他指定的端口就必须将start修改为true,默认为false
33 <timeout start=”false” time=”100″/><!– timeout=100 –>
34 <ssh start=”false”/>
35 </rsync>
说明:以上内容是数据相关的配置信息,是必须进行修改
3、启动sersync服务程序
[root@nfs01 sersync]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@nfs01 sersync]# export PATH=”$PATH:/usr/local/sersync/”
参数-d: 启用守护进程模式
参数-r: 在监控前,将监控目录与远程主机用rsync命令推送一遍进行同步测试
参数-o: 指定配置文件,默认使用confxml.xml文件
-o /usr/local/sersync/confxml.xml
-o /usr/local/sersync/confxml02.xml
sersync2 -dro /usr/local/sersync/confxml.xml –启动实时同步服务
killall sersync2 –停止实时同步服务
cat >>/etc/rc.local<<-EOF –开机自动启动
sersync2 -dro /usr/local/sersync/confxml.xml
EOF
实时同步服务概念总结
1)实现实时同步的原理
监控目录数据变化 –inotify
将数据进行传输 –rsync
将监控和传输进行整合 –sersync2
2)实现实时同步部署方法
1、部署rsync守护进程
2、部署inotify软件
3、部署sersync软件