溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

實時同步工具原理解釋及環境準備inotify

發布時間:2020-08-03 22:02:14 來源:網絡 閱讀:187 作者:54vison 欄目:系統運維

實時同步,確保主服務器故障時將丟失數據的風險降到最低,實現原理就是當主服務器接收到數據時同時復制到另一服務器上,確保有多一份數據。

用到的工具:inotify或者sersync,這次使用inotify演示。

inotify運行時會時刻監控著文件系統(inode、block等屬性)

?

inotify監控到目錄有增加、修改、刪除、移動操作時會調用rsync命令將目錄傳輸到熱備器上。

實時同步工具原理解釋及環境準備inotify

?

部署:

安裝inotify,檢查系統是否支持inotify

Linux內核從2.6.13起加入inotify

出現如下所示則表示支持

實時同步工具原理解釋及環境準備inotify

?

自帶ISO沒有inotify,需要自己下載

https://github.s3.amazonaws.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz

?

安裝inotify需要C編譯器支持,需要提前安裝gcc編譯器

否則可能出現這個錯誤

實時同步工具原理解釋及環境準備inotify

?

可以使用echo $?查看是否有錯誤 0沒錯誤 1有錯誤

實時同步工具原理解釋及環境準備inotify

安裝命令:

tar zxf inotify-tools-3.14.tar.gz

cd inotify-tools-3.14/

./configure --prefix=/usr/local/inotify-tools-3.14

echo $?

make && make install

echo $?

ln -s /usr/local/inotify-tools-3.14/ /usr/local/inotify-tools

ls /usr/local/inotify-tools

history

?

一共安裝了2個工具(命令),inotifywaitinotifywatch

Inotifywait:在被監控的文件或目錄上等待特定文件系統事件(open、close、delete等)發生,執行后處于阻塞狀態,適合在shell腳本中使用。(監控文件狀態)

Inotifywatch:收集被監視的文件系統使用度統計數據,指文件系統時間發生的次數統計。

?

Inotifywait

參數解析:

-r????? 遞歸查詢目錄

-q????? 打印很少的信息,僅打印監控事件的信息

-m??? 始終保持事件監聽狀態

--excludei????????? 排除文件或目錄時,不區分大小寫

--timefmt????????? 指定時間輸出的格式

–format:
%w
表示發生事件的目錄
%f
表示發生事件的文件
%e
表示發生的事件
%Xe
事件以“X”分隔
%T
使用由–timefmt
定義的時間格式

-e 事件

以下選項都是接在-e 后面的

實時同步工具原理解釋及環境準備inotify

?

測試:

2個創建一直監控一直執行

[root@nfs-server ~]# /usr/local/inotify-tools/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e create /data

?

其中參數解釋:

-r????? 遞歸查詢目錄

-q????? 打印很少的信息,僅打印監控事件的信息

-m??? 始終保持事件監聽狀態

?

Timefmt時間戳格式 日月年 時分

–format:
%w
表示發生事件的目錄
%f
表示發生事件的文件

%T
使用由–timefmt
定義的時間格式

?

?

當我創建文件的是時候會自動記錄。

實時同步工具原理解釋及環境準備inotify

?[root@nfs-server ~]# /usr/local/inotify-tools/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %e:%w%f' -e create /data

22/11/19 11:21 CREATE:/data/12345.txt

?

創建腳本,當監控到文件有變化時自動同步.

#!/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 /data &&

?rsync -az ./ --delete rsync_backup@192.168.24.32::backup \

?--password-file=/etc/rsync.password

done

全路徑后臺運行該腳本,并且寫入rc.local

?/bin/sh /rsync.sh &

?

這步完成后,基本上每當/data這個目錄有增刪改都會自動同步到backup服務器上的/backup/data目錄上

?

應用場景200~300并發以內可以使用這套方案(中小型企業)。

?

?

實時同步優化及應用極限建議

?

/proc/sys/fs/inotify目錄下有三個文件,對inotify’機制有一定的限制

Max_user_watches:設置inotifywaitinotifywatch命令可以監視的文件數量(單進程)

Max_user_instances:設置每個用戶可以允許的inotifywaitinotifywatch命令的進程數

Max_queued_events:設置inotify實例時間(event)隊列可容納的時間數量。

?

Inotify優點:

1) 實時數據同步

Inotify缺點:

1) 并發如果大于200個文件(10-100K),同步就會有延遲。

2) 監控到事件后,調用rsync同步是單進程的(加&并發),sersync多進程同步。既然有了inotify-tools,為什么還要sersync?

Sersync功能多:

1)配置文件。

2)真正的守護進程socket。

3)可以對失敗文件定時重傳(定時任務)。

4)第三方的HTTP接口。

5)默認多線程同步。

?

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女