inotify+rsync双机热备
发布日期:2021-06-24 07:06:59 浏览次数:6 分类:技术文章

本文共 2745 字,大约阅读时间需要 9 分钟。

随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足,首先,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输。如果文件数量达到了百万甚至千万量级,扫描所有文件将是非常耗时的。而且正在发生变化的往往是其中很少的一部分,这是非常低效的方式。其次,rsync不能实时的去监测、同步数据,虽然它可以通过linux守护进程的方式进行触发同步,但是两次触发动作一定会有时间差,这样就导致了服务端和客户端数据可能出现不一致,无法在应用故障时完全的恢复数据。基于以上原因,rsync+inotify组合出现了!

概念解释:
主程序服务器:被同步的服务器,此服务器应用的修改会被同步到副程序服务器上。
副程序服务器:主程序服务器上的应用数据会同步到此服务器上。

主程序服务器篇

1、安装inotify

由于inotify的特性需要Linux内核支持,首页要确认Linxu内核是否在2.6.13以上。执行命令返回内核版本号。如下:

[root@iZ2zehpcbm147hy691ow2yZ ~]# uname -r3.10.0-327.22.2.el7.x86_64

执行如下命令返回3项输出则表示支持inotify:

[root@iZ2zehpcbm147hy691ow2yZ ~]# ll /proc/sys/fs/inotifytotal 0-rw-r--r-- 1 root root 0 Apr  1 15:35 max_queued_events-rw-r--r-- 1 root root 0 Apr  1 15:35 max_user_instances-rw-r--r-- 1 root root 0 Apr  1 15:35 max_user_watches

 如果支持可到 下载inotify,然后开始安装:

[root@iZ2zehpcbm147hy691ow2yZ ~]# tar zxvf inotify-tools-3.13.tar.gz [root@iZ2zehpcbm147hy691ow2yZ ~]# cd inotify-tools-3.13[root@iZ2zehpcbm147hy691ow2yZ inotify-tools-3.13]# ./configure[root@iZ2zehpcbm147hy691ow2yZ inotify-tools-3.13]# make && make install

安装完成后会生成inotifywait和inotifywatch两个指令,可执行如下命令查看是否安装成功:

[root@iZ2zehpcbm147hy691ow2yZ ~]# ll /usr/local/bin/inotifywa*-rwxr-xr-x 1 root root 52547 Apr  1 16:11 /usr/local/bin/inotifywait-rwxr-xr-x 1 root root 54639 Apr  1 16:11 /usr/local/bin/inotifywatch
2、运行脚本

内容如下,注意修改脚本中的rsync配置和ip等动态内容:

#!/bin/bash/usr/local/bin/inotifywait -mr --timefmt '%d/%m/%y %H:%M' --format '%T %w %f' -e close_write,modify,delete,create,attrib --fromfile '/root/cmd/inorify_dir' |  while read DATE TIME DIR FILE; do     /usr/bin/rsync  -vzrtopg --progress --delete --owner --group --exclude="data/video" --exclude="data/upload" --password-file=/etc/rsync/yulin_vice_1.pwd /home/wwwroot/yulinapp.com/ root@10.26.98.129::yulin done

—fromfile是设置inotifywait要监控的目录,而目录信息在/root/cmd/inorify_dir文件中,/root/cmd/inorify_dir文件内容如下;

/home/wwwroot/yulinapp.com/@/home/wwwroot/yulinapp.com/data/upload/@/home/wwwroot/yulinapp.com/data/video/

一行一条目录数据,带@为不监控的目录。上示文件中的意思是监控/home/wwwroot/yulinapp.com/目录下的文件变化,排除/home/wwwroot/yulinapp.com/data/upload/目录和/home/wwwroot/yulinapp.com/data/video/

  • -password-file是设置副程序服务器rsync的密码文件路径;
  • -exclude是设置rsync不需要同步的文件或目录;
  • /home/wwwroot/yulinapp.com/ 为主程序服务器要同步的目录;
  • root 为副程序服务器rsync的用户;
  • 59.110.7.21 为副程序服务器的IP,如是同一内网可写内网IP;
  • yulin为副程序服务器上的模块名

此脚本要设置成开机自启动

可能出现的问题:

正常的运行inotifywait监控后屏上会显示如下信息:

Setting up watches.  Beware: since -r was given, this may take a while!Watches established.

如果是只显示:

Setting up watches.  Beware: since -r was given, this may take a while!

其实是没有开始监控的,原因可能是目录文件太大,如此次监控鱼邻服务器的项目目录时OSS目录并没有排除,因此一直没有出现开始监控的信息,后把OSS目录排除后就可以正常监控了

副服务器篇

启动rsync

副服务器当中要启动rsync,并且在配置文件rsyncd.conf模块配置中要设置成read only = no。

rsync也要设置成开机自启动

转载于:https://www.cnblogs.com/ouruola863/p/9303764.html

转载地址:https://blog.csdn.net/weixin_30896763/article/details/99483610 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:$.ajax() 方法
下一篇:关于我

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月25日 18时31分30秒