Day35
综合架构实时同步
1.网站实时同步原理
- 数据备份方法:
定时任务备份数据:备份数据最短周期1分钟
(内部人员备份数据)
实时同步备份数据:没有同步等待时间
(外部人员备份数据)- 实时同步数据原理:
监视存储服务器上指定目录---数据信息变化 >监控软件(inotify)
利用同步传输数据软件---将变化数据传输 >传输软件(rsync)
实现实时传输数据---实时同步(inotify+rsync)
2.数据监控软件 inotify
- 作用:
监控目录中数据信息变化
- 部署过程:
- 第一个历程:部署安装软件
yum install -y inotify-tools
/usr/bin/inotifywait (重要) --- 监控目录数据信息变化命令
/usr/bin/inotifywatch (了解) — 统计目录产生变化的信息
- 第二历程:掌握inotifywait监控命令用法:
--exclude
—进行监控数据时,指定哪些数据信息不要监控
--excludei
—进行监控数据时,指定哪些数据信息不要监控(不区分大小写)
-m
—一直对指定目录进行监控
-r
—递归监控目录中数据变化
--format
—定义输出信息格式
%w 监控目录路径信息
%f 监控触发事件数据信息
%e 相应事件信息
%T 定时触发事件时间信息(调用–timefmt所定义时间格式)
--timefmt
—定义时间格式信息
-q
—将某些信息不要进行显示输出
-e
—指定监控的事件信息
- inotify所有事件信息:
事件名称 | 事件说明 | 翻译 |
---|---|---|
access | file or directory contents were read | 文件或目录内容被读取 |
modify | \file or directory contents were written | 文件或目录内容被写入 |
attrib | file or directory attributes changed | 文件或目录属性信息改变 |
close_write | file or directory closed, after being opened in writeable mode | 文件或目录被关闭, 在文件打开后写入新的信息后关闭 |
close_nowrite | file or directory closed, after being opened in read-only mode | 文件或目录被关闭, 在文件打开后没有写入新的信息后关闭了文件或目录 |
close | file or directory closed, regardless of read/write mode | 文件或目录被关闭, 不管文件是否是读或是写 |
open | file or directory opened | 文件或目录被打开 |
moved_to | file or directory moved to watched directory | 文件或目录被移动到监控目录中 |
moved_from | file or directory moved from watched directory | 文件或目录被移动出监控目录 |
move | file or directory moved to or from watched directory | 只要监控目录中,有数据移动操作 |
create | file or directory created within watched directory | 在监控目录中,有文件或目录数据信息创建操作 |
delete | file or directory deleted within watched directory | 在监控目录中,有文件或目录数据信息删除操作 |
inotify监控数据变化命令 – 实现数据变化实时同步
3. 实现实时同步数据过程:
方法一: 编写脚本
# 01. 监控目录数据信息变化
inotifywait -mrq /data --format "%w%f" -e create,delete,move,close_write|\
while read line
补充: 脚本循环用法:
01. for 循环 for 变量 in 循环信息;do 操作命令;done 有限制循环
02. while 循环 while 条件表达式; do 操作命令;done 死循环 当条件满足时, 条件为真
03. until 循环 until 条件表达式; do 操作命令;done 死循环 当条件不满足, 条件为假
# 02. 将变化数据进行实时同步
rsync -avz $line rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
脚本信息:
#!/bin/bash
inotifywait -mrq /data --format "%w%f" -e create,delete,move,close_write|\
while read line=oldboy03.txt
do
rsync -avz --delete /data/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
done
问题:
01. 如何让脚本文件始终运行
nohup sh /server/scripts/inotify.sh &
02. 利用脚本数据同步完毕后, 脚本会依旧持续运行?
cd /data && rsync -az -R "./oldboy02.txt" rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
cd /data && rsync -az -R --delete ./ --include="oldboy01.txt" --exclude=* rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
- 方式二: 利用软件 二进制软件
第一个里程: 下载部署实时同步软件 sersync–>inotify+rsync
https://github.com/wsgzao/sersync------>>下载
将软件保存在此目录中
mkdir /server/tools -p
unzip sersync_installdir_64bit.zip
cd /server/tools/sersync_installdir_64bit
第二个里程: 将解压好目录保存到指定目录中
mv sersync/ /usr/local/
第三个里程: 修改软件配置信息
vim conf/confxml.xml
第四个里程: sersync服务如何启动
cd /usr/local/sersync/bin/
chmod +x sersync
sersync -dro /usr/local/sersync/conf/confxml.xml
- 显示数据同步过程方法:
修改配置文件: