实时同步服务

一、实时同步服务原理/概念

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监控命令格式:


需要用到inotify进行实时一直监控 /etc passwd /var/spool/cron/root

 

3)部署sersync同步服务

https://github.com/wsgzao/sersync 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: 启用守护进程模式 -o /usr/local/sersync/conf/confxml02.xml

启动实时同步服务

sersync -dro /usr/local/sersync/conf/confxml.xml

--安装通过进程名杀进程软件 /etc/rc.local <-- sersync -dro /usr/local/sersync/conf/confxml.xml 开机自动启动

 

三、实时同步服务概念总结

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