inotify

inotify简介

可以监控文件系统的变动情况,并做出通知响应

 #调整inotify内核参数(优化)
 letc/ sysctl.conf(内核参数配置文件)3 inotifywait:    #用于持续监控,实时输出结果
 inotifywatch:   #用于短期监控,任务完成后再输出结果
 max_queue_events   #监控事件队列大小
 max_user instances      #最多监控实例数,可以看成最多可以监控多少个实例
 max_user_watches        #每个实例最多监控文件数
 inotifywait格式参数
 常见参数    说明
 -m          持续进行监控
 -r          递归监控所有子对象
 -q          简化输出信息
 -e          指定要监控哪些事件类型(*)

配置Rsync+Inotify 实时同步

  • 使用inotify通知接口,可以用来监控文件系统的各种变化情况,如文件存取、删除、移动、修改等。利用这一机制,可以非常方便地实现文件异动告警、增量备份,并针对目录或文件的变化及时作出响应。
  • 将inotify机制与rsync工具相结合,可以实现触发式备份(实时同步),即只要原始位置的文档发生变化,则立即启动增量备份操作;否则处于静默等待状态。
  • 因为 inotify 通知机制由 Linux 内核提供,因此主要做本机监控,在触发式备份中应用时更适合上行同步

Master关闭只读模式并为共享目录赋权

Master(192.168.239.7)

vim /etc/rsyncd.conf
read only = no
#关闭只读模式,否则将不可写入


kill `cat /var/run/rsyncd.pid`
#修改完配置文件需要重启服务,这里采用直接杀掉进程号的方式

netstat -natp | grep rsync
#检查一下服务是否已被终止

rsync --daemon
netstat -natp | grep rsync
#再次开启服务并检查端口号确认

 

优化Slave内核参数

Slave(192.168.239.8)

  cat /proc/sys/fs/inotify/max_queued_events      #监控事件队列
  cat /proc/sys/fs/inotify/max_user_instances     #最多监控实例数
  cat /proc/sys/fs/inotify/max_user_watches       #每个实例最多监控文件数
  
  vim /etc/sysctl.conf         #加大每个参数
  fs.inotify.max_queued_events = 16384
  fs.inotify.max_user_instances = 1024
  fs.inotify.max_user_watches = 1048576
  #当要监控的目录、文件数据量较多或者变化频繁时,建议加大参数值
 
  sysctl -p
  #刷新

 

 

 

客户端(192.168.239.8):编译安装inotify-tools

  yum install -y gcc gcc-c++ 
  #安装gcc gcc-c++ 
  
  cd /opt
  #切换至/opt上传inotify-tools安装包
  
  tar zxf inotify-tools-3.14.tar.gz 
  #解压
  
 cd /opt/inotify-tools-3.14/
 ./configure
 make -j 4 && make install
 #编译安装

 

 

客户端启动监听

1 #持续监听对/abc的modify,create,move,delete操作
2 inotifywait -mrq -e modify,create,delete /abc

 

编写触发同步脚本

vim /opt/inotify.sh
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e create,delete,move,modify,attrib /opt/abc/"
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /opt/abc/ backuper@192.168.239.7::wwwroot"

$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
    if [ $(pgrep rsync | wc -l) -le 0 ] ; then
        $RSYNC_CMD
    fi
done
----详解----
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e create,delete,move,modify,attrib /opt/abc/"
#INOTIFY_CMD变量:持续监控 /opt/abc目录中的创建,删除,移动,修改,改变时间的操作
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /opt/abc/ xixi@192.168.59.111::wwwroot"
#RSYNC_CMD变量:使 xixi 用户,/etc/server.pass 密钥文件,将 /opt/xcf1 目录下的文件进行压缩,归档,保留硬链接文件同步至 192.168.59.111 的共享模块定义的目录 /var/www/html 下,并删除差异性内容,保持一致性

$INOTIFY_CMD | while read DIRECTORY EVENT FILE        #持续监控...
do
    if [ $(pgrep rsync | wc -l) -le 0 ] ; then        #如果服务并未启动,则执行同步
        $RSYNC_CMD
    fi
done
----

cd /opt/
chmod +x inotify.sh
#给脚本赋权

chmod +x /etc/rc.d/rc.local 
echo "/opt/inotify.sh" >> /etc/rc.d/rc.local 
#设置开机自启动

sh -x inotify.sh
#执行脚本

cd /opt/abc
touch jingjing.html
rm -rf jiang.html
#创建一个新的html文件并删除之前的qwe
ls
#再次确认一下

 

rsync的应用场景

1、增量同步

2、备份/迁移:可以作为辅助工具(mysql 主从复制 rsync +inotify ——》趋于一致 双向同步——MM,但是只能在并发量不大的时候可以用)

3、假设mysql 从主机A迁移到主机B(一主两从模式)

一主两从模式迁移方案

①确定迁移的时间、业务线停止的时间、要写文档描述具体操作,要发邮件审批

②确认迁移后的节点的环境问题(资源环境 + 系统依赖环境 + mysql内部的格式环境 ------1)例如自增长,自增长可能会导致主从复制不一致的情况 2)版本迁移问题,比如说低版本向高版本迁移。两个版本中的差异比较大,数据迁移比较重要,需要和研发沟通,让研发开发一个工具,让低版本可以转成高版本工具格式,使用工具迁移)

③ 如果数据库是相同版本,可以用rsync + inotify持续同步

④ 测试、之前还要编写回滚方案

⑤ 提交检修申请 22:00 - 00:00

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Inotify是一种文件系统变化通知机制,可以即刻反映文件或文件夹的增删等事件在用户空间中。它是Linux内核从2.6.13版本开始引入的一种强大的、细粒度的、异步的文件系统事件监控机制。通过Inotify,第三方软件可以监控文件系统中文件的各种变化情况,包括添加、删除、移动和修改等。使用Inotify可以检测单个文件的变化,也可以监控整个目录。当监控目录时,目录本身和目录下的内容都会成为监控的对象。可以使用select、poll、epoll等接口监听Inotify文件描述符的可读事件,当有事件发生时,程序可以及时处理。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Linux inotify](https://download.csdn.net/download/chenggong526214/8942667)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [linux - inotify](https://blog.csdn.net/iteye_12332/article/details/82511287)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Linux Inotify详解和使用](https://blog.csdn.net/zhanglei_admin/article/details/97636301)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值