day36-sersync实现实时备份

2019-04-21  本文已影响0人  Diudiu_0588

在网站集群架构中,数据永远是网站最重要的,一旦数据造成丢失,将会给企业造成巨大损失,因此,企业网站和应用需要有完善的数据备份方案确保数据安全。在真实企业中,数据备份方案通常有以下几种情况:

实时复制细节实现说明


提示:根据实时复制原理描述,可发现rsync备份服务器是需要先行搭建的:搭建完成rsync备份服务器后,在进行实时复制软件服务的部署。


软件服务 依赖程序 部署难点 说明
inotify-tools rsync守护进程服务 复制脚本编写 监控目录数据变化,实时数据复制
sersync rsync守护进程服务 配置文件编写 监控目录数据变化,实时数据复制

inotify机制简介
Inotify是一种异步的件系统事件监控机制, Linux内核从2.6.13起,加入了Inotify支持,通过Inotify可以监控文件系统中添加、删除,修改、移动等各种事件,利用这个内核接口,第三方软件就可以监控文件系统下·文件的各种变化情况,而inotify-tools正是实施这样监控的软件。实际上inotify-tools是一个监控指定目录数据实时变化的软件程序。
Inotify程序原理是一种事件驱动机制,它为应用程序监控文件系统事件提供了实时响应事件的机制,可以做到对事件处理的实时响应。
inotify的实现有几款软件: inotify-tools, sersync.Irsyncd.

inotify机制优点
监控文件系统事件变化,通过复制工具实现实时数据复制
支持多线程实时复制
inotify机制缺点
实则并发如果大于200个文件(10k-100k),复制会有延迟

可以用来限制通过inotify接口消耗内核内存的数量;更详细信息参见man手册7级别inotify说明。上述三个文件的说明如下:
max user-watches: 设置inotifywait或inotifywatch命令可以监视的文件数量(单进程)
max user instances: 设置每个用户可以运行的inotifywait或inotifywatch命令的进程数
max queuedevents: 设置inotify实例事件(event)队列可容纳的事件数量


image.png

[root@nfs01 /]# rpm -ql inotify-tools
/usr/bin/inotifywait
/usr/bin/inotifywatch

image.png

在inotitfy-tools软件部署完毕后,主要应用两个命令实现数据信息的监控,一个利用inotifywait命令实现对数据变化事件的监控,另一个利用inotifywatch命令实现对数据事件信息统计。这两个命令是能够应用好 inotify-tools软件的关键,下面对这两个软件说明如下:

命令参数 参数说明
-m|--monitor 始终保持事件监听状态(重要参数)
-d|--daemon 类似于-m参数,只是将命令运行在后台记录触发的事件信息
在指定文件中,利用--outfile参数定义程序日志使用--syslog参数
-r 递归监控目录数据信息变化(重要参数)
-o|--outfile <file> 打印事件到文件中,相当于标准正确输出
-sl--syslog 发送错误到syslog相当于标准错误输出。
-q|--quiet 输出信息少(只打印事件信息)
--excludei<pattern> 排除文件或目录时,不区分大小写
--timefmt <fmt> 指定时间输出的格式
--format <fmt 打印使用指定的输出类似格式字符串;即实际监控输出的内容
-e 指定监听指定的事件,如果省略,表示所有事件都进行监听。(重要参数)
事件名称 事件说明
access 文件或目录内容被读取
modify 文件或目录内容被写入
attrib 文件或目录属性改变
close_write 文件或目录关闭,在写入模式打开之后关闭的。(重要参数)
close_nowrite 文件或目录关闭,在只读模式打开之后关闭的
close 文件或目录关闭,不管读或是写模式
open 文件或目录被打开
moved_to 文件或目录被移动到监控的目录中
moved_from 文件或目录从监控的目录中被移除
move 文件或目录不管移动到或是移动出监控目录都触发事件
create 文件或目录创建在监控的目录中(重要参数)
delete 文件或目录被删除在监控的目录中(重要参数)
delete_self 文件或目录被删除
umount 文件系统包含的文件或目录不能卸载

使用下列脚本文件

#!/bin/sh
cmd="/usr/bin/inotifywait"
$cmd -mrq --format '%w%f' -e close_write,delete /data|\
while read line
do
 [ ! -e "$line" ] && cd /data/  &&\
 rsync -az --delete ./ rsync_backup@172.16.1.12::backup && continue
 rsync -az --delete $line rsync_backup@172.16.1.12::backup
done
相比上面两个项目, sersync项目的优点是:
上一篇下一篇

猜你喜欢

热点阅读