中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

rsync+inotify實現數據實時同步備份

發布時間:2020-06-06 05:22:07 來源:網絡 閱讀:1133 作者:翹楚秦歌 欄目:建站服務器

在實際生產環境當中,我們總會遇見需要把一些重要數據進行備份,且隨著應用系統規模的增大,對數據的安全性、可靠性、時效性要求還是比較高的,

因此我自己有在用rsync+inotify來實現數據實時同步備份,下面記錄下操作步驟,以防日后自己忘記。

實驗背景:

操作系統          IP         機器名        角色

CentOS 7.2       172.16.22.1     nginx01        數據源(服務器端)

CentOS 7.2       172.16.22.7     nginx02        備份地(客戶端)


一、rsync的安裝

在服務器端與客戶端都安裝rsync

[root@nginx01 ]# yum install -y rsync
[root@nginx02 ]# yum install -y rsync


分別啟動服務器端和客戶端的rsync守護進程

[root@nginx01 ]# /usr/bin/rsync --daemon
[root@nginx02 ]# /usr/bin/rsync --daemon


二、安裝inotify

因為inotify是一種強大的、細粒度的、異步文件系統事件監控機制,從Linux內核2.6.13版本起,加入了對inotify的支持。

inotify可以監控文件系統的各種變化,當文件出現任何變動時,就會觸發rsync同步,恰好解決了數據實時同步的問題。

inotify只需要安裝在服務器端即可。

[root@nginx01 ]# uname -r
3.10.0-327.el7.x86_64
[root@nginx01 ]# ll /proc/sys/fs/inotify
total 0
-rw-r--r--. 1 root root 0 Jun 12 13:43 max_queued_events
-rw-r--r--. 1 root root 0 Jun 12 13:43 max_user_instances
-rw-r--r--. 1 root root 0 Jun 12 13:43 max_user_watches

如果出現了上面的3項內容,說明系統默認支持inotify,那么我們就可以安裝inotify-tools了。


我們可以到http://inotify-tools.sourceforge.net 下載相應版本的inotify-tools,我發現最新的也就是2010年出的inotify-tool-3.1.14

下載完畢后,進行安裝

先解壓

[root@nginx01 ]# tar -xf inotify-tools-3.14.tar.gz

進入解壓后的安裝包目錄里

[root@nginx01 ]# cd inotify-tools-3.14


進行檢查編譯,并制定安裝路徑

[root@nginx01 inotify-tools-3.14 ]# ./configure --prefix=/data0/inotify


進行make編譯安裝

[root@nginx01 inotify-tools-3.14 ]# make && make install


安裝完畢,查看是否生成了inotifywait、inotifywatch這兩個指令

[root@nginx01 ]# ll /data0/inotify/bin/inotifywa*
-rwxr-xr-x. 1 root root 60892 Jun 12 13:45 /data0/inotify/bin/inotifywait
-rwxr-xr-x. 1 root root 55183 Jun 12 13:45 /data0/inotify/bin/inotifywatch

注:inotifywait --用于等待文件或者文件集上的一個特定時間,可以監控任何文件和目錄設定,并且可遞歸監控整個目錄樹;inotifywatch--用于收集被監控的文件系統統計數據,包括每個inotify事件發生的次數等相關信息。關于它們的用法可以使用 /data0/inotify/bin/inotifywait --help、/data0/inotify/bin/inotifywatch --help的方式來了解


三、inotify的相關參數

inotify定義了一些接口參數,可以用來限制inotify消耗kernel memory的大小,所以我們要根據實際應用的需求,來調節其大小。

[root@nginx01 ]# ll /proc/sys/fs/inotify
total 0
-rw-r--r--. 1 root root 0 Jun 12 13:43 max_queued_events
-rw-r--r--. 1 root root 0 Jun 12 13:43 max_user_instances
-rw-r--r--. 1 root root 0 Jun 12 13:43 max_user_watches


/proc/sys/fs/inotify/max_queued_events --表示調用inotify_init時分配至inotify instance中可以排隊的最大事件數,一旦超過這個值,事件就會被拋棄,但是會觸發IN_Q_OVERFLOW事件

/proc/sys/fs/inotify/max_user_instances --表示每一個real user ID 可創建的inotify instances數量的最大上限

/proc/sys/fs/inotify/max_user_watches --表示每個inotify實例相關聯的watches的上限,也就是每個inotify實例可監控的最大目錄數量,如果你所需要監控的數量巨大,可以適當增大它。


我就隨便增大了我的上述設定值

[root@nginx01 ]# echo 32768 > /proc/sys/fs/inotify/max_queued_events
[root@nginx01 ]# echo 1024 > /proc/sys/fs/inotify/max_user_instances
[root@nginx01 ]# echo 90000000 > /proc/sys/fs/inotify/max_user_watches

四、配置雙機ssh信任

使用rsync同步有兩種方式可以實現:

一:使用rsync用戶、密碼

二:使用機器上的用戶,無需輸密碼即可實現

我為了貪圖方便選擇后者


在數據源、備份機上創建RSA密鑰

以下操作在兩臺機器上都要執行,下列提供其中一臺的為例

1.使用root用戶登入機器

2.在root用戶的主目錄下創建.ssh目錄,并設置正確的權限

[root@nginx01 ]# mkdir ~/.ssh
[root@nginx01 ]# chmod 700 ~/.ssh

3.使用ssh-keygen命令生成第2版的SSH協議的RSA密鑰

[root@nginx01 ]# ssh-keygen -t rsa

接下來的動作就是根據提示保存私鑰(key)和公鑰(public key)的位置時,使用默認值。如果需要私鑰密碼(passphrase), 則輸入一個私鑰密碼(如果使用私鑰密碼,在利用ssh執行遠程命令是需要輸入私鑰密碼)

我是為了方便,直接回車就好!


添加密鑰到授權的密鑰文件中

1.使用root用戶登入機器

2.在數據源機器上執行下列操作

[root@nginx01 ]# cd ~/.ssh
[root@nginx01 ./ssh]# ssh 172.16.22.7 cat /root/.ssh/id_rsa.pub >> authorized_keys
[root@nginx01 ./ssh]# ssh 172.16.22.1 cat /root/.ssh/id_rsa.pub >> authorized_keys
[root@nginx01 ./ssh]# scp authorized_keys 172.16.22.7:/root/.ssh/
[root@nginx01 ./ssh]# chmod 600 /root/.ssh/authorized_keys

3.在備份機上執行

[root@nginx02 ]# chmod 600 /root/.ssh/authorized_keys

4.分別在兩臺機器上進行測試

[root@nginx01 ]# ssh 172.16.22.1 date
Tue Jun 13 20:39:56 CST 2017
[root@nginx01 ]# ssh 172.16.22.7 date
Tue Jun 13 20:39:57 CST 2017
[root@nginx02 ]# ssh 172.16.22.1 date
Tue Jun 13 20:39:57 CST 2017
[root@nginx02 ]# ssh 172.16.22.7 date
Tue Jun 13 20:39:58 CST 2017

在第一次執行的時候,可能會要輸入密碼信息,再次執行的時候,你會發現不需要輸入密碼信息就能夠顯示系統日期,這就說明ssh互相信任配置成功!


五、實現實時同步

因為inotifywait是一個監控等待事件,所以我們可以使用shell腳本來配合使用它。

常用的inotifywait參數:

 -m --monitor 表示始終保持事件的監聽狀態

 -r --recursive 表示遞歸查詢目錄

 -q --quit 表示打印出監控事件

 -e --event  通過此參數可以指定要監控的事件,常見的有modify、delete、create、attrib等等

 

下面是我的一個實時同步腳本,僅供參考:

[root@nginx01 ]# vim  /data0/webscripts/inotify.sh
#!/bin/bash
SRC=/data0/nginx/res/home/
DST=root@172.16.22.7:/data0/nginx/res/home/
/data0/inotify/bin/inotifywait -mrq -e modify,delete,create,attrib ${SRC} | while read  a b c 
        do 
           /usr/bin/rsync  -ahqzt --delete $SRC $DST
done


讓同步腳本具有可執行權限

[root@nginx01 ]# chmod +x /data0/webscripts/inotify.sh

在后臺執行實時備份的腳本操作

[root@nginx01 ]# sh /data0/webscripts/inotify.sh &

在備份的同時,你可以去到你的備份機上備份目錄里查看它是不是一直在變大,直到和數據源目錄一樣大呢

如果你的備份目錄比較大,從數字上可能不是那么好辨認的話,建議使用查看目錄文件數量的方式來比對確認


如在數據源目錄查看后,在去備份目錄看是否一致。

[root@nginx01 ]# find /data0/nginx/res/home -type f | wc -l
30777
[root@nginx02 ]# find /data0/nginx/res/home -type f | wc -l
30777

到這里配置完成,測試成功

向AI問一下細節

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

AI

前郭尔| 竹山县| 外汇| 太湖县| 军事| 金川县| 江西省| 镇赉县| 盐源县| 肥东县| 永川市| 九台市| 洪湖市| 绥江县| 平乡县| 东兴市| 织金县| 岳普湖县| 浙江省| 孟连| 固镇县| 温州市| 大田县| 平和县| 井冈山市| 清涧县| 边坝县| 铜梁县| 黎平县| 洛扎县| 登封市| 余江县| 沽源县| 宝鸡市| 柘荣县| 沛县| 永登县| 白朗县| 青田县| 安龙县| 东光县|