01.为什么要使用实时同步服务
a-因为定时任务有缺陷,-一分钟以内的数据无法进行同步,容易造成数据丢失;
b-用户上传数据信息需要实时备份保存.
实时同步实现及工作原理.
01. 实时监控同步数据目录信息变化;
02. 监控目录发生变化进行数据推送.
实时同步监控服务器部署过程,(inotify服务); 实时同步备份服务器部署过程(rsync服务)
a.创建要存储数据的目录;
b.利用实时同步的软件监控我们进行备份的数据目录
c利用rsync服务进行数据推送传输备份(一般是监控存储服务器上的目录,向rsync备份服务器进行同步)
02实时同步软件部署
a.inotify+rsync 实现实时同步
b sersync+rsync 实现实时同步备份.
第一步骤:
安装部署 inotify yum -y install inotify-tools
[[email protected] data]# rpm -ql inotify-tools
/usr/bin/inotifywait
/usr/bin/inotifywatch
/usr/lib64/libinotifytools.so.0
/usr/lib64/libinotifytools.so.0.4.1
/usr/share/doc/inotify-tools-3.14
/usr/share/doc/inotify-tools-3.14/AUTHORS
/usr/share/doc/inotify-tools-3.14/COPYING
/usr/share/doc/inotify-tools-3.14/ChangeLog
/usr/share/doc/inotify-tools-3.14/NEWS
/usr/share/doc/inotify-tools-3.14/README
/usr/share/man/man1/inotifywait.1.gz
/usr/share/man/man1/inotifywatch.1.gz
inotifywait
第二步骤, 安装部署rsync服务,
a先部署服务端rsync 服务,
@1.检查rsync是否已经安装; rpm -qa |grep rsync
@2.编写rsync软件主配置文件.
@3.创建目录管理用户
@4.创建备份目录,并进行授权;
@5.创建认证文件,编写认证用户和密码信息;设置备份文件目录权限为600.
@6.启动守护进程模式, rsync --daemon
b.再部署客户端rsync服务, yum -y install rsync
@1.检查并安装rsync服务
@2.rsync 配置文件 需要设置配置的认证文件. /etc/rsync.password (认证文件只需要有认证的密码信息),设置文件权限为600 只运行root访问读写
@3.使用客户端进行数据同步测试.
rsync -avz /etc/sysconfig/network [email protected]::backup --password-file=/etc/rsync.password (在客户端进行push 推送到备份服务器,然后再在服务端进行检查:ls -ll /backup/. 看是否推送成功.)
03.实时同步软件 inotify 软件 强大的,细颗粒度的,异步的文件系统事件监控机制.
inotify_init inotify_add_watch inotify_rm_watch
inotify 软件的命令参数:(inotifywait)
-m|--monitor 参数: 始终保持事件监听状态;
-d|--daemon 类似于-m ,只是将命令运行在后台, 定义程序日志使用 --syslog参数.
-r --recursive 递归监控目录数据信息变化;
-o|--outfile <file> 打印事件到文件中,相当于标准正确输出
-s|--syslog 标准日志输出
-q|--quiet 将无用的输出信息,不进行显示输出
--timefmt<fmt> 设定日期的格式;
--format 打印使用指定的输出类似格式字符串,即实际监控输出的内容.
-e <event> 指定监听指定的事件,如果省略,表示所有事件都进行监听.
man inotifywait 查看所有参数说明和所有可以监控的事件信息.
inotify events
IN_ACCESS
IN_ATTRIB
IN_CLOSE_WRITE
IN_CLOSE_NOWRITE
IN_CREATE
IN_DELETE
IN_MODIFY
IN_MOVE_SELF
IN_MOVED_FROM File moved out of watched directory (*)
IN_MOVED_TO File moved into watched directory (*)
IN_MOVE
IN_OPEN file was opend (*)
①. max_user_watches 可以监控的最大文件数
②. max_user_instances 设置用户可以开启的服务进程数
③. max_queued_events 设置监控服务实例可以监控的事件个数
①. inotifywait 监控产生的变化文件信息
②. inotifywatch 统计变化的文件事件信息
inotify 实时同步服务脚本编写-Inotify
编写脚本如下实现NFS服务器和备份服务器之间实现实时同步:
#!/bin/bash
###########This scripts is wrote by tony-2018-12-07
Rsync_path_file=/etc/rsync.password
Ip="172.16.1.41"
Path=/data
Inotify_command=/usr/bin/inotifywait
$Inotify_command -mrq --format %w%f -e create,delete,moved_to,close_write /data| whil
e read line
do
#rsync -avz $line [email protected]$Ip::backup --password-file=$Rsync_path_file
rsync -avz --delete /data/ [email protected]$Ip::games --password-file=$Rsync_path_file
done
脚本原理: 先使用inotifywait监控需要同步的目录,这里是/data目录, 然后监控创建,删除,移动重命名,打开动作,然后检查到变化后使用rsync命令进行向备份服务器进行同步.rsync -avz --delete /data/ [email protected]$Ip::games --password-file=/etc/rsync.password
以上,实现了监控存储服务器的/data 目录的变化,并进行实时同步并备份到备份服务器的/bakcup(backup是模块名字))
方法二:使用sersync+rsync 实现高效的数据实时同步架构(进行目录的实时同步操作.)
sersync软件下载地址:https://github.com/wsgzao/sersync.
inotify和rsync的配置文件默认不用修改,需要修改sersync的配置文件.
23 <sersync>
24 <localpath watch="/data">
25 <remote ip="172.16.1.41" name="backup"/>
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="-artuz"/>
31 <auth start="true" users="rsync_backup" passwordfile="/etc/rsync.password"/>
32 <userDefinedPort start="false" port="874"/><!-- port=874 -->
33 <timeout start="false" time="100"/><!-- timeout=100 -->
34 <ssh start="false"/>
35 </rsync>
修改好配置文件定义好要监控的同步目录和监控的参数后就可以进行使用sersync进行同步了.
sersync -h 查看命令使用的常见参数.
参数-d:启用守护进程模式
参数-r:在监控前,将监控目录与远程主机用rsync命令推送一遍
c参数-n: 指定开启守护线程的数量,默认为10个
参数-o:指定配置文件,默认使用confxml.xml文件
参数-m:单独启用其他模块,使用 -m refreshCDN 开启刷新CDN模块
参数-m:单独启用其他模块,使用 -m socket 开启socket模块
参数-m:单独启用其他模块,使用 -m http 开启http模块
不加-m参数,则默认执行同步程序
./bin/sersync -dro confxml.xml
然后检测 /data目录下的文件变化后,就将文件推送到备份服务器相应目录中了.
高并发数据实时同步方案.(windows+Linux) 业务系统之间实时同步.
原文地址:https://www.cnblogs.com/Enzoo/p/10078708.html