2019-04-19實(shí)時(shí)備份

實(shí)時(shí)備份:


周期性數(shù)據(jù)備份示意圖:

利用實(shí)時(shí)復(fù)制方式,實(shí)現(xiàn)實(shí)時(shí)備份重要數(shù)據(jù)信息。

實(shí)時(shí)復(fù)制是企業(yè)數(shù)據(jù)備份最重要的方式,主要用于提交的數(shù)據(jù)備份,對(duì)于用戶(hù)提交到服務(wù)器上的普通文件(壓縮包、視頻、文檔等),可采用inotify/sersync+rsync實(shí)時(shí)備份方式,對(duì)于數(shù)據(jù)文件還有較復(fù)雜的分布式存儲(chǔ)工具自身可以實(shí)現(xiàn)將數(shù)據(jù)同時(shí)備份成多份。

普通數(shù)據(jù)文件實(shí)時(shí)備份示意圖:


實(shí)時(shí)復(fù)制細(xì)節(jié)實(shí)現(xiàn)說(shuō)明:?

(1)實(shí)時(shí)復(fù)制軟件會(huì)監(jiān)控磁盤(pán)文件系統(tǒng)的變化,比如:指定一個(gè)/data目錄,實(shí)時(shí)復(fù)制軟件服務(wù)進(jìn)程會(huì)實(shí)時(shí)監(jiān)控這個(gè)/data目錄中數(shù)據(jù)的變化,即文件系統(tǒng)block與inode信息的變化。

(2)一旦/data目錄文件發(fā)生變化,就會(huì)執(zhí)行rsync命令,將變化的數(shù)據(jù)信息推送到備份服務(wù)器相應(yīng)的備份目錄中,從而完成數(shù)據(jù)的實(shí)時(shí)備份。


inotify機(jī)制介紹:

inotify是一種一步的軟件系統(tǒng)事件監(jiān)控機(jī)制,Linux內(nèi)核從2.6.13起,加入了inotify支持,通過(guò)inotify可以監(jiān)控文件系統(tǒng)中添加、刪除、修改、移動(dòng)等各種事件,利用這個(gè)內(nèi)核接口,第三方軟件就可以監(jiān)控文件系統(tǒng)下文件的各種變化情況,而inotify-tools正式實(shí)施這樣監(jiān)控的軟禁。。實(shí)際上inotify-tools是一個(gè)監(jiān)控指定目錄數(shù)據(jù)實(shí)時(shí)變化的軟件程序。

inotify程序原理是一種事件機(jī)制,它為應(yīng)用程序監(jiān)控文件系統(tǒng)事件提供了實(shí)時(shí)響應(yīng)事件的機(jī)制,可以做到對(duì)事件處理的實(shí)時(shí)響應(yīng)。

inotify的實(shí)現(xiàn)有幾款軟件:inotify-tools、sersync、lrsyncd。

提示:serync軟件在inotify基礎(chǔ)上進(jìn)行開(kāi)發(fā)的,功能要更加強(qiáng)大些,支持配置文件配置,多了定時(shí)重試機(jī)子,過(guò)濾機(jī)制,提供接口做CDN數(shù)據(jù)更新,支持多線(xiàn)程操作。

inotify機(jī)制優(yōu)點(diǎn):

監(jiān)控文件文件系統(tǒng)事件變化,通過(guò)復(fù)制工具實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)復(fù)制。

支持多線(xiàn)程實(shí)時(shí)復(fù)制。

inotify機(jī)制缺點(diǎn):

實(shí)測(cè)并發(fā)如果大于200個(gè)文件(10-100K),復(fù)制會(huì)有延遲。


不管是inotify-tools還是sersync,本身的核心功能都只是,監(jiān)控指定目錄內(nèi)的數(shù)據(jù)變化,具體的復(fù)制到遠(yuǎn)端服務(wù)器的功能了,還是需要rsync工具配合的,這些軟件幾乎都是inotify機(jī)制接口智商的軟件封裝,軟件具體工作機(jī)制流程為:

(1)備份源客戶(hù)端開(kāi)啟運(yùn)行inotify軟件服務(wù)進(jìn)程,檢測(cè)指定目錄的文件系統(tǒng)變化。

(2)一旦獲取到指定監(jiān)控的目錄的數(shù)據(jù)發(fā)生變化,即執(zhí)行rsync命令復(fù)制數(shù)據(jù)。

(3)將變化的數(shù)據(jù)發(fā)送到rsync服務(wù)端(也可執(zhí)行scp,rsync遠(yuǎn)程Shell模式)的備份目錄中。


[root@nfs01 ~]# echo $RSYNC_PASSWORD
oldboy

[root@nfs01 ~]# rsync -avz /data rsync_backup@172.16.1.41::backup/
sending incremental file list
data/
data/oldboy.txt
data/oldgirl.txt

sent 213 bytes ?received 66 bytes ?186.00 bytes/sec
total size is 0 ?speedup is 0.00

[root@nfs01 ~]# uname -r? ? ? ? ? ? ? ###查看內(nèi)核
3.10.0-957.el7.x86_64

[root@nfs01 ~]# ls -l /proc/sys/fs/inotify/? ? ? ? ? ?#####inotify配置文件
total 0
-rw-r--r-- 1 root root 0 Apr 19 09:45 max_queued_events
-rw-r--r-- 1 root root 0 Apr 19 09:45 max_user_instances
-rw-r--r-- 1 root root 0 Apr 19 09:45 max_user_watches

max_user_watches:設(shè)置inotifywait或inotifywatch命令可以見(jiàn)識(shí)的文件數(shù)量(單進(jìn)程)
max_user_instances:設(shè)置每個(gè)用戶(hù)可以運(yùn)行的inotifywait或inotifywatch 命令的進(jìn)程數(shù)
max_queued_events:設(shè)置inotify實(shí)例時(shí)間(event)隊(duì)列可容納的時(shí)間數(shù)量

安裝:yum?install?inotify-tools?-y

安裝:yum?install?inotify-tools?-y

[root@nfs01?~]#?rpm?-ql?inotify-tools|head?-2

/usr/bin/inotifywait
/usr/bin/inotifywatch

[root@nfs01?~]#?rpm?-qa?inotify-tools
inotify-tools-3.14-8.el7.x86_64

inotify-tools工具主要命令

在inotify-tools軟件部署完畢后,主要應(yīng)用兩個(gè)命令實(shí)現(xiàn)數(shù)據(jù)信息的監(jiān)控,一個(gè)利用inotifywait命令實(shí)現(xiàn)對(duì)數(shù)據(jù)變化時(shí)間的監(jiān)控,另一個(gè)利用inotifywatch命令實(shí)現(xiàn)對(duì)數(shù)據(jù)時(shí)間信息統(tǒng)計(jì)。這兩個(gè)命令是能夠應(yīng)用好inotify-tools軟件的關(guān)鍵,下面對(duì)這兩個(gè)軟件說(shuō)明如下:

(1)inotifywait:在被監(jiān)控的目錄等等待特定文件系統(tǒng)事件(open、close、delete等)發(fā)生,執(zhí)行后處于阻塞狀態(tài),適合在Shell腳本中使用,此命令是重點(diǎn)。

(2)inotifywatch:收集被監(jiān)控的文件系統(tǒng)使用的統(tǒng)計(jì)數(shù)據(jù),指文件系統(tǒng)事件發(fā)生的次數(shù)統(tǒng)計(jì)。

inotifywait命令參數(shù):


-e的參數(shù):


測(cè)試實(shí)踐:

inotifywait?-mrq?--timefmt?'%d/%m/%y?%H:%M'?--format?'%T?%w%f'?-e?create?/data

時(shí)間格式:


手工測(cè)試監(jiān)控目錄增刪改查的命令:


企業(yè)實(shí)戰(zhàn)調(diào)整:


sersync 的優(yōu)點(diǎn):

1)使用c++編寫(xiě),對(duì)Linux系統(tǒng)文件產(chǎn)生的臨時(shí)文件和重復(fù)的文件操作會(huì)進(jìn)行過(guò)濾,在結(jié)合rsync復(fù)制的時(shí)候,會(huì)減少運(yùn)行時(shí)消耗的本地及網(wǎng)絡(luò)資源,因此速度更快。

(2)使用多線(xiàn)程進(jìn)行復(fù)制(即可以并發(fā)復(fù)制多個(gè)不同文件),尤其是復(fù)制較大文件時(shí),能夠保證多個(gè)服務(wù)器實(shí)時(shí)保持復(fù)制狀態(tài)。

(3)sersync自帶出錯(cuò)出路機(jī)制,通過(guò)失敗隊(duì)列對(duì)出錯(cuò)的文件重新復(fù)制,如果仍然失敗,則每若干個(gè)小時(shí)對(duì)復(fù)制失敗的文件再重新復(fù)制。

(4)sersync自帶crontab功能,只需在xml配置文件中開(kāi)啟,即可按預(yù)先的配置,隔一段時(shí)間整體復(fù)制一次。

(5)sersync自帶socket與http的協(xié)議擴(kuò)展,可以滿(mǎn)足有特殊需求的公司二次開(kāi)發(fā)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容