zoukankan      html  css  js  c++  java
  • 实时同步方案inotify+rsync和sersync+rsync实现实时同步备份


    inotify+rsync实现实时同步备份

    第一个里程:将inotify软件安装成功
    yum install -y inotify-tools

    说明:操作系统的yum源文件中,是否存在epel源
    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

    [root@nfs01 ~]# rpm -ql inotify-tools
    /usr/bin/inotifywait <--- 实现对数据目录信息变化监控(重点了解的命令)
    /usr/bin/inotifywatch <--- 监控数据信息变化,对变化的数据进行统计

    [root@nfs01 ~]# cd /proc/sys/fs/inotify/
    [root@nfs01 inotify]# ll
    总用量 0
    -rw-r--r-- 1 root root 0 2018-02-25 19:45 max_queued_events
    -rw-r--r-- 1 root root 0 2018-02-25 19:45 max_user_instances
    -rw-r--r-- 1 root root 0 2018-02-25 19:45 max_user_watches
    max_user_watches: 设置inotifywait或inotifywatch命令可以监视的文件数量(单进程)
    默认只能监控8192个文件

    max_user_instances: 设置每个用户可以运行的inotifywait或inotifywatch命令的进程数
    默认每个用户可以开启inotify服务128个进程

    max_queued_events: 设置inotify实例事件(event)队列可容纳的事件数量
    默认监控事件队列长度为16384

    第二个里程:将rsync守护进程模式部署完毕
    rsync服务端部署
    a 检查rsync软件是否已经安装
    b 编写rsync软件主配置文件
    c 创建备份目录管理用户
    d 创建备份目录,并进行授权
    e 创建认证文件,编写认证用户和密码信息,设置文件权限为600
    f 启动rsync守护进程服务

    rsync客户端部署
    a 检查rsync软件是否已经安装
    b 创建认证文件,编写认证用户密码信息即可,设置文件权限为600
    c 利用客户端进行数据同步测试


    第三个里程:要让inotify软件和rsync软件服务建立连接(shell脚本)
    rsync软件应用命令:
    rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

    inotify软件应用命令:
    inotifywait
    -m|--monitor 始终保持事件监听状态
    -r 进行递归监控
    -q|--quiet 将无用的输出信息,不进行显示
    --timefmt <fmt> 设定日期的格式
    man strftime 获取更多时间参数信息
    --format <fmt> 命令执行过程中,输出的信息格式

    -e 指定监控的事件信息
    man inotifywait 查看所有参数说明和所有可以监控的事件信息

    总结主要用到的事件信息:
    create创建、delete删除、moved_to移入、close_write修改

    inotifywait -mrq --timefmt "%F" --format "%T %w%f 事件信息:%e" /data <-- 相对完整的命令应用
    inotifywait -mrq --timefmt "%F" --format "%T %w%f 事件信息:%e" -e create /data <-- 指定监控什么事件信息

    inotifywait -mrq --format "%w%f" -e create,delete,moved_to,close_write /data
    以上为实现实时同步过程,所需要的重要监控命令

    编写脚本:实现inotify与rsync软件结合
    #!/bin/bash
    ####################
    inotifywait -mrq --format "%w%f" -e create,delete,moved_to,close_write /data|
    while read line
    do
    rsync -az --delete /data/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
    done



    运维工作中编写自动化脚本规范:
    1. 先完成基本功能需求
    2. 优化完善脚本内容
    3. 写上一些注释说明信息
    4. 进行反复测试

    第四个里程:最终的测试
    sh -x intofy.sh

    sersync+rsync实现实时同步备份
    第一个里程:下载安装sersync软件
    先进行软件下载,把软件包上传到系统中
    unzip sersync_installdir_64bit.zip
    cd sersync_installdir_64bit
    mv sersync /usr/local/
    tree

    第二个里程:编写sersync配置文件
    [root@nfs01 sersync]# cd /usr/local/sersync/conf/
    [root@nfs01 conf]# ll
    总用量 4
    -rw-r--r-- 1 root root 2214 2011-10-26 11:54 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>
    说明:实现同步数据过滤排除功能

    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>
    说明:类似于inotify的-e参数功能,指定监控的事件信息

    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="-az"/>
    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软件,实现实时同步
    [root@nfs01 conf]# cd /usr/local/sersync/
    [root@nfs01 sersync]# cd bin/
    [root@nfs01 bin]# ll
    总用量 1768
    -rw-r--r-- 1 root root 1810128 2011-10-26 14:19 sersync
    sersync命令参数:
    参数-d: 启用守护进程模式
    参数-r: 在监控前,将监控目录与远程主机用rsync命令推送一遍(测试)
    参数-n: 指定开启守护线程的数量,默认为10个
    参数-o: 指定配置文件,默认使用confxml.xml文件

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

  • 相关阅读:
    40+精彩的HTML5实例和教程
    10+不错的设计资源和灵感的网站
    js利用点击事件做一个简单的计算器
    如何在canvas中画出一个太极图
    利用canvas画一个实时时钟
    利用随机数与定时器做一个简单的伪随机抓阄游戏
    IE8模对话框无法返回至主页面的解决方法
    C# String.Format字符串中包含"{" "}"时需注意的问题
    [Struts2应用开发] 统一的登录验证
    Visual Studio 2008 Express中文版 ‘加载此属性页是出错’ 解决方法
  • 原文地址:https://www.cnblogs.com/zpzp7878/p/10462547.html
Copyright © 2011-2022 走看看