inotify+rsync双机热备

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

主程序服务器篇

1、安装inotify

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

[root@iZ2zehpcbm147hy691ow2yZ ~]# uname -r
3.10.0-327.22.2.el7.x86_64

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

[root@iZ2zehpcbm147hy691ow2yZ ~]# ll /proc/sys/fs/inotify
total 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

 如果支持可到https://sourceforge.net/projects/inotify-tools/ 下载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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值