实时同步服务知识梳理

Posted enzoo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实时同步服务知识梳理相关的知识,希望对你有一定的参考价值。

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)  业务系统之间实时同步.

 









































以上是关于实时同步服务知识梳理的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 基础知识梳理学习----半同步复制

经验分享使用了6年的实时操作系统,是时候梳理一下它的知识点了 | 文末赠书4本

并发与多线程相关知识点梳理

并发与多线程相关知识点梳理

并发与多线程相关知识点梳理

Android7_安卓的知识体系梳理