cron+nRsync 定时备份 web01-》backup
inotify/Sersync+Rsync 实时备份 nfs01-》backup
一、inotify-tools 、 sersync
inotify:
异步实时文件监控
优点:监控文件文件系统事件变化,通过复制工具实现实时数据复制。
缺点:实测并发如果大于200个文件,复制会有延迟。单线程(加&并发)
——————————————————————————————————————————————————————————————————————————————
1.1下载服务
yum install epel-release -y
yum install inotify-tools -y(nfs01服务端下载)
1.2查看inotify支持情况 *****
[root@nfs01 ~]# uname -r
3.10.0-957.5.1.el7.x86_64
[root@nfs01 ~]# ls -l /proc/sys/fs/inotify
total 0
-rw-r--r-- 1 root root 0 Apr 19 09:45 max_queued_events
设置inotify实例事件,队列可容纳的事件数量
-rw-r--r-- 1 root root 0 Apr 19 09:45 max_user_instances
设置每个用户可以运行的inotifywait或inotifywatch命令
-rw-r--r-- 1 root root 0 Apr 19 09:45 max_user_watches
设置inotifywait或inotifywatch命令可以监视的文件数量(单进程)
rpm -qa inotify-tools 看版本
——————————————————————————————————————————————————————————————————————————————————
inotifywait:监控文件
intifywatch:测检创建事件统计功能
1.3编写脚本
inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e create /data
#####################################
inotifywait命令参数
-m 始终保持事件监听状态*****
-r 递归监控目录数据变化*****
-e 指定鉴定的事件,省略标识所有事件都进行监听*****
-o 标准正确输出
-s 标准错误输出
-d 类似于-m,将命令运行在后台。
-q 只打印事件信息
--excludei 排除文件或目录时,不区分大小写
--timefmt 指定时间输出格式
--format 打印使用实际监控输出的内容
————————————————————————————————————————————————————
重要监控事件参数汇总
1.close
close_write(修改)
close_nowrite 文件或目录关闭与开启(读写关闭)
2.close_write
create(创建) 含创建文件事件,不含创建目录,自身修改
delete(删除) 含删除文件事件,不含创建目录
3.monve
monved_to(移入)
monved_from(移出) 文件或者目录移动移出
————————————————————————————————————————————————————
#####################################
sh -x 脚本 显示执行过程。
/server/scripts/monitor.sh
1.4innotify-tools优化 *****
vim /etc/rc.local
echo "50000000" >/proc/sys/fs/inotify/max_user_watches
echo "50000000" >/proc/sys/fs/inotify/max_queued_events
##########################
sersync特点
优点
1.使用c++编写,对重复文件临时文件过滤,速度快
2.配置简单
3.多线程复制
4.自带出错处理机制,通过失败队列对出错文件重新复制
5.自带crontab功能,可以在xml配置文件中开启
6.自带socket与http协议扩展,满足特殊需求二次开发。
缺点
定时crontab重传失败会清空队列,即清空/tmp/rsync_fail_log.sh文件。
这样就会造成sersync服务恢复正常后(即可以同步文件),
数据同步的两个服务器数据不一致的现象。因为,/tmp/rsync_fail_log.sh文件为空,
而sersync只对发生变化的文件做实时同步(sersync默认每隔十个小时做一次完整的数据同步)。
###########################
二、sersync
2.1部署环境配置:exports
2.2测试一下rsync
rsync -az /data rsync_backup@172.16.1.41::backup
2.3下载sersync,解压,移动application到/ tree 检查一下
完成监控配置
完整命令拼接
启动服务
/application/sersync/bin/sersync -d
————————————————————————————————————————————————————————————————
参数-d:启用守护进程模式
参数-r:在监控前,将监控目录与远程主机用rsync命令推送一遍
c参数-n: 指定开启守护线程的数量,默认为10个
参数-o:指定配置文件,默认使用confxml.xml文件
参数-m:单独启用其他模块,使用 -m refreshCDN 开启刷新CDN模块
参数-m:单独启用其他模块,使用 -m socket 开启socket模块
参数-m:单独启用其他模块,使用 -m http 开启http模块
不加-m参数,则默认执行同步程序
————————————————————————————————————————————————————————————————
总结:
inotify-tools
1.下载服务
yum install inotify-tools -y(nfs01服务端下载)
2.查看
2.1 uname -r
ls -l /proc/sys/fs/inotify
rpm -qa inotify-tools 看版本
3.编写脚本
inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e create /data
4.优化
vim /etc/rc.local
echo "50000000" >/proc/sys/fs/inotify/max_user_watches 可以监视的文件数量
echo "50000000" >/proc/sys/fs/inotify/max_queued_events 队列可容纳的事件数量
______________
sersync
1.配置环境:echo 'export RSYNC_PASSWORD=oldboy' >>/etc/bashrc
2.下载安装包,解压,移动程序到根目录下
3.完成监控配置
完成命令拼接 /application/sersync/conf/confxml.xml
4.启动服务/application/sersync/bin/sersync -d
/application/sersync/bin/sersync -h(查看服务)
set nu vim里显示行号
pkill 杀死
————————————————————————————————————————————————————————
1.在/etc/rc.d/init.d/sersync目录编写脚本
[root@nfs01 ~]# vim /etc/rc.d/init.d/sersync
#!/bin/bash
# chkconfig: 2345 21 81
# description: rsync service start and stop scripts
# Author: oldboy
# Organization: www.oldboyedu.com
start(){
/application/sersync/bin/sersync -d -o /application/sersync/conf/confxml.xml &>/dev/null
}
stop(){
killall sersync 2>/dev/null
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
sleep 2
start
;;
*)
echo $"Usage:$0 {start|stop|restart}"
exit 1
esac
2.给脚本添加执行权限
chmod +x /etc/rc.d/init.d/sersync
3.编辑/usr/lib/systemd/system/sersync.service
[root@nfs01 ~]# vim /usr/lib/systemd/system/sersync.service
[Unit]
Description=sersyncd service
After=network.target
[Service]
Type=forking
ExecStart=/etc/rc.d/init.d/sersync start
ExecReload=/etc/rc.d/init.d/sersync restart
ExecStop=/etc/rc.d/init.d/sersync stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
4.给文件添加执行权限
chmod +x /usr/lib/systemd/system/sersync.service
5.完成
[root@nfs01 ~]# systemctl status sersync.service
[root@nfs01 ~]# systemctl restart sersync.service
[root@nfs01 ~]# systemctl enable sersync.service
查看是否启动监控程序:
[root@nfs01 ~]# ps -ef|grep sersync|grep -v grep
————————————————————————————————————————————————