基于inotifywait +rsync实现数据的同步

准备:2台机器 a1(服务器端) 和 a2 (备份节点端)
1、在服务端生成密钥对,传输至备份节点用于实现免密登录
ssh-keygen -t rsa #在服务端a1上的操作
ssh-copy-id root@ip另一台 #把密钥放入另一台机器(a2)
2、在服务端安装inotify (此包需源码编译,需要可私信)
解压 并 ./configure 、make && make install
3、服务端做inotify的优化
vim /etc/sysctl.conf #优化项 可选做
fs.inotify.max_queued_events = 16384 #Inotify 管理的队列的最大长度,文件系统变化越频繁,这个值就应该越大
fs.inotify.max_user_instances = 1024 #一个 user 可创建的inotify instatnces的数量
fs.inotify.max_user_watches = 1048576 ## 每一个 Inotify 实例可监控的最大目录数
sysctl -p #刷新内核参数,使其生效
4、创建一个需要监控的目录,可以是已存在的,也可以是新创建的
mkdir /123 #比如在服务器端a1上创建一个目录为/123来做测试
5、在服务端创建一个脚本,用于持续监控和传输数据如下:vi /root/rsync.sh

a="inotifywait -mrq -e create,delete /123" 表示持续不断的监控/123目录,触发条件为当此目录发生创建,或删除操作时就触发
b="rsync -avz --delete /opt/paas/data/registry root@ip(此ip为数据备份节点的ip)?? " 使用rsync进行数据传输,
$a | while read DIRECTORY EVENTFILE
do
$b
done
6、执行此脚本并放入后台运行:
nuhup bash /root/rsync.sh &
7、执行验证操作,在 a1机器的/123目录下输入一个数据 touch time /123
8、登录到a2节点进入/123目录进行验证,查看是否有数据“time”,有的话表示数据同步成功

基于inotifywait +rsync实现数据的同步

上一篇:事务与锁


下一篇:QPS,TPS,并发用户数,吞吐量关系