Rsync+inotify实现数据实时备份

inotify介绍

inotify是一种强大的异步的文件系统事件监控机制。通过inotify可以监控文件系统中添加,删除,修改,移动等各种事件。在linux中的安装包名是inotify-tools。inotify-tools需要2.6.13以上的内核支持

rsync介绍

rsync是linux系统下的数据镜像备份工具,支持增量备份,比cp,scp等命令要强大的

原理介绍

通过inotify监控要实现实时备份的目录,发生变化就执行rsync推送到备份服务器上

环境介绍

数据发生变化的服务器(nfs01)
在这里插入图片描述
备份服务器(backup)
在这里插入图片描述

第一步

实现从nfs客户端到rsync服务端的rsync服务部署,即将数据推送到备份服务器这一功能的实现,简略说一下
服务端:rsync --daemon搭建
/etc/rsyncd.conf 环境配置
/etc/rsync.password 用户及密码配置
用户密码等文件的权限配置
创建rsync用户,设置为虚拟用户
服务端备份数据存放的文件夹创建,权限及用户组的配置

客户端:安装rsync
配置/etc/rsync.password 配置用户密码
密码文件权限配置

第二步

实现nfs客户端对nfs目录文件系统事件的实时监控
查看系统是否支持inotify
查看内核版本
在这里插入图片描述
或有无下面这个文件夹
在这里插入图片描述

通过rpm检查客户端是否安装inotify工具(我这是提前装过)
在这里插入图片描述
yum安装
在这里插入图片描述
在这里插入图片描述
安装完后有两个命令
inotifywait
inotifywatch
在这里插入图片描述
可以通过–help来查询具体用法

inotifywait:在被监控的文件或目录上等待特定文件系统事件(open.close.delete等)发生,执行后处于阻塞状态,适合在shell脚本中使用。
inotifywatch:收集被监视的文件系统使用度统计数据,指文件系统事件发生的次数统计

  • inotify系统参数
    inotify定义了一些系统参数用来限制inotify消耗内存的大小,参数设置文件在/proc/sys/fs/inotify下

  • max_queued_events值:设置inotify实例事件(event)队列可容纳的事件数量

  • max_user_instances值:设置每个用户可以运行的inotifywait或inotifywath命令的进程数

  • max_user_watches值:设置inotifywait或inotifywath命令可以监视的文件数量(单进程)

  • inotifywait相关参数

         -m:–monitor,表示始终保持事件监听状态
         -r:–recursive,表示递归查询目录
         -q:–quiet,表示打印出监控事件
         -e:–event,通过这个参数可以指定要监控的事件,常见的事件有modify,delete,create,和attrib等
         –timefmt:指定时间的输出格式
         –format:指定变化文件的详细信息
    

例:监控nfs01下的/backup目录
在这里插入图片描述
输出信息是按照–format参数设置的顺序来的
在这里插入图片描述Rsync+inotify实现数据实时备份_第1张图片%T显示时间,是由–timefmt来指定格式的

第三步

当inotify监控到nfs目录文件系统发生变化后,触发rsync推送变化的内容
这就需要脚本来实现了
创建脚本文件(脚本文件规范放在/server/scripts),在nfs01上创建脚本inotify.sh
在这里插入图片描述
vim编辑脚本
Rsync+inotify实现数据实时备份_第2张图片
这就是简单的shell编程,看不懂没关系,理解原理,后面再了解shell就行。
上面红框里就是inotify+rsync配合起来实现实时备份的命令
执行脚本并查看过程
Rsync+inotify实现数据实时备份_第3张图片
红框表示执行inotifywait命令监控nfs01根目录下data目录
在/data下进行写操作
在这里插入图片描述
inotifywait监控到/data/a发生变化
执行rsync推送a到backup备份服务器上的/nfsbackup目录内
并且继续监听
Rsync+inotify实现数据实时备份_第4张图片
查看推送过来的文件内容
Rsync+inotify实现数据实时备份_第5张图片

inotify调优

在/proc/sys/fs/fs/inotify 目录下有三个文件,对inotify机制有一定的限制,也就前上面说的inotify系统参数
调整
在这里插入图片描述
重启可能会失效,放进rc.local里
Rsync+inotify实现数据实时备份_第6张图片
经过测试,每秒200个文件并发,数据同步几乎无延迟(小于1s)
inotify优点

  • 监控文件系统事件变化,通过同步工具实现数据同步
    inotify缺点
  • 并发如果大于200个文件(10-100k),同步就会有延迟
  • 监控到事件后,调用rsync同步是单进程的(在脚本的rsync推送命令后加&,并发,在后台运行)。sersync可以多进程同步

serync功能多

  • 支持配置文件管理
  • 真正的守护进程socket
  • 可以对失败文件定时重传(定时任务功能)
  • 第三方的HTTP接口(例如更新cdn缓存)
  • 默认多线程rsync同步
    Rsync+inotify实现数据实时备份_第7张图片

你可能感兴趣的:(Linux基础知识,linux基础知识)