rsync+inotify实现实时同步案例
2015-07-16 10:48
176 查看
随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足,首先,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输。如果文件数量达到了百万甚至千万量级,扫描所有文件将是非常耗时的。而且正在发生变化的往往是其中很少的一部分,这是非常低效的方式。其次,rsync不能实时的去监测、同步数据,虽然它可以通过linux守护进程的方式进行触发同步,但是两次触发动作一定会有时间差,这样就导致了服务端和客户端数据可能出现不一致,无法在应用故障时完全的恢复数据。基于以上原因,rsync+inotify组合出现了!
1.1 inotify介绍
2.1 rsync+inotify同步逻辑图
3.1 环境部署
4.1 inotify-slave部署
4.1.1检查是否安装rsync
4.1.2 新建rsync用户及模块目录并更改其用户组
4.1.3 编写rsync daemon配置文件/etc/rsyncd.conf
4.1.4 配置虚拟用户的密码文件
4.1.5 启动rsync 服务
4.1.6 通过inotify-master测试推送
5.1 inotify-master部署
5.1.1 查看当前系统是否支持inotify
5.1.2 下载inotify源码包并编译安装
5.1.3 inotify之inotifywait命令常用参数详解
5.1.4 编写监控脚本并加载到后台执行
5.1.5 实时同步测试
1.1 inotify介绍
inotify是一种强大的、细粒度的、异步的文件系统事件控制机制。linux内核从2.6.13起,加入了inotify支持,通过inotify可以监控文件系统中添加、删除、修改、移动等各种事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而inotify-tools正是实施监控的软件。
2.1 rsync+inotify同步逻辑图
3.1 环境部署
主机名 | 主机IP地址 | 系统版本 | 系统内核版本 |
inotify-master | 192.168.1.128 | CentOS release 6.4 (Final) | 2.6.32-358.el6.x86_64 |
inotify-slave | 192.168.1.160 | CentOS release 6.4 (Final) | 2.6.32-358.el6.x86_64 |
这里就是部署rsync服务,rsync daemon工作模式。
4.1.1检查是否安装rsync
inotify-master配置密码文件,测试推送
注:
inotify是rsync客户端安装和执行的
企业场景压力测试200-300个同步限制,受网卡,磁盘,带宽等的制约。
5.1.1 查看当前系统是否支持inotify
/proc/sys/fs/inotify/max_queued_evnets
表示调用inotify_init时分配给inotify instance中可排队的event的数目的最大值,超出这个值的事件被丢弃,但会触发IN_Q_OVERFLOW事件。
/proc/sys/fs/inotify/max_user_instances
表示每一个real user ID可创建的inotify instatnces的数量上限。
/proc/sys/fs/inotify/max_user_watches
表示每个inotify instatnces可监控的最大目录数量。如果监控的文件数目巨大,需要根据情况,适当增加此值的大小。
例如: echo 30000000 > /proc/sys/fs/inotify/max_user_watches
5.1.2 下载inotify源码包并编译安装
inotify-master操作:
分类: linux学习
相关文章推荐
- 《Spring技术内幕》学习笔记3——IoC容器载入Bean定义资源文件
- Npoi导入导出Execl
- cc_美团 商品详情图片放大显示ViewPager
- Linux内核模块的编译基础知识
- javap -c命令详解
- 《Spring技术内幕》学习笔记1——IoC容器体系结构
- 《Spring技术内幕》学习笔记2——IoC定位Bean定义资源
- 【求职必备】知名互联网公司常见面试问题和应答策略--通用篇
- 拉伸按钮背景图片:stretchableImageWithLeftCapWidth:
- 1.6 文件依赖中的占位符的用法
- commons configuration的简单使用和说明
- {Latex}{Tabular}文本超出表格自动换行
- linux select 学习
- #leetcode#Product of Array Except Self
- mysql如收集统计信息
- 优衣库视频门危机公关被批不合格
- C++实现简易log日志系统
- Jump Game
- asp.net web生命周期和viewstate和loadpostdata小记
- Connection is read-only. Queries leading to data modification are not allowed