老蒋这几天利用工作闲暇时间继续研究Linux VPS、服务器的备份事宜,因为公司后期的项目可能会增加,原本数据较少采用手工定时备份和服务器自带备份(公司大部分项目转向阿里云采用自动快照备份),后期可能需要用到同步数据备份,要不万一出问题全部恢复快照比较麻烦,所以准备采用rsync同步备份。
之前老蒋也有整理分享过rsync同步服务器备份的文章(配置Rsync定时同步增量备份Linux VPS网站文件 - 服务器端篇和配置Rsync定时同步增量备份Linux VPS网站文件 - 备份服务器端篇),但是那时候就看到有不小的问题,对于小数据来说单独用rsync问题不是很大,但是大数据会导致负载加重,每次同步的时候都会全局检索所有文件比对,再进行差量传输,如果百万、千万级数据效率肯定低,同时rsync单独备份采用定时同步,并不是实时的,万一问题就在这个时间差里就要出问题了。
通过网上的文档继续学习,提到使用inotify-tools结合rsync进行同步实时备份,inotify,一个强大的、细粒度的、异步的文件系统事件控制机制。通过inotify监控文件系统中添加、删除、修改、移动等各种事件。这样就不需要使用定时机制,而自动采用同步实时备份,效率较高。
同样的,鉴于内容的完整性以及可能涉及的复杂度,老蒋准备将rsync+inotify-tools备份文章也分两篇文章整理,这篇文章主要是在主服务器和备份服务器中部署Rsync可以实现同步效果。
第一、rsync+inotify-tools准备工作
1、准备两台服务器这里老蒋用两台CentOS6 64bit作为测试机,A主服务器(IP:11.11.11.11)、B备份服务器(IP:22.22.22.22);
2、备份目标,需要将A主服务器/home/itbulu.com数据备份到B备份服务器/home/backup目录中;
3、防火墙设置,我们需要检查两台服务器的防火墙。如果有设置防火墙则需要关闭SELINUX且开启Rsync默认873端口。
a - SELINUX禁止(/etc/selinux/config)
b - 防火墙开启873端口
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 873 -j ACCEPT
添加之后需要重启iptables才生效(/etc/init.d/iptables restart)。如果我们没有设置iptables那就不需要设置端口,有些人都全开着。
第二、配置备份服务器rsync
无论是A主服务器,还是B备份服务器或者其他多个备份服务器,我们都需要配置rsync环境的。我们这里先来配置备份服务器。
1、安装rsync
yum install rsync xinetd -y
2、配置/etc/xinetd.d/rsync
这里我们将文件中的参数disable修改成no,后保存退出。
3、创建rsyncd.conf文件和参数设置
vi /etc/rsyncd.conf
创建配置文件,然后复制下面参数,已经对应自己修改。
#默认不需要修改
log file = /var/log/rsyncd.log
pidfile = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
secrets file = /etc/rsync.pass
motd file = /etc/rsyncd.Motd#模块名称任意,但需要一致
[www.itbulu.com]#备份服务器路径
path = /home/backup#对应上面模块名称
comment = www.itbulu.com#默认不要修改
uid = root
gid = root
port=873
use chroot = no
read only = no
list = no
max connections = 200
timeout = 600#创建一个用户名称,需要保持后面还有的名称一致
auth users = www.itbulu.com_user#主服务器IP地址
hosts allow = 11.11.11.11
4、创建rsync.pass文件
vi /etc/rsync.pass
创建密码配置文件,加入下面一行
www.itbulu.com_user:1234567890
格式要一致,中间是:隔开,前面是我们上面文件的用户名称,后面密码随意,后续我们需要一致。
5、设置配置文件权限
chmod 600 /etc/rsyncd.conf
chmod 600 /etc/rsync.pass
6、重新启动rsync
service xinetd restart
第三、主服务器配置rsync
一般我们的CentOS6服务器默认是已经安装rsync的,不管这些了,我们重新安装即可。到主服务器中,我们一样需要安装rsync。
1、安装rsync
yum install rsync xinetd -y
2、配置/etc/xinetd.d/rsync
这里我们将文件中的参数disable修改成no,后保存退出。
3、创建密钥匹配文件
vi /etc/passwd.txt
里面输入我们上面备份服务器中一致的密码1234567890,然后保存退出。
4、授权配置权限
chmod 600 /etc/passwd.txt
这个时候我们2台服务器已经配置完毕,我们需要检测rsync是否可以同步。
第四、手动检测rsync是否同步
我们在主服务器中/home/itbulu.com目录中先放几个文件,同时确保备份服务器中/home/backup目录存在,然后执行脚本检测是否成功。
rsync -avH --port=873 --progress --delete /home/itbulu.com www.itbulu.com_user@22.22.22.22::www.itbulu.com --password-file=/etc/passwd.txt
这里老蒋操作执行后是没有问题的,说明rsync配置没有问题,第一部分还算顺利(其实在完成文章撰写之前已经琢磨好几天)。后续再更新配置inotify-tools自动实时同步的过程。
本文出处:老蒋部落 » Linux服务器利用rsync+inotify-tools实时同步备份 - rsync配置篇 | 欢迎分享( 公众号:老蒋朋友圈 )