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

实时同步,确保主服务器故障时将丢失数据的风险降到最低,实现原理就是当主服务器接收到数据时同时复制到另一服务器上,确保有多一份数据。
用到的工具:inotify或者sersync,这次使用inotify演示。

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

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

image

部署:

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

Linux内核从2.6.13起加入inotify

出现如下所示则表示支持

image

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

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

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

否则可能出现这个错误

image

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

image

安装命令:

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个工具(命令),inotifywait和inotifywatch

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

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

Inotifywait

参数解析:

-r 递归查询目录

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

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

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

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

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

-e 事件

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

image

测试:

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

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

image

[[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 &&

rsync -az ./ --delete [email protected]::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:设置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)默认多线程同步。

原文地址:https://blog.51cto.com/14641702/2459667

时间: 2024-10-11 06:40:57

实时同步工具原理解释及环境准备inotify的相关文章

Inotify+rsync实时同步工具实战

Inotify+rsync实时同步工具实战 分别有机器:server-178/24,client-b-179/24,client-c-180/24 中心分发服务器Master:client-c-180/24 备份服务器    :client-b-179/24和server-178/24 基于备份服务器已经提供rsync --daemon的基础上,在中心分发服务器(rsync客户端)配置inotify,监控的目录设置为/www/ 1.查看当前系统是否支持inotify ls -l /proc/sy

局域网文件实时同步工具

自同步软件是一款自同步是最好用的局域网文件实时同步工具.软件使用方便.同步快速,并且支持五大平台,包括windows.mac.linux.android和IOS(未发布).轻松实现多设备之间的无线数据同步,无需注册下载即用,简单与智慧并存,安全与极速并重,您居家办公必备的之神器. 自同步软件特点1.全平台覆盖. 包揽所有平台,让跨平台使用数据不在那么遥远.你不必担心在Windows.Linux.Mac多平台间的数据传递:更不必担心在电脑.手机.平板等多设备间传输文件的跨平台问题. 自同步全平台覆

14,Lsyncd实时同步工具服务

1,lsyncd实时同步工具 1)lsyncd实际上是lua语言封装了inotify和rsync工具,采用了Linux内核(2.6.13以后里的) inofify触发机制然后通过rsync去差异同步,达到实时的效果,它最厉害的地方是完美解决 了inotify+rsync的海量文件同步带来的文件频繁发生文件列表问题.其次配置方式简单.2,安装 yum -y install lsyncd3,创建配置文件(配置文件里原是无用信息)1)配置文件信息解析: 参考博客:https://www.cnblogs

lsyncd实时同步工具

首先介绍一下架构 有3台app服务器,每次上线,是通过shell脚本将代码传输至app_1 然后app_1自动同步到app_2和app_3 最开始的同步策略是rsync+inotify 用了一段时间,发现有时会出现app_2和app_3没有同步代码的问题. 发现是因为inotify的shell脚本,意外终止了. 后来发现有unison,测试发现,还是要写shell脚本 再后来sersync,这个是基于rsync的,需要有rsync客户端和服务端,比较麻烦 配置文件是xml. 最后用的是lsync

lsync目录文件实时同步工具

参考文档:https://vastxiao.github.io/article/2017/09/02/Linux/lsyncd_usage/ 防止连接丢失,已保存至百度网络-郑州-XXXXX 建议首先查看  参考文档连接,写的比较全了 1.简介 lsync 官网:https://axkibe.github.io/lsyncd/ Lysncd 实际上是lua语言封装了inotify和rsync工具,采用了Linux内核(2.6.13及以后)里的inotify触发机制,然后通过rsync去差异同步,

inotify实时同步工具理论和实战

inotify服务: 当用户在A服务器上操作了数据,inotify会抓取出来,然后通知rsync,然后同步到rsync服务器.所以inotify服务器却是rsync的客户端服务器. inotify性能比sersync强,inotify可能支持几百个图片,sersync可能一百所以就差不多了. 确认内核是否支持inotify 可通过ll /proc/sys/fs/inotify查看有三个文件即可. rz上传inotify软件包 tar xf inotify-tools-3.123.tar.gz c

inotify +rsync 实时同步

1.1 inotify简介 inotify是一种强大的,细粒度的,异步的文件系统时间监控机制,Linux内核从2.6.13加入了inotify支持,通过inotify可以监控文件系统汇中添加,删除,修改,移动等各种事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而inotify-tools正式实施这样的监控的软件,国人周洋在金山公司开发了类似的实时同步软件sersync. 1.1.1 安装inotify 在安装inotify-tools前请先确认你的Linux内核是否达

愚公oracle数据库同步工具

最近,利用一些时间对oracle数据库实时同步工具做了一些调研分析,主要关注了linkedin的databus和阿里的yugong两个中间件,其中databus需要在每个待同步的表上增加额外的列和触发器来实现,方案比较重,本文将着重分析一下阿里的yugong实现方案及给出分析调研报告. 1.yugong实时同步原理 使用了oracle的物化视图日志功能,类似于一个内部的触发器,原表的数据库需要对用户授权具有物化视图日志的创建和删除权限,关于物化视图日志的详细描述,可以参考下面的文章: http:

5、Sersync实时同步实战

1.实时同步概述 1.什么是实时同步, 只要当前目录发生变化则会触发一个事件,事件触发后将变化的目录同步至远程服务器. 2.为什么要实时同步, 保证数据的连续性, 减少人力维护成本, 解决nfs单点故障 3.实时同步实现原理, 实时同步需要借助 Inotify通知接口,用来监控目录的变化,如果监控的目录发生变更.则触发动作,这个动作可以是进行一次同步操作,或其他操作. 4.实时同步工具选择, 有sersync(√).inotify+rsync,通常我们会选择 sersync,因为 sersync