当前位置: 代码迷 >> 综合 >> sersync+inotify+rsync部署实时同步
  详细解决方案

sersync+inotify+rsync部署实时同步

热度:10   发布时间:2024-02-10 08:53:08.0

实时同步服务原理/概念
1)需要部署好rsync守护进程服务,实现数据传输
2)需要部署好inotify服务,实现目录中数据变化监控
3)将rsync服务和inotify服务建立联系,将变化的数据进行实时备份传输

实时同步服务软件部署
a 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                    --尽量减少信息的输出
--timefmt<fmt>                --指定输出的时间格式
man strftime 获取更多时间参数信息
--format<fmt>                --指定输出的信息格式
-e                            --指定监控的事件信息
man inotifywait 查看所有参数说明和所有可以监控的事件信息

总结主要用到的事件信息:
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 --format "%T %w%f" -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        <--死循环

运维工作中编写自动化脚本规范:
1.先完成基本功能需求
2.优化完善脚本内容
3.写上一些注释说明信息
4.进行反复测试

b 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="false" users="rsync_backup" passwordfile="/etc/rsync.password"/>    --指定rsync认证用户        --指定rsync认证文件
32             <userDefinedPort start="true" 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                                --停止实时同步服务
/etc/rc.local <-- sersync2 -dro /usr/local/sersync/confxml.xml     --开机自动启动

实时同步服务概念总结
1)实现实时同步的原理
监控目录数据变化    -- inotify
将数据进行传输        -- rsync
将监控和传输进行整合    --sersync2
2)实现实时同步部署方法
1、部署rsync守护进程
2、部署inotify软件
3、部署sersync软件

  相关解决方案