• 实时同步服务知识梳理


    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

    [root@nfs01 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 rsync_backup@172.16.1.41::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 rsync_backup@$Ip::backup  --password-file=$Rsync_path_file
    rsync -avz --delete /data/ rsync_backup@$Ip::games --password-file=$Rsync_path_file

    done

    脚本原理: 先使用inotifywait监控需要同步的目录,这里是/data目录, 然后监控创建,删除,移动重命名,打开动作,然后检查到变化后使用rsync命令进行向备份服务器进行同步.rsync -avz --delete /data/ rsync_backup@$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)  业务系统之间实时同步.

    博文阅读密码felix
  • 相关阅读:
    Thread的run方法和start方法
    35. Search Insert Position
    Error:(1, 1) java: 非法字符: 'ufeff'
    final修饰的变量是引用不可变,还是对象不可变
    数组与练习
    java反射机制【转】
    Socket
    面向对象的设计原则和设计模式
    多线程
    为什么有时候修改了css文件,页面的样式却没有改变?
  • 原文地址:https://www.cnblogs.com/Enzoo/p/10078708.html
Copyright © 2020-2023  润新知