实时同步工具原理解释及环境准备inotify
admin
2023-02-23 14:00:05
0

实时同步,确保主服务器故障时将丢失数据的风险降到最低,实现原理就是当主服务器接收到数据时同时复制到另一服务器上,确保有多一份数据。

用到的工具:inotify或者sersync,这次使用inotify演示。

inotify运行时会时刻监控着文件系统(inodeblock等属性)

 

inotify监控到目录有增加、修改、删除、移动操作时会调用rsync命令将目录传输到热备器上。

实时同步工具原理解释及环境准备inotify

 

部署:

安装inotify,检查系统是否支持inotify

Linux内核从2.6.13起加入inotify

出现如下所示则表示支持

实时同步工具原理解释及环境准备inotify

 

自带ISO没有inotify,需要自己下载

https://github.s3.amazonaws.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz

 

安装inotify需要C编译器支持,需要提前安装gcc编译器

否则可能出现这个错误

实时同步工具原理解释及环境准备inotify

 

可以使用echo $?查看是否有错误 0没错误 1有错误

实时同步工具原理解释及环境准备inotify

安装命令:

tar zxf inotify-tools-3.14.tar.gz

cd inotify-tools-3.14/

./configure --prefix=/usr/local/inotify-tools-3.14

echo $?

make && make install

echo $?

ln -s /usr/local/inotify-tools-3.14/ /usr/local/inotify-tools

ls /usr/local/inotify-tools

history

 

一共安装了2个工具(命令),inotifywaitinotifywatch

Inotifywait:在被监控的文件或目录上等待特定文件系统事件(openclosedelete等)发生,执行后处于阻塞状态,适合在shell脚本中使用。(监控文件状态)

Inotifywatch:收集被监视的文件系统使用度统计数据,指文件系统时间发生的次数统计。

 

Inotifywait

参数解析:

-r      递归查询目录

-q      打印很少的信息,仅打印监控事件的信息

-m    始终保持事件监听状态

--excludei          排除文件或目录时,不区分大小写

--timefmt          指定时间输出的格式

–format:
%w
表示发生事件的目录
%f
表示发生事件的文件
%e
表示发生的事件
%Xe
事件以“X”分隔
%T
使用由–timefmt
定义的时间格式

-e 事件

以下选项都是接在-e 后面的

实时同步工具原理解释及环境准备inotify

 

测试:

2个创建一直监控一直执行

[root@nfs-server ~]# /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
定义的时间格式

 

 

当我创建文件的是时候会自动记录。

实时同步工具原理解释及环境准备inotify

 [root@nfs-server ~]# /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 &&

 rsync -az ./ --delete rsync_backup@192.168.24.32::backup \

 --password-file=/etc/rsync.password

done

全路径后台运行该脚本,并且写入rc.local

 /bin/sh /rsync.sh &

 

这步完成后,基本上每当/data这个目录有增删改都会自动同步到backup服务器上的/backup/data目录上

 

应用场景200~300并发以内可以使用这套方案(中小型企业)。

 

 

实时同步优化及应用极限建议

 

/proc/sys/fs/inotify目录下有三个文件,对inotify’机制有一定的限制

Max_user_watches:设置inotifywaitinotifywatch命令可以监视的文件数量(单进程)

Max_user_instances:设置每个用户可以允许的inotifywaitinotifywatch命令的进程数

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)默认多线程同步。

 

相关内容

热门资讯

【第一资讯】“福建大菠萝.有没... 您好:福建大菠萝这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9752949】很多玩家在这款游...
我来教教您“桂麻圈.可以开挂吗... 您好:桂麻圈这款游戏可以开挂,确实是有挂的,需要了解加客服微信【4282891】很多玩家在这款游戏中...
终于了解“旺旺福建麻将.是不是... 有 亲,根据资深记者爆料旺旺福建麻将是可以开挂的,确实有挂(咨询软件无需...
商业航天组网加速,核聚变订单有... 来源:中国能源网 开源证券近日发布国防军工行业点评报告:12月6日,长征八号甲成功将第14组星网卫星...
从尝鲜到刚需 智元姜青松:机器... 来源:市场资讯 (来源:网易科技报道) 12月22日,全国首个开放式机器人租赁平台“擎天租”在上海正...
玩家攻略科普“天天十三水.开挂... 网上科普关于“天天十三水有没有挂”话题很是火热,小编也是针对天天十三水作*弊开挂的方法以及开挂对应的...
【第一资讯】“小乐红中麻将.有... 有 亲,根据资深记者爆料小乐红中麻将是可以开挂的,确实有挂(咨询软件无需...
玩家攻略科普“西域棋牌.怎么开... 家人们!今天小编来为大家解答西域棋牌透视挂怎么安装这个问题咨询软件客服徽4282891的挂在哪里买很...
【第一资讯】“新蜜瓜拼十.是不... 网上科普关于“新蜜瓜拼十有没有挂”话题很是火热,小编也是针对新蜜瓜拼十作*弊开挂的方法以及开挂对应的...
今日重大消息“西兵互娱.有没有... 网上科普关于“西兵互娱有没有挂”话题很是火热,小编也是针对西兵互娱作*弊开挂的方法以及开挂对应的知识...