4-18(实时同步)

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 [email protected]::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

————————————————————————————————————————————————

你可能感兴趣的:(4-18(实时同步))