0.環境安裝 gcc yum install gcc -yhtml
1.安裝inotify(源碼軟件包)mysql
文件下載: https://files.cnblogs.com/files/ftl1012/inotify-tools-3.14.tar.gzsql
1. cd /opt/tools/inotify-tools-3.14/ 2. ./configure --prefix=/opt/tools/inotify-tools-3.14/ 3. yum install -y gcc 4. make && make install 5. ln -s /opt/tools/inotify-tools-3.14/ /opt/tools/inotify-tools 6. ls -l /opt/tools/inotify-tools
2.inotify重要工具mongodb
1.查看目錄shell
cd /opt/tools/inotify-tools/bin -->lib是動態連接的庫文件服務器
2.inotifywait:在被監控的文件或者目錄上等待特定文件系統事件(delete,open,close等)的發生,而後處於阻塞狀態,適合shell腳本使用多線程
inotifywatch:收集被監視文件系統使用度統計數據,指文件系統事件發生的次數統計併發
3.inotifywait命令經常使用參數詳解 oracle
-r|--recursive Watch directories recursively. -m|--monitor Keep listening for events forever. Without this option, inotifywait will exit after one event is received. -t|--timeout <seconds> -q|--quiet Print less (only print events). -qq Print nothing (not even events) --fromfile <file> Read files to watch from <file> or `-' for stdin -e|--event <event1> access| modify| attrib| open| close| create| delete|unmount
4.inotify實戰(實時同步,最好加上--delete)less
1.手動調用(inotify)
/opt/tools/inotify-tools/bin/inotifywait -mrq --timefmt '%d%m%y %H:%M' --format '%T %w%f' -e create,close_write,delete, /data_inotify |while read line; do echo $line >>/var/log/inotify.log;done &
2.腳本實現(rsync+inotify+nfs)實時監控備份NFS
#!/bin/sh inotifywait=/opt/tools/inotify-tools/bin/inotifywait #count=1 $inotifywait -mrq --format '%w%f' -e create,close_write,delete /NFS |while read line do cd / && #echo ".................Starting rsync $line......................." rsync -az /NFS rsync_backup@192.168.25.141::backup --password-file=/etc/rsync.password done
3.配合NFS實現監控
/opt/tools/inotify-tools/bin/inotifywait -mrq --timefmt '%y-%m-%d %H:%M' --format '%T %w%f' -e create,delete /NFS_141 |while read line; do echo $line >>/var/log/inotify.log;done &
4.寫入環境變量中,能夠直接使用
cp /opt/tools/inotify-tools/bin/inotifywait inotifywait
6.關鍵參數說明
cd /proc/sys/fs/inotify/ -->有3個重要的目錄,對inotify機制有必定的限制 max_queued_events:inotify能夠監聽的文件數量 max_user_instances:設置每一個用戶可運行的inotify進程數量 max_user_watches:設置inotify實例事件隊列可容納的事件數量 10k -100k的文件的併發是 200左右
7.inotify優缺點
優勢:配合rsync實現實時數據同步
缺點:大於200K的時候有延遲,可使用sersync解決
調用rsync同步時單進程的
8.sersync功能:
1.配置文件 2.真正的守護進程 socket 3.能夠對失敗的文件定時重傳(定時任務)
4.第三方HTTP接口 5.默認多線程
9.高併發數據實時同步方案小結:
1.inotify(sersync)+rsync -->文件級別
2.drdb -->文件系統級別
3.第三方軟件的同步功能 mysql級別,oracle,mongodb
4.程序雙寫 -->一個文件,從前臺分別寫入2個或者多個服務器
5.業務邏輯解決