1)檢查當前系統是否支持 inotify
uname -r (查看內核版本)
ls -l /proc/sys/fs/inotify
2)Yum安裝inotify-tools
cd /etc/yum.repos.d ,wget -o /etc/yum.repos.d/epel.repo httpz://mirrors.aliyun.com /repo/epel-6.repomysql
yum -y clean all ,yum -y makecache , yum -y install inotify-tools ,rpm -qa inotifywait inotifywatchsql
3)人工測試監控事件
inotifywait -mrq --timefmt ‘%y %m %d %H %M --format ‘%T %w%f’ -e creat /backup
w 是指路徑 T 是指時間 f 是指文件
creat是建立 delete 刪除 close_write 文件寫模式 move_to 移動
4)編寫 inotify 時時監控腳本
1.#!/bin/bash
2.
3.Path=/data
4.backup_Server=172.16.1.41
5.
6.
7./usr/bin/inotifywait -mrq --format '%w%f' -e create,close_write,delete /data | while read line
8.do
9.if [ -f $line ];thenmongodb
10.rsync -az backup_Server::nfsbackup --password-file=/etc/rsync.password
11.else
12.cd $Path &&\緩存
13.rsync -az ./ --delete rsync_backup@$backup_Server::nfsbackup --password-file=/etc/rsync.password
14.fi
15.
16.donebash
5)腳本加入開機自啓動
echo "/bin/sh /server/scripts/inotify.sh &" >> /etc/rc.local
提示: 一個& 表明從後臺開始運行該條命令。
Inotify實時併發:
結論:通過測試,每秒200文件併發,數據同步幾乎無延遲(小於1秒)
5.8 inotify 優勢:
1)監控文件系統事件變化,經過同步工具實現實時數據同步。
5.9 inotify 缺點
1)併發若是大於200個文件(10-100k),同步就會有延遲
2)咱們前面寫的腳本,每次都是所有推送一次,但確實是增量的。也能夠只同步變化的文件,不變化的不理。
3)監控到事件後,調用rsync同步是單進程的,而sersync爲多進程同步。既然有了inotify-tools,爲何還要開發sersync?
5.10 serysync功能多:(inotify+rsync命令)
1)支持經過配置文件管理
2)真正的守護進程socket
3)能夠對失敗文件定時重傳(定時任務功能)
4)第三方的HTTP接口(例如:更新cdn緩存)
5)默認多進程rsync同步
5.11 高併發數據實時同步方案小結:
1)inotify(sersync)+ rsync,是文件級別的。
2)drbd文件系統級別,文件系統級別,基於block塊同步,缺點:備節點數據不可用
3)第三方軟件的同步功能:mysql同步(主從複製),oracle,mongodb
4)程序雙寫,直接寫兩臺服務器。
5)利用產品業務邏輯解決(讀寫分離,備份讀不到,讀主)服務器