第三十五節(jié)課綜合架構實時同步

  1. 網(wǎng)站實時同步服務:
    數(shù)據(jù)備份方法:
    定時任務備份數(shù)據(jù): 內(nèi)部人員備份數(shù)據(jù) 備份數(shù)據(jù)最短周期1分鐘
    實時同步備份數(shù)據(jù): 外部人員備份數(shù)據(jù)(用戶) 沒有同步等待時間

    實時同步數(shù)據(jù)原理:

    1. 監(jiān)視存儲服務器上指定目錄 數(shù)據(jù)信息變化 inotify 監(jiān)控軟件
    2. 利用同步傳輸數(shù)據(jù)軟件 將變化數(shù)據(jù)傳輸 rsync 傳輸數(shù)據(jù)
    3. 實現(xiàn)實時傳輸數(shù)據(jù) inotify+rsync 實時同步
  2. 數(shù)據(jù)監(jiān)控軟件 inotify
    作用: 監(jiān)控目錄中數(shù)據(jù)信息變化
    第一個里程: 部署安裝軟件
    yum install -y inotify-tools --- 系統(tǒng)中epel源是否優(yōu)化

    /usr/bin/inotifywait 重要 --- 監(jiān)控目錄數(shù)據(jù)信息變化命令 修改 創(chuàng)建 刪除 移動
    /usr/bin/inotifywatch 了解 --- 統(tǒng)計目錄產(chǎn)生變化的信息 修改多少次 創(chuàng)建多少次 刪除多少次 移動多少次

    第二個里程: 掌握inotifywait監(jiān)控命令用法:
    --exclude <pattern> --- 進行監(jiān)控數(shù)據(jù)時,指定哪些數(shù)據(jù)信息不要進行監(jiān)控
    --excludei <pattern> --- 進行監(jiān)控數(shù)據(jù)時,指定哪些數(shù)據(jù)信息不要進行監(jiān)控 根據(jù)指定數(shù)據(jù)名稱信息 無論大小寫進行排除監(jiān)控
    -m|--monitor --- 一直對指定目錄進行監(jiān)控
    -r|--recursive --- 遞歸監(jiān)控目錄中數(shù)據(jù)變化
    --format <fmt> --- 定義輸出信息格式
    %w 監(jiān)控目錄路徑信息
    %f 監(jiān)控觸發(fā)事件數(shù)據(jù)信息
    %e 相應事件信息
    %T 定時觸發(fā)事件時間信息(調(diào)用--timefmt所定義時間格式)
    --timefmt <fmt> --- 定義時間格式信息 date "+%F"
    -q|--quiet --- 將某些信息不要進行顯示輸出 >/dev/null
    -e|--event --- 指定監(jiān)控的事件信息

    inotify所有事件信息:
    access file or directory contents were read
    文件或目錄內(nèi)容被讀取
    modify file or directory contents were written
    文件或目錄內(nèi)容被寫入
    attrib file or directory attributes changed
    文件或目錄屬性信息改變
    close_write file or directory closed, after being opened in writeable mode
    文件或目錄被關閉, 在文件打開后寫入新的信息后關閉了文件或目錄
    開發(fā): 程序修改數(shù)據(jù)信息
    邏輯過程: 打開文件 --- 編輯文件 --- 關閉文件
    close_nowrite file or directory closed, after being opened in read-only mode
    文件或目錄被關閉, 在文件打開后沒有寫入新的信息后關閉了文件或目錄
    close file or directory closed, regardless of read/write mode
    文件或目錄被關閉, 不管文件是否是讀或是寫
    open file or directory opened
    文件或目錄被打開
    moved_to file or directory moved to watched directory
    文件或目錄被移動到監(jiān)控目錄中 其他目錄數(shù)據(jù) --> 監(jiān)控目錄(參照目錄) 拉取
    moved_from file or directory moved from watched directory
    文件或目錄被移動出監(jiān)控目錄 監(jiān)控目錄(參照目錄)數(shù)據(jù) --> 其他目錄中 推送
    move file or directory moved to or from watched directory
    只要監(jiān)控目錄中,有數(shù)據(jù)移動操作
    create file or directory created within watched directory
    在監(jiān)控目錄中,有文件或目錄數(shù)據(jù)信息創(chuàng)建操作
    delete file or directory deleted within watched directory
    在監(jiān)控目錄中,有文件或目錄數(shù)據(jù)信息刪除操作

    inotifywait -mr /data --format "%T %w %f %e" --timefmt "%F %T" -e create,delete,move,close_write
    Setting up watches. Beware: since -r was given, this may take a while!
    Watches established.
    2019-08-19 17:07:22 /data/oldboy100/ oldboy06.txt CREATE
    2019-08-19 17:07:22 /data/oldboy100/ oldboy06.txt CLOSE_WRITE,CLOSE

    [root@nfs01 /]# inotifywait -mrq /data --format "%T %w %f %e" --timefmt "%F %T" -e create,delete,move,close_write
    2019-08-19 17:10:10 /data/oldboy100/ oldboy07.txt CREATE
    2019-08-19 17:10:10 /data/oldboy100/ oldboy07.txt CLOSE_WRITE,CLOSE

    inotify監(jiān)控數(shù)據(jù)變化命令 -- 實現(xiàn)數(shù)據(jù)變化實時同步
    inotifywait -mrq /data --format "%w%f" -e create,delete,move,close_write

  3. 實現(xiàn)實時同步數(shù)據(jù)過程:
    方法一: 編寫腳本

    01. 監(jiān)控目錄數(shù)據(jù)信息變化

    inotifywait -mrq /data --format "%w%f" -e create,delete,move,close_write|
    while read line

    補充: 腳本循環(huán)用法:

    1. for 循環(huán) for 變量 in 循環(huán)信息;do 操作命令;done 有限制循環(huán)
    2. while 循環(huán) while 條件表達式; do 操作命令;done 死循環(huán) 當條件滿足時, 條件為真
    3. until 循環(huán) until 條件表達式; do 操作命令;done 死循環(huán) 當條件不滿足, 條件為假

    02. 將變化數(shù)據(jù)進行實時同步

    rsync -avz $line rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

    腳本信息:

    !/bin/bash

    inotifywait -mrq /data --format "%w%f" -e create,delete,move,close_write|
    while read line=oldboy03.txt
    do
    rsync -avz --delete /data/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
    done

    問題:

    1. 如何讓腳本文件始終運行
      nohup sh /server/scripts/inotify.sh &

    2. 利用腳本數(shù)據(jù)同步完畢后, 腳本會依舊持續(xù)運行?
      cd /data && rsync -az -R "./oldboy02.txt" rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
      cd /data && rsync -az -R --delete ./ --include="oldboy01.txt" --exclude=* rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

    方式二: 利用軟件 二進制軟件
    第一個里程: 下載部署實時同步軟件 sersync-->inotify+rsync
    https://github.com/wsgzao/sersync
    mkdir /server/tools -p
    將軟件保存在此目錄中
    unzip sersync_installdir_64bit.zip
    cd /server/tools/sersync_installdir_64bit

    第二個里程: 將解壓好目錄保存到指定目錄中
    mv sersync/ /usr/local/

    第三個里程: 修改軟件配置信息
    vim conf/confxml.xml

    定義 在同步傳輸數(shù)據(jù)時,哪些數(shù)據(jù)不要進行傳輸同步

    6 <filter start="false">
    7 <exclude expression="(.).svn"></exclude>
    8 <exclude expression="(.
    ).gz"></exclude>
    9 <exclude expression="^info/"></exclude>
    10 <exclude expression="^static/
    "></exclude>
    11 </filter>

    定義監(jiān)控事件信息

    12 <inotify>
    13 <delete start="true"/>
    14 <createFolder start="true"/>
    15 <createFile start="false"/>
    16 <closeWrite start="true"/>
    17 <moveFrom start="true"/>
    18 <moveTo start="true"/>
    19 <attrib start="false"/>
    20 <modify start="false"/>
    21 </inotify>

    24 <localpath watch="/opt/tongbu">
    25 <remote ip="127.0.0.1" name="tongbu1"/>
    26
    27
    28 </localpath>
    29 <rsync>
    30 <commonParams params="-artuz"/>
    31 <auth start="false" users="root" passwordfile="/etc/rsync.pas"/>
    32 <userDefinedPort start="false" port="874"/>

    第四個里程: sersync服務如何啟動
    cd /usr/local/sersync/bin/
    chmod +x sersync
    sersync -dro /usr/local/sersync/conf/confxml.xml

    顯示數(shù)據(jù)同步過程方法:
    修改配置文件:
    <debug start="true"/>

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末固蛾,一起剝皮案震驚了整個濱河市瑞凑,隨后出現(xiàn)的幾起案子算吩,更是在濱河造成了極大的恐慌酿愧,老刑警劉巖气筋,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件薯嗤,死亡現(xiàn)場離奇詭異绰寞,居然都是意外死亡豪墅,警方通過查閱死者的電腦和手機泉手,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來偶器,“玉大人斩萌,你說我怎么就攤上這事啡氢。” “怎么了术裸?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵倘是,是天一觀的道長。 經(jīng)常有香客問我袭艺,道長搀崭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任猾编,我火速辦了婚禮瘤睹,結果婚禮上,老公的妹妹穿的比我還像新娘答倡。我一直安慰自己轰传,他們只是感情好,可當我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布瘪撇。 她就那樣靜靜地躺著获茬,像睡著了一般。 火紅的嫁衣襯著肌膚如雪倔既。 梳的紋絲不亂的頭發(fā)上恕曲,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天,我揣著相機與錄音渤涌,去河邊找鬼佩谣。 笑死,一個胖子當著我的面吹牛实蓬,可吹牛的內(nèi)容都是我干的茸俭。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼安皱,長吁一口氣:“原來是場噩夢啊……” “哼调鬓!你這毒婦竟也來了?” 一聲冷哼從身側響起练俐,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤袖迎,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后腺晾,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體燕锥,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年悯蝉,在試婚紗的時候發(fā)現(xiàn)自己被綠了归形。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡鼻由,死狀恐怖暇榴,靈堂內(nèi)的尸體忽然破棺而出厚棵,到底是詐尸還是另有隱情,我是刑警寧澤蔼紧,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布婆硬,位于F島的核電站,受9級特大地震影響奸例,放射性物質(zhì)發(fā)生泄漏彬犯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一查吊、第九天 我趴在偏房一處隱蔽的房頂上張望谐区。 院中可真熱鬧,春花似錦逻卖、人聲如沸宋列。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽炼杖。三九已至,卻和暖如春仇参,著一層夾襖步出監(jiān)牢的瞬間嘹叫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工诈乒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人婆芦。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓怕磨,卻偏偏與公主長得像,于是被迫代替她去往敵國和親消约。 傳聞我的和親對象是個殘疾皇子肠鲫,可洞房花燭夜當晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容