2.8.3 实时数据传输项目部署
2.8.3.1 实时备份项目简介
项目概述
:确保指定备份目录中数据产生变化之后,服务端和本地可以实现实时同步,保证数据的一致性。
应用场景
:针对用户上传的数据,建议采用无差异实时同步备份。
2.8.3.2 实时备份部署过程
(1)确认如何实现监控数据变化的功能
inotify-tools
:可以实时监控数据是否发生变化。
(2)确认如何实现实时数据传输功能
利用脚本
文件实现同步数据;利用软件sersync
实现同步数据。
2.8.3.3 安装部署inotify-tools软件
yun install -y inotify-tools
:下载安装软件实时监控软件“inotify
”。
语法格式
:inotifywait 参数 被监控目录
inotifywait参数信息:
@
:等价于--exclude-from
可以将某些不需要监控的文件或者目录添加到一个文件内进行排除
。
--exclude
:可以忽略
某个文件或者目录不被监控
。
--excludei
:忽略
不需要监控文件的目录的名称大小写
。
-m|--monitor
:不间断监听
事件,没有这个参数会默认在监听到一个事件后会自动退出。
-d|--daemon
:类似“-m
”只不过是将监听结果输入到某个文件中。
-r|--recursive
:递归监控
,监控目录下的所有子目录。
-q|--quiet
:输出很少的信息,只监听事件
。
-qq
:什么都不输出,什么也不输出。
--format
:输出指定的格式类型, %e
记录时间
信息,%f
记录变化的文件
信息,%w
记录监控变化的目录
信息。%T
调用监控时间信息
--timefmt
:指定时间格式信息,%T%F%w
,与“date
”命令参数相同。
-c|--csv
:标准列表信息输出格式
,每列之间会以英文的逗号隔开。
扩展
:不同数据库对倒文件提前导出为csv格式
-t|--timeout
设置监控时间
,默认单位是秒,当时间设置为0则永不超时。
-e|--event
:指定监控事件
信息,多个状态时默认用逗号隔开。
PS:
实时监控需要关注的是增加、删除、修改、移动、重命名
。
inotify事件信息
access
:内容或目录内容被读取
modify
:文件或目录被写入
时
attrib
:文件或目录属性
被改变
时
close_write
:文件或目录被关闭时,在打开后并写入信息,文件被改动之后关闭
时。
close_nowrite
:文件或者目录被关闭时,打开
文件或者目录并未写入
时内容时。
close
:文件或者目录被关闭
时
open
:文件或者目录被打开
时
moved_to
:文件或者目录被移动到监控目录
moved_from
:文件或者目录从监控目录中移除
move
:文件或目录被移动,无论是移入还是移出
create
:创建目录或者文件
delete
:删除文件或者目录时
创建目录或文件状态之间转换
2.8.3.4 编写脚本实现监控目录实时备份文件
编写脚本注意事项
(1)注意监控文件夹的状态,不能有遗漏,一定要思考清楚。
(2)执行上传任务时,建议将输出信息追加到制定的文件中,因为在监控过程中很可能出现无法传输的现象,将错误和正确信息都追加到一个指定文件中可以方便查看排除错误。
(3)如需定时任务,注意环境变量问题。
注意:
在无差异执行任务时尽量避免无差异备份文件与定时备份文件存储在一个目录下,避免无差异操作失误将备份目录下的文件全部删除,并且在无差异同步的时候,如果是没有特殊需求一定不要在无差异目录后添加斜杠“/
”,避免删除其他的备份数数据。
#!/bin/bash#01.能够监控指定的目录的指定状态inotifywait -mqr --format "%w%f" -e\"close_write,moved_to,moved_from,delete,create" /data/ |\while read infodo rsync -az /data --delete rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password &>>/root/inotify_backup.logdone#此脚本的核心就是while read逐行读取,每读取一次都会执行一次循环内的命令#关于循环内的命令需要注意不要将重要的文件和无差异同步的内容放在一起,因为无差异拉去很可能会删除备份服务器的其他数据,所以无差异上传时不要在路径后边加上“/”
2.8.3.5 安装软件实现监控目录实时备份文件
常识扩展
守护进程
:为了完成某个目的一直运行的程序叫做守护进程
普通进程
:程序执行时出现,执行完毕后结束的叫普通进程
sersync软件安装
wget https://github.com/wsgzao/sersync/archive/master.zip
:使用wget
下载sersync
软件到当前目录。
unzip sersync.zip
:解压压缩包,到当前目录,如果没有安装inotify
和rsync
可以在利用解压出来的文件进行安装;如果已经安装,只需要将解压出来的压缩包“rsync-3.1.1.tar.gz
”再次进行解压,并且移动到指定的目录,这里将主程序目录移动并重命名为“/usr/local/sersync
”。
vim /usr/local/sersync/confxml.xml
修改配置文件,具体配置如下:
watch="/data"> #配置备份服务器地址及模块信息,有多个可以取消下方注释 ip="172.16.1.41" name="backup/data"/> #配置rsync的参数信息如果需要配置其他参数, #修改false为true并正确配置参数即可 params="-az"/> start="true" users="rsync_backup" passwordfile="/etc/rsync.password"/> start="false" port="874"/>