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软件
posted @ 2021-08-26 10:48  Cai_HL  阅读(75)  评论(0编辑  收藏  举报
>