day35 綜合架構(gòu)實(shí)時(shí)同步
課程介紹:
1.實(shí)時(shí)同步原理概念
2.實(shí)現(xiàn)實(shí)時(shí)同步方式
3.實(shí)現(xiàn)實(shí)時(shí)同步方式
1)利用腳本實(shí)現(xiàn)實(shí)時(shí)同步
2)利用軟件實(shí)現(xiàn)實(shí)時(shí)同步
知識(shí)回顧
全網(wǎng)備份項(xiàng)目思路:
1.對(duì)工作任務(wù)進(jìn)行確認(rèn) (筆記錄音)
2.根據(jù)需求編寫文檔資料 (部署計(jì)劃 時(shí)間規(guī)劃 人員規(guī)劃 方案規(guī)劃)
3.和領(lǐng)導(dǎo)開會(huì) (相關(guān)人員著急)
4.根據(jù)規(guī)劃完成任務(wù)
5.完成后項(xiàng)目文檔總結(jié)(項(xiàng)目會(huì)議 人員培訓(xùn))
完善客戶端主機(jī)沒有發(fā)送數(shù)據(jù)時(shí),也可以讓運(yùn)維人員知道
rsync
if [ $? != 0 ]
then
echo "$(houstname -i)backup is failed" | mail -s "result" 郵箱
網(wǎng)站實(shí)時(shí)同步服務(wù)
數(shù)據(jù)備份方法:
定時(shí)任務(wù)備份數(shù)據(jù): 內(nèi)部人員備份數(shù)據(jù) (備份數(shù)據(jù)最短周期一分鐘)
實(shí)時(shí)同步備份數(shù)據(jù): 外部人員備份數(shù)據(jù)(用戶數(shù)據(jù) 沒有等待時(shí)間)
實(shí)時(shí)同步備份原理
1. 監(jiān)視存儲(chǔ)服務(wù)器上指定目錄 數(shù)據(jù)信息變化 inotify
2.利用同步傳輸數(shù)據(jù)軟件 將變化數(shù)據(jù)傳輸 rsync 傳輸數(shù)據(jù)
3.實(shí)現(xiàn)實(shí)時(shí)傳輸數(shù)據(jù) inotify+rsync 實(shí)時(shí)同步
image.png
數(shù)據(jù)監(jiān)控軟件 inotify
作用:監(jiān)控目錄中數(shù)據(jù)信息變化
第一個(gè)里程: 部署安裝軟件
yum install -y inotify-tools - - - 系統(tǒng)中epel源是否優(yōu)化
/usr/bin/inotify - - -監(jiān)控目錄數(shù)據(jù)信息變化命令
第二個(gè)里程: 掌握inotifywait監(jiān)控命令用法:
--exclude <pattern> - - -進(jìn)行監(jiān)控?cái)?shù)據(jù)時(shí),指定排除某目錄/文件
--excludei <pattern>- - -進(jìn)行監(jiān)控?cái)?shù)據(jù)時(shí),指定哪些數(shù)據(jù)不區(qū)分大小寫
-m,--monitor - - - 一直監(jiān)控指定目錄
-r,--recursive - - - 遞歸監(jiān)控目錄數(shù)據(jù)變化
--format - - - 定義輸出信息格式
%w 監(jiān)控目錄路徑信息
%f 監(jiān)控觸發(fā)事件數(shù)據(jù)信息
%e 監(jiān)控被觸發(fā)的事件
%T 定義觸發(fā)事件時(shí)間信息(調(diào)用--timefmt所定義的事件格式)
--timefmt - - - 定義時(shí)間格式 "%F %T"
-q,--quiet - - - 將某些信息不要進(jìn)行顯示輸出==2>/dev/unll
-e,--event - - - 指定監(jiān)控的事件信息create,delete,move,close_write
inotify所有事件信息
access - - - 文件或目錄內(nèi)容被讀取
modify - - - 文件或目錄內(nèi)容被寫入
attrib - - - 文件或目錄屬性信息改變
close_write - - - 文件或目錄被打開--寫入--關(guān)閉
close_nowrite- - - 文件或目錄被打開--沒有寫入--關(guān)閉
close - - - 文件或目錄被關(guān)閉
open - - - 文件或目錄被打開
moved_to - - - 文件或目錄被移動(dòng)到監(jiān)控的目錄中(拉取)
moved_from - - - 文件或目錄被移動(dòng)出監(jiān)控目錄(推送)
move - - - 監(jiān)控目錄中:文件或目錄被移動(dòng)
create - - - 監(jiān)控目錄中:文件或目錄信息進(jìn)行創(chuàng)建
delete - - - 監(jiān)控目錄中:文件或目錄被刪除
- inotifywait -mr /data --format "%T %w %f %e" --timefmt "%F %T" -e create,move,delete,close_write
- inotifywait -mrq /data --format "%w%f" -e create,delete,move,close_write 主要使用inotify監(jiān)控?cái)?shù)據(jù)變化命令 -- 實(shí)現(xiàn)數(shù)據(jù)變化實(shí)時(shí)同步
事項(xiàng)實(shí)時(shí)同步數(shù)據(jù)過程
補(bǔ)充: 腳本循環(huán)用法: sleep腳本間隔時(shí)間
1. for 循環(huán) for 變量 in 循環(huán)信息;do 操作命令;done(有限制循環(huán))
2. while循環(huán) while 條件表達(dá)式;do 操作命令;done(死循環(huán) 當(dāng)條件為一時(shí)一直循環(huán) 真)
3. until循環(huán) until 條件表達(dá)式;do 操作命令;done(死循環(huán) 當(dāng)條件為零時(shí)一直循環(huán) 假)
方式一: 編寫腳本實(shí)現(xiàn)
#!/bin/bash
#01.監(jiān)控目錄數(shù)據(jù)變化
inotifywait -mrq /data --format "%w%f" -e
create,delete,move,close_write|while rade line
#02.將變化數(shù)據(jù)進(jìn)行傳輸
rsync -avz $line rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
問題:
1.如何讓腳本文件始終運(yùn)行?
nohup sh jiaoben.sh &
2.數(shù)據(jù)已經(jīng)完成但腳本還在賦值運(yùn)行?
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
方式二: 利用軟件
第一個(gè)里程:利用lrszs下載軟件放入到linux
mkdir /server/tools -p
將軟件保存在此目錄中
unzip sersync_installdir_64bit.zip
cd /server/tools/sersync_installdir_64bit
第二個(gè)里程: 將解壓好目錄保存到指定目錄中
mv sersync/ /usr/local/
第三個(gè)里程: 修改軟件配置信息
vim conf/confxml.xml
# 定義 在同步傳輸數(shù)據(jù)時(shí),哪些數(shù)據(jù)不要進(jìn)行傳輸同步
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"/>
第四個(gè)里程: sersync服務(wù)如何啟動(dòng)
export PATH=$PATH:/usr/local/sersync/bin/
cd /usr/local/sersync/bin/
chmod +x sersync
sersync -dro /usr/local/sersync/conf/confxml.xml
顯示數(shù)據(jù)同步過程方法:
修改配置文件:
<debug start="true"/>
05. 課程知識(shí)點(diǎn)總結(jié)
1) 網(wǎng)站實(shí)時(shí)同步原理概念 1. 監(jiān)控?cái)?shù)據(jù) 2. 傳輸數(shù)據(jù) 3. 監(jiān)控+傳輸
2) 掌握inotify監(jiān)控軟件使用方法
3) 掌握實(shí)現(xiàn)實(shí)時(shí)同步方法
a 利用腳本實(shí)現(xiàn)
循環(huán)方式 shell內(nèi)置變量 $# $* 腳本如何在后臺(tái)一直運(yùn)行 nohup 腳本信息 &
b 利用軟件實(shí)現(xiàn)
sersync軟件
1) 軟件部署過程 --- 二進(jìn)制方式部署 解壓
2) 編寫軟件配置 結(jié)合rsync傳輸數(shù)據(jù)命令
3) 如何啟動(dòng)服務(wù) sersync命令參數(shù)
作業(yè):
01. lsync實(shí)時(shí)同步軟件 周五
02. 如何編寫sersync啟動(dòng)腳本 sersyncd stop/start/restart