当前位置 : 主页 > 网络编程 > 其它编程 >

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

来源:互联网 收集:自由互联 发布时间:2023-07-02
实时同步确保主服务器故障时将丢失数据的风险降到最低实现原理就是当主服务器接收到数据时同时复制到另一服务器上确保有多一份数据。用到的工 实时同步确保主服务器故障时将丢
实时同步确保主服务器故障时将丢失数据的风险降到最低实现原理就是当主服务器接收到数据时同时复制到另一服务器上确保有多一份数据。用到的工

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

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

当inotify运行时会时刻监控着文件系统(inode、block等属性)

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

3b4896b5383c84fd8ef9a5fd93410183.png

部署

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

内核从2.6.13起加入inotify

出现如下所示则表示支持

24ccb815fb39d63366e71e421b750057.png

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

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

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

否则可能出现这个错误

538e6bbd957e51d0eba6e1585fc2ac32.png

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

7592d6eb87013d25ed1d4ee762a55a76.png

安装命令

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后面的

fa14c62f024d80ced19b9fb8ce8d0685.png

测试

开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定义的时间格式

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

5489d607d26364b6030e5202886fb484.png

[[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 网络转载请说明出处】
上一篇:nmap输出格式过滤小工具
下一篇:没有了
网友评论