Centos7数据实时同步

二次信任 提交于 2020-01-20 03:57:02
  1. Rsync+inotify

  1. 功能要求

    通过rsync+inotify将数据库指定目录实时同步到备份服务器。

  2. 环境说明

    M:192.168.10.11 数据库服务器

    S:192.168.10.13 备份服务器

  3. 备份服务器操作

    # yum -y install rsync

    # useradd rsync -s /sbin/nologin -M

    # mkdir -pv /kazihuo/bak

    # chown rsync.rsync /kazihuo/bak

    # cat /etc/rsyncd.conf

    pid file = /var/run/rsyncd.pid                                                                                                                                                                   [Rsc-bak]

    uid = rsync

    gid = rsync

    path = /kazihuo/bak/

    max connections = 200

    log file = /var/log/rsyncd.log

    auth users = rsync-k

    secrets file = /etc/rsync.password

    # cat /etc/rsync.password

    rsync-k:000000

    # chomd 600 /etc/rsync.password

    # rsync --daemon

    # ss -autnpl |grep rsync

    tcp LISTEN 0 5 *:873 *:* users:(("rsync",pid=2383,fd=4))

    tcp LISTEN 0 5 :::873 :::* users:(("rsync",pid=2383,fd=5))

     

  4. 数据库服务器操作

    # ls /proc/sys/fs/inotify/

    max_queued_events max_user_instances max_user_watches

    #显示以上三个文件则表明支持inotify

    # wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz

    # tar axvf inotify-tools-3.14.tar.gz

    # cd inotify-tools-3.14

    # ./configure --prefix=/usr/local/inotify

    # make && make install

    # cd /usr/local/inotify/bin/

    # ./inotifywait –help

    -r –recursive

    #递归查询目录

    -q –quiet

    #打印监控事件的信息

    -m –monitor

    #始终保持事件监听状态

    --excludei

    #排除文件或目录时,不区分大小写

    --timefmt

    #指定时间输出的格式

    --format

    #打印使用指定的输出类似格式字符串

    -e –event

    #指定需要监控的事件,如下:

    EVENT

    access #文件或目录被访问

    modify #文件或目录被修改

    attrib #文件或目录属性被改变

    close #文件或目录封闭

    open #文件或目录被打开

    moved_to #文件或目录被移动至另外一个目录

    move #文件或目录移动

    create #文件或目录被创建在当前目录

    delete #文件或目录被删除

    umount #文件系统被卸载

    # mkdir -pv /root/ka #创建本地监控目录

    # cat /etc/rsync.password

    000000

    # chmod 600 /etc/rsync.password                                                                                                                                                                                                                                                                       # cat /scripts/inotify.sh

    #!/bin/bash

    # Defined parameter

    host01=192.168.10.13 #inotify-slaveip地址

    src=/root/ka #本地监控的目录

    dst=Rsc-bak #inotify-slaversync服务的模块名

    user=rsync-k #inotify-slaversync服务的虚拟用户

    rsync_passfile=/etc/rsync.password #本地调用rsync服务的密码文件

    inotify_home=/usr/local/inotify #inotify的安装目录

    #Judge

    if [ ! -e "$src" ] || [ ! -e "${rsync_passfile}" ] || [ ! -e "${inotify_home}/bin/inotifywait" ] || [ ! -e "/usr/bin/rsync" ];then

        echo "Check File and Folder"

    fi

    ${inotify_home}/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e modify,delete,create,attrib $src | while read files

    do

        cd $src && rsync -arz --delete ./ --timeout=100 $user@$host01::$dst --password-file=${rsync_passfile} >/dev/null 2>&1

    done

    # nohup /scripts/inotify.sh &

  5. 功能测试操作

    [root@M ~]# mkdir /root/ka/ccc

    [root@S ~]# tail -f /var/log/rsyncd.log

    2017/12/19 20:15:22 [12233] rsync to Rsc-bak/ from rsync-k@UNKNOWN (192.168.10.11)

    2017/12/19 20:15:22 [12233] receiving file list

    2017/12/19 20:15:22 [12233] sent 84 bytes received 207 bytes total size 973

    [root@S ~]# ls /kazihuo/bak/

    ccc

     

    :只有当源目录下文件或目录发生变化(增、删、改)时,相应的备份服务器才会执行实时同步动作!

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!