zoukankan      html  css  js  c++  java
  • centos7 实现inotify-tools + rsync,自动备份mysql数据库

    一. 环境说明

    为了实现zabbix备份数据库自动同步,到备份服务器搭建

    解决方案是在后端建立一个数据发布服务器,该服务器作为rsync客户端,通过inotify机制实时监控网站数据,当数据发生变化后调用rsync命令上传数据到备份服务器(也是rsync服务器)

    我使用3台机器做的实验

    pc1的ip为10.10.251.49(复制 sync),同步备份客户端mysql数据,也是rsync服务端,需要修改/etc/rsyncd.conf配置文件

    pc3的ip为10.10.251.65(主 inotify+sync),作为自动备份zabbix_mysql数据库服务器,是rsync的客户端,不需要配置/etc/rsyncd.conf,但是需要安装inotify

    也可以互相同步文件,反过来搭建就可以实现

    需要关闭selinux ,防火墙

     

     

    二. 在服务器上部署rsync服务器

    在服务器上部署rsync服务,这些rsync服务需要提供客户端上传功能,以实现客户端主机将数据推送到rsync服务器,这样我们只需要在10.10.251.49主机上修改数据,就可以实时推送数据到zabbix_mysql数据库服务器上

    pc1的配置如下

    yum -y install rsync   #centos7中默认已安装

    mkdir -p /root/bak    #建立数据同步存放目录

    chmod 770 /root/bak    #修改权限,必须要有读,写,执行权限,否而会失败。

    chown nobody.nobody /root/bak   #修改所属

    然后添加修改配置文件,vim /etc/rsyncd.conf    如下

    transfer logging = yes

    log file = /var/log/rsyncd.log

    pid file = /var/run/rsyncd.pid

    lock file = /var/run/rsync.lock

    uid = nobody

    gid = nobody

    use chroot = no

    ignore errors

    read only = no

    [zabbix1]   #

    comment = zabbix1  名字随意

    path = /root/bak  #同步主机上的目录,

    auth users = tom  

    secrets file = /etc/rsyncd.secrets  #根据这个名字创建文档,可以自己修改路径名字

    host allow = 10.10.251.65   #从哪个主机同步,就写那个ip

    list = false

     

    然后设置密码文件,防火墙

    echo "tom:123" > /etc/rsyncd.secrets  # 需要创建用户名为tom 密码为123 的用户

    chmod 600 /etc/rsyncd.secrets    #加权限

    systemctl restart rsyncd

    rsync --daemon    #一定记得要开启rsync

    echo "rsync --daemon" >> /etc/rc.local  设置开机运行 

     

     

     

    三。主 inotify+sync服务器(10.10.251.65)

    1. 安装相应软件

    yum -y install rsync

    systemctl start rsyncd

    rsync --daemon  #开启rsync

    yum -y install automake libtool   #安装编译安装软件所需工具

    wget http://downloads.sourceforge.net/project/inotify-tools/inotify-tools/3.13/inotify-tools-3.13.tar.gz        #下载inotify-tool软件包

    解压后进入inotify-tools-3.13目录,执行如下安装

    ./configure      #默认安装路径是/usr/local,如果想改变路径可在后面加参数 --prefix 路径名

    make && make install

     

    2. 设置密码文件

    echo "123" > /root/rsync.pass   #123为rsync服务端配置的用户名为tom的密码

    chmod 600 /root/rsync.pass

     红字部分注意对应。

    3. 编写监控脚本

    vim notify_rsync.sh

    #!/bin/bash

    host_slave=10.10.251.49  # 对端想要同步的ip

    master_src=/root/bak   #同步路径

    inotify_home=/usr/local/   #inotifywait (这个试行程序的路径)

     

     

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

    | while read file

     

    do

     

    rsync -az --delete ${master_src} rsynclsl@${host_slave}::zabbix1 --password-file=/root/rsync.pass

     

    done

     

    然后执行此脚本 sh notify_rsync.sh,注意脚本会一直运行,你去主上创建,在备份机就可以看到效果了,就因为不知道这个,排错多一个小时

    之后就可以实现同步如下图

     

    本次参考:https://www.cnblogs.com/regit/p/8073097.html

    There are no shortcuts to any place worth going. -- Beverly Sills
  • 相关阅读:
    命名空间“Aspose”中不存在类型或命名空间名称“Slides”。
    项目平台不同修改方法
    手机端自动跳转
    KindEditor得不到textarea值的解决方法
    正则表达式常用
    Log4Net不生成日志文件
    python笔记03-----文件操作
    python笔记04-----字典、元组、集合操作
    python笔记02-----字符串操作
    python笔记01-----列表操作
  • 原文地址:https://www.cnblogs.com/zdoubly/p/9214965.html
Copyright © 2011-2022 走看看