2019-08-19 实时数据同步

全网备份遗留

备份客户机没有发送数据,如何让运维人员知道?

1 .备份客户机,判断rsync是否执行成功,用来判断
2 .服务器:判断是否有当前日期的指纹信息

实时数据同步

数据备份的方法

1 .内部人员数据,备份数据最短周期是1分钟
2 .外部人员数据(用户) 没有等待时间,实时备份

实现数据备份的原理

1 .监控存储服务器的目录数据信息变化
2 .利用同步传输数据软件 ,将变化的数据传输
3 .实现实时同步数据 inotify+rsync

数据监控软件inotify

作用:监控目录数据的信息变化
/usr/bin/inotifywait 重要--监控数据目录信息变化命令
/usr/bin/inotifywatch 了解-统计目录的产生的变化信息 修改了多少次

第二个里程:掌握inotify的用法

--exclude  ---进行监控数据时,指定哪些数据信息,不进行监控
--excludei  ---进行数据监控时,指定哪些数据信息,不进行数据监控,忽略大小写
-m|--monitor   指一直对目录进行监控
-r|--recusive  递归监控目录中的数据变化
--format  定义输出路径的格式 
%w设置路径
%f 设置文件
%e 指定监控的事件
%T 调用时间格式--timefmt
--timefmt   定义时间格式信息,类似于date 命令格式,与date参数一样
-q | --quiet 将某些信息不进行输出显示
-e | --event --指定监控事件的信息
inotify的事件信息
access    一个文件或目录内容被读取时
modify     文件或目录内容被修改时
attrib       文件或目录的属性给修改时
close_write  文件或目录被关闭,在文件打开后,写入新的内容关闭时
close_nowrite:文件或目录被关闭,文件没有被编辑,关闭
关闭的解释: 
开发:应用程序修改数据信息
逻辑过程: 打开文件---编辑文件---关闭文件
close:无论文件或目录是读或写,都被触发
open:文件或目录被打开
moved_to:文件或目录移动到被监控到目录,其他目录数据===>监控目录(参照目录)
moved_from:文件或目录移出监控目录,监控目录(参照目录)===>其他目录
move:只要监控目录,有数据移动操作
create:在监控目录中,创建目录或是文件
delete:在监控目录中,有文件或目录被删除时

监控记录

[root@nfs01 ~]# inotifywait -mr /backup -e create,close_write,delete,move --format="%w%f"
Setting up watches.  Beware: since -r was given, this may take a while!
Watches established.
/backup/3
/backup/3
[root@nfs01 /backup]# touch d
[root@nfs01 /backup]# touch 3

实现数据实时监控的方法
1 .编写脚本

[root@nfs01 /server/scripts]# cat jiankong.sh
#!/bin/bash
inotifywait -mr /backup -e create,close_write,delete,move --format="%w%f" | \
while read line
do
 rsync -avz --delete  /backup/  [email protected]::backup --password-file=/etc/rsync.password
done

脚本循环用法

01 .for循环, for 变量 in 循环信息;do 操作命令;done 这是有限制的循环
02 .while 循环,while条件表达式;do 操作命令 ;done 当条件为真时,是死循环,当条件为假时,是有限循环
03 .until 循环, unile 条件表达式;do 操作命令;done 当条件为假时,死循环,当条件为真时,结束循环

shell内置变量

$# 表示有几个传递的参数
$* 表示传递的参数是什么

01如何让一个脚本始终在后台运行?

nohup sh jiankong.sh &

02. 利用脚本数据同步完毕后, 脚本会依旧持续运行?

    >cd /data && rsync -az -R "./oldboy02.txt" [email protected]::backup --password-file=/etc/rsync.password
    cd /data && rsync -az -R --delete ./   --include="oldboy01.txt" --exclude=*  [email protected]::backup --password-file=/etc/rsync.password

利用软件实时同步

第一个里程:下载部署sersync软件
https://github.com/wsgzao/sersync
第二个里程:将解压好的文件到指定目录
第三个里程:修改软件配置信息

serync配置文件说明.png

第四个里程:启动服务
chmod +x sersync
[root@nf /server/tools/sersync_installdir_64bit/sersync/bin]# ./sersync -dro ../conf/confxml.xml

sersync的命令帮助信息

[root@nfs01 /server/tools/sersync_installdir_64bit/sersync/bin]# ./sersync -h
set the system param
execute:echo 50000000 > /proc/sys/fs/inotify/max_user_watches
execute:echo 327679 > /proc/sys/fs/inotify/max_queued_events
parse the command param
参数-d:启用守护进程模式
参数-r:在监控前,将监控目录与远程主机用rsync命令推送一遍
c参数-n: 指定开启守护线程的数量,默认为10个
参数-o:指定配置文件,默认使用confxml.xml文件
参数-m:单独启用其他模块,使用 -m refreshCDN 开启刷新CDN模块
参数-m:单独启用其他模块,使用 -m socket 开启socket模块
参数-m:单独启用其他模块,使用 -m http 开启http模块
不加-m参数,则默认执行同步程序

serync配置文件说明

  4        为true表示进入调试页面
  6             排除文件信息
  7         
  8         
  9         
 10         
 11     
12                           表示监听的事件
 13         
 14         
 15         
 16         
 17         
 18         
 19         
 20         
 21     
 23                  
 24         监控本地目录的变化
 25               要备份的远程ip和模块名称
 26             
 27             
 28         

 29         
 30                本地传输的参数信息
 31               远端传输的认证用户和认证用户的密码文件
 32             
 33             
 34             
 35         


你可能感兴趣的:(2019-08-19 实时数据同步)