Rsync多服务器互为备份方案
功能目的
功能:
实现两台(多台)服务器互为备份,且当一台服务器文件新增时另一台也会及时同步,并且仅仅对新增的文件进行备份
实现原理:
方案基于rsync工具实现。
将AB两台服务器都安装rsync工具,执行命令互相拉取对方指定目录下的文件,实现两台服务器文件一致。再结合crontabl定时任务将命令作为守护进程定时执行,以达到如一台服务器新增文件时,能及时同步到其他服务器中的效果
使用场景:
本方案未使用实时同步功能,可适用于文件变化量不是特别大的情况
Rsync一般为centos7以上自带工具,使用方便快捷,适用于大多容灾备份数需求。
操作步骤:(两台进行相同配置)
1、安装rsync:(使用ROOT用户)
yum -y install rsync
2、修改rsync配置文件
vim /etc/rsyncd.conf
uid = reko
gid = reko
use chroot = yes/no //是否给与root权限
max connections = 30 //最大连接数
ready only = no //是否只读
port = 873 //端口号
pid file = /var/run/rsyncd.pid //运行时的PID文件
log file = /var/log/rsyncd.log //日志文件
lock file = /var/runrsyncd.lock
#主机连接限制,按需分配
#limit access
host allow=192.168.2.10 192.168.2.11 //每个IP中间以空格分隔
#host deny=
exclude = lost+found/
transfer logging = yes
timeout = 900 //超时时长
#以下为具体的模块配置
[test]
path = /test/reko //该分组下的工作目录
comment = ftp export area
auth users = reko //鉴权用户
secrets file = /etc/rsyncd.pass //指定用户密码文件
3、设置用户密码文件 (使用ROOT用户)
echo “reko:123456” > /etc/rsyncd.pass //本地用户的密码文件
chmod 600 /etc/rsyncd.pass
4、设置用户登陆密码文件 (使用ROOT用户)
echo “123456” > /etc/rsyncd.pass1 //本地储存对方用户的密码
chmod 600 /etc/rsyncd.pass1
5、创建工作目录 (使用reko用户)
mkdir -p /test/reko
6、启动rsync服务 (使用root用户)
systemctl start rsyncd
7、新建文件测试
在主机A上创建文件 //使用reko用户执行
touch test.txt
在主机B上执行命令 //使用root用户执行
rsync -avz --password-file=/etc/rsyncd.pass1 reko@172.16.16.101::test /test/reko/
测试从B主机拉取A主机文件,反之亦然
8、创建定时任务每分钟同步一次(使用root用户)
crontab -e
* * * * * cd /usr/bin/ && nohup rsync -avz --password-file=/etc/rsyncd.pass1 reko@172.16.16.101::test /test/reko/ &
操作完成后,使用reko用户上传文件即可
注1:当rsync所同步的文件夹每次更新的文件教大时,适当延长定时任务的执行时间,否则会出现服务或服务器异常,比如CPU持续过高等异常情况。定时任务的执行间隔按照实际情况设定。
注2:当同步目录中有其他用户上传的文件需要同步时,可将其他用户的附加组加上reko
注3:reko@172.16.16.101::test
为用户,对端ip、模块名;/test/reko/
为本地贮存目录