实时同步服务

如何实现数据实时同步?

inotify实时同步数据_第1张图片
2.1.1 实现数据同步通过(利用rsync服务)
rsync服务端部署
rsync客户端部署
2.1.2 实现数据实时监控(利用inotify)
inotifywait -mrq --format '%w%f' -e create,delete,moved_to,close_write /data

2.2 实现数据同步与实时监控结合(利用脚本实现)

   编写脚本,让rsync服务于inotify服务结合在一起
   [root@nfs01 scripts]# vim jiankong.sh 
   #!/bin/bash

   inotifywait -mrq --format '%w%f' -e create,delete,moved_to,close_write /data|\
   while read line
   do
     rsync -az --delete /data/ [email protected]::backup --password-file=/etc/rsync.password
   done

2.3 实时同步数据监控服务

介绍inotify软件?
Inotify是一种强大的,细粒度的。异步的文件系统事件监控机制
通过Inotify可以监控文件系统中添加、删除,修改、移动等各种事件(对文件重命名是属于什么事件?)
实时监控软件名称为inotify-tools

2.4 inotify软件部署过程

第一个里程碑:检查软件是否安装
rpm -qa inotify-tools

第二个里程碑:进行软件安装(yum安装/编译安装)
yum install -y inotify-tools

实时监控软件安装条件

1)linux内核是否达到了2.6.13
ls -l /proc/sys/fs/inotify/
[root@nfs01 yum.repos.d]# ls -l /proc/sys/fs/inotify/
total 0
-rw-r--r-- 1 root root 0 Dec 4 09:42 max_queued_events
-rw-r--r-- 1 root root 0 Dec 4 09:42 max_user_instances
-rw-r--r-- 1 root root 0 Dec 4 09:42 max_user_watches
max_user_watches: (8192) 设置inotifywait或inotifywatch命令可以监视的文件数量(单进程)
max_user_instances:(128) 设置每个用户可以运行的inotifywait或inotifywatch命令的进程数
max_queued_events: (16384) 设置inotify实例事件(event)队列可容纳的事件数量

2)系统epel源已经部署配置好

第三个里程碑:利用inotify命令进行实时监控
inotifywait: 在被监控的文件或目录上等待特定文件系统事件(open close delete等)发生,
执行后处于阻塞状态,适合在shell脚本中使用
inotifywatch:收集被监控的文件系统使用的统计数据,指文件系统事件发生的次数统计。

inotifywait命令重要参数
-m|--monitor --- 始终保持事件监听状态
-r --- 递归监控目录数据信息变化
-q|--quiet --- 输出信息少(只打印事件信息)
--timefmt --- 指定时间输出的格式
--format --- 打印使用指定的输出类似格式字符串;即实际监控输出的内容
-e --- 指定监听指定的事件,如果省略,表示所有事件都进行监听。

2.5 实时监控实践练习:

2.5.1 实践练习一:监控创建事件(创建文件或创建目录)
创建文件:
touch oldgirl.txt
/data/ CREATE oldgirl.txt
/data/ OPEN oldgirl.txt
/data/ ATTRIB oldgirl.txt
/data/ CLOSE_WRITE,CLOSE oldgirl.txt

创建目录:
/data/ CREATE,ISDIR dir03
/data/ OPEN,ISDIR dir03
/data/ CLOSE_NOWRITE,CLOSE,ISDIR dir03

2.5.2 实践练习二:监控删除实践(删除文件或删除目录)
删除文件:
/data/ DELETE oldgirl.txt

删除目录:
/data/ OPEN,ISDIR dir03
/data/dir03/ OPEN,ISDIR
/data/ DELETE,ISDIR dir03
/data/ CLOSE_NOWRITE,CLOSE,ISDIR dir03
/data/dir03/ CLOSE_NOWRITE,CLOSE,ISDIR
/data/dir03/ DELETE_SELF

/data/ OPEN,ISDIR 01dir
/data/01dir/ OPEN,ISDIR
/data/01dir/ OPEN,ISDIR dir
/data/01dir/dir/ OPEN,ISDIR
/data/01dir/ CLOSE_NOWRITE,CLOSE,ISDIR dir
/data/01dir/dir/ CLOSE_NOWRITE,CLOSE,ISDIR
/data/01dir/ DELETE,ISDIR dir
/data/01dir/dir/ DELETE_SELF
/data/01dir/ DELETE 02.txt
/data/01dir/ DELETE 01.txt
/data/ DELETE,ISDIR 01dir
/data/ CLOSE_NOWRITE,CLOSE,ISDIR 01dir
/data/01dir/ CLOSE_NOWRITE,CLOSE,ISDIR
/data/01dir/ DELETE_SELF

2.5.3 实践练习三:监控重命名操作(重命名文件)
/data/ MOVED_FROM 1.txt
/data/ MOVED_TO 3.txt

2.5.4 实践练习四:sed命令替换过程
/data/ OPEN oldboy.txt
/data/ CREATE sedI5BZVM
/data/ OPEN sedI5BZVM
/data/ ACCESS oldboy.txt
/data/ MODIFY sedI5BZVM
/data/ ATTRIB sedI5BZVM
/data/ ATTRIB sedI5BZVM
/data/ CLOSE_NOWRITE,CLOSE oldboy.txt
/data/ CLOSE_WRITE,CLOSE sedI5BZVM
/data/ MOVED_FROM sedI5BZVM
/data/ MOVED_TO oldboy.txt

2.6 sed命令替换原理:

  1. 打开要被替换的文件,并且创建出一个临时文件
  2. 访问要被替换的文件,根据要替换文件的内容,包替换后的文件信息保存到临时文件
  3. 不写入关闭要被替换的文件,写入关闭临时文件
  4. 将临时文件进行重命名为要被替换的文件,将要被替换的文件覆盖掉

    企业常用inotify监控命令

    inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f 事件信息:%:e' -e create,delete,moved_to,close_write /data
    inotifywait -mrq --format '%w%f' -e create,delete,moved_to,close_write /data

inotify实时同步数据_第2张图片

inotify实时同步数据_第3张图片
inotify实时同步数据_第4张图片
inotify实时同步数据_第5张图片

3.1 sersync软件部署流程

sersync服务端部署
第一个里程碑:安装sersync软件
wget http://sersync.googlecode.com/files/sersync2.5_32bit_binary_stable
tar -zxvf sersync2.5_32bit_binary_stable_final.tar.gz -C /usr/local/ --- 编译安装
unzip sersync_installdir_64bit.zip --- 进行解压
[root@nfs01 sersync_installdir_64bit]# mv sersync/ /usr/local/

第二个里程碑:编写sersync配置文件
[root@nfs01 sersync]# cp conf/confxml.xml{,.bak}
vim /usr/local/sersync/conf/confxml.xml






说明:指定默认文件不进行数据同步











说明:定义sersync监控事件信息


        
        
        
    
    
        
        
        
        
        
    
说明:以上信息都是你需要改动的配置信息

第三个里程碑:启动sersync服务守护进程
[root@nfs01 bin]# chmod +x sersync
[root@nfs01 bin]# ./sersync -dro /usr/local/sersync/conf/confxml.xml
参数-d: 启用守护进程模式
参数-r: 在监控前,将监控目录与远程主机用rsync命令推送一遍
参数-o: 指定配置文件,默认使用confxml.xml文件

第四个里程碑:进行数据实时同步测试

3.2 Inotify服务优化

inotify实时同步数据_第6张图片

3.3 实时同步服务serync-服务配置文件对比说明

inotify实时同步数据_第7张图片