nfs-server -->backup-server 实时备份

测试能否备份成功,先.(nfs-server 服务端操作:安装inotify)

rsync -avz /data/ rsync_backup@backup-server::backup/ --password-
file=/etc/rsync.password

创建工具目录:

mkdir -p /home/wyd/tools
下载inotify-toos工具:   
wget http://nchc.dl.sourceforge.net/project/inotify-tools/inotify-tools/3.13/inotify-tools-3.13.tar.gz

查看该目录下是否有三个文件(有的话,该版本的linux才支持inotify):

ll /proc/sys/fs/inotify/

解压下载的文件:  tar zxf inotify-tools-3.13.tar.gz
切换到解压的目录:cd inotify-tools-3.13
执行解压编译: ./configure --prefix=/usr/local/inotify-tools-3.13
echo $?
make && make install   (在/usr/local/inotify-tools-3.13目录中生成四个文件)
echo $?
cd ../
ln -s /usr/local/inotify-tools-3.13/ /usr/local/inotify-tools
ll -l /usr/local/inotify-tools  (查看链接文件,保留版本号有利于查看版本)

了解目录中的文件:

/usr/local/inotify-tools/bin/  下有两个工具命令:(inotifywait和inotifywatch)
	1)inotifywait: 在被监控的文件或目录上等待特定文件系统时间(open,close,delete)等
	发生,执行后处于阻塞状态,适合在shell脚本中使用
	2)inotifywatch:收集被监视的文件系统使用度统计数据,指文件系统事件发生的次数统计. 

mkdir -p /server/scripts (创建实时同步的脚本文件) vim /server/scripts/inotify.sh

#!/bin/bash
inotify=/usr/local/inotify-tools/bin/inotifywait
$inotify -mrq --format '%w%f' -e create,close_write,delete /data |while read file
do
				cd / &&
				rsync -az ./data --delete rsync_backup@backup-server::backup/ --password-
				file=/etc/rsync.password
done
~     
(nfs-server)可以后台执行该文件:/bin/sh /server/scripts/inotify.sh &
开机自启,写入/etc/rc.local文件中

关键参数说明:

	在/proc/sys/inotify目录下有三个文件,对inotify机制有一定的限制:
	max_user_watches: 设置inotifywait或inotifywatch命令可以监视的文件数量(单进程)
	max_user_instances: 设置每个用户可以运行的inotifywait或inotifywatch命令的进程数
	max_queued_events: 设置inotify实例事件(event)队列可容纳的时间数量

	echo "50000000" /proc/sys/fs/inotify/max_user_watches
	echo "50000000" /proc/sys/fs/inotify/max_queued_events

压力测试:(经过测试inotify每秒200个文件并发,数据同步几乎无延迟 ,小于一秒)

inotify优点:

配合rsync实现实时数据同步

inotify缺点:

1)并发如果大于200个文件(10-100K),同步就会有延迟,同步就会有延迟
2)我们前面写的脚本,每次都是全部推送一次,但确实是增量的
3)监控到事件后,调用rsync同步时单进程(加&并发),sersync多进程同步.

既然有了inotify-tools,为什么还要开发sersync:

sersync功能多:
	1)配置文件
	2)真正的守护进程socket
	3)可以对失败文件定时重传(定时任务)
	4)第三方的HTTP接口
	5)默认多线程同步

高并发数据实时同步方案小结:

	1)inotify(sersync)+rsync   文件级别
	2)drbd	文件系统级别
	3)第三方软件同步功能:
	mysql 同步,oracle ,mongodb
	4)业务上,程序实现双写(在客户端同时向nfs和back服务端推送同步)
	5)业务逻辑解决