rsync+inotify实现数据库网络实时备份
rsync作为一个单向的备份神器,效率超高,实乃网络备份中的神器。不过,配inotify更强悍哦。inotify是什么东西?实时对比文件之间的差异,并发出通知等事物,从而进行同步的一个软件。在Linux中的yum 就使用了inotify,只是是基于Python的 python-inotify这个软件。rsync和inotify结合,就可以实现自动的实时的稳定备份,数据库也是由一个个文件组成,因此实时的备份数据库是一个不错的选择。
该实验由两台主机构成,一台主机作为rsync的服务器,需要备份的数据库就安装在此主机上。另一台作为数据备份的接受方,只是存储备份的内容。当然了,如果在第二台主机也安装数据库,并将备份指向所安装数据库的数据库位置,那么,也是变相的一个主从复制。第一台主机 IP地址为192.168.0.16,第二台主机地址为192.168.0.17。下面讲解详细配置步骤。
第一台主机192.168.0.16的配置:
安装mysql,安装方式不限定,版本不限定,我是使用的二进制安装,版本为mysql-5.7.19,安装后的目录为 /usr/local/mysql。数据库目录为 /usr/local/mysql/data 并且数据库远程连接权限开放。
执行命令:
yum install https://mirrors.tuna.tsinghua.edu.cn/epel/7/x86_64/Packages/i/inotify-tools-3.14-9.el7.x86_64.rpm -y
yum install https://mirrors.tuna.tsinghua.edu.cn/epel/7/x86_64/Packages/i/inotify-tools-devel-3.14-9.el7.x86_64.rpm -y
yum install rsync -y &&systemctl enable rsyncd && systemctl start rsyncd
yum 安装inotify和rsync,注意一点,inotify-tools和inotify-tools-devel是依赖关系,前者先安装。
编辑一个脚本,该脚本功能为启动rsync服务和inotify服务。脚本内容如下:
echo "a=\"inotifywait -mrq -e create,delete,modify /usr/local/mysql/data\"
b=\"rsync -avz /usr/local/mysql/* [email protected]:/filedes\"
\$a | while read directory event file
do
\$b
done " >/root/rsync.sh
执行命令,重启rsync服务:systemctl enable rsyncd &&systemctl restart rsyncd
第二台主机192.168.0.17的配置:
执行命令:yum install rsync -y &&mkdir /filedes,配置两台主机的ssh免密登录 ,两个主机的防火墙和selinux都关闭。
systemctl enable rsyncd && systemctl start rsyncd
回到第一个主机,执行第一个脚本 rsync.sh
这时候,如果一切正常,在第一台主机操作数据库,比如新建一个数据库,在第二台主机的 /filedes 目录下会看到所有的数据库文件,可以实时同步了。
标签:rsync,inotify,主机,数据库,mysql,备份 From: https://blog.51cto.com/u_15966109/6082645