实时同步确保主服务器故障时将丢失数据的风险降到最低实现原理就是当主服务器接收到数据时同时复制到另一服务器上确保有多一份数据。
用到的工具inotify或者sersync这次使用inotify演示。
当inotify运行时会时刻监控着文件系统(inode、block等属性)
当inotify监控到目录有增加、修改、删除、移动操作时会调用rsync命令将目录传输到热备器上。
部署
安装inotify检查系统是否支持inotify
内核从2.6.13起加入inotify
出现如下所示则表示支持
自带ISO没有inotify需要自己下载
https://github.s3.amazonaws.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
安装inotify需要C编译器支持需要提前安装gcc编译器
否则可能出现这个错误
可以使用echo $?查看是否有错误 0没错误 1有错误
安装命令
tar zxf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14/
./configure --prefix/usr/local/inotify-tools-3.14
echo $?
make inotifywait和inotifywatch
Inotifywait在被监控的文件或目录上等待特定文件系统事件(open、close、delete等)发生执行后处于阻塞状态适合在shell脚本中使用。(监控文件状态)
Inotifywatch:收集被监视的文件系统使用度统计数据指文件系统时间发生的次数统计。
Inotifywait
参数解析
-r递归查询目录
-q打印很少的信息仅打印监控事件的信息
-m始终保持事件监听状态
--excludei排除文件或目录时不区分大小写
--timefmt指定时间输出的格式
–format:%w表示发生事件的目录
%f表示发生事件的文件
%e表示发生的事件
%Xe事件以“X”分隔
%T使用由–timefmt定义的时间格式
-e事件
以下选项都是接在-e后面的
测试
开2个创建一直监控一直执行
[[email protected] ~]# /usr/local/inotify-tools/bin/inotifywait -mrq --timefmt %d/%m/%y %H:%M --format %T %w%f -e create /data
其中参数解释
-r递归查询目录
-q打印很少的信息仅打印监控事件的信息
-m始终保持事件监听状态
Timefmt时间戳格式 “日月年 时分”
–format:%w表示发生事件的目录
%f表示发生事件的文件
%T使用由–timefmt定义的时间格式
当我创建文件的是时候会自动记录。
[[email protected] ~]# /usr/local/inotify-tools/bin/inotifywait -mrq --timefmt %d/%m/%y %H:%M --format %T %e:%w%f -e create /data
22/11/19 11:21 CREATE:/data/12345.txt
创建脚本当监控到文件有变化时自动同步.
#!/bin/bash
inotify/usr/local/inotify-tools/bin/inotifywait
$inotify -mrq --format %w%f -e create,close_write,delete /data \
|while read file
do
cd /data /etc/rsync.password
done
全路径后台运行该脚本并且写入rc.local
/bin/sh /rsync.sh 基本上每当/data这个目录有增删改都会自动同步到backup服务器上的/backup/data目录上
应用场景200~300并发以内可以使用这套方案(中小型企业)。‘
实时同步优化及应用极限建议
/proc/sys/fs/inotify目录下有三个文件对inotify’机制有一定的限制
Max_user_watches设置inotifywait或inotifywatch命令可以监视的文件数量(单进程)
Max_user_instances设置每个用户可以允许的inotifywait或inotifywatch命令的进程数
Max_queued_events设置inotify实例时间(event)队列可容纳的时间数量。
Inotify优点
1)实时数据同步
Inotify缺点
1)并发如果大于200个文件(10-100K)同步就会有延迟。
2)监控到事件后调用rsync同步是单进程的(加sersync多进程同步。既然有了inotify-tools为什么还要sersync
Sersync功能多
1)配置文件。
2)真正的守护进程socket。
3)可以对失败文件定时重传(定时任务)。
4)第三方的HTTP接口。
5)默认多线程同步。
【文章转东台网页制作公司 http://www.1234xp.com/dongtai.html 网络转载请说明出处】