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

posted @ 2018-06-22 18:16  呦吼吼吼~  阅读(789)  评论(0编辑  收藏  举报