一、NFS服務(wù)耦合度
nfs耦合度:
是指nfs客戶端和服務(wù)端關(guān)系過于緊密缔刹,當(dāng)nfs服務(wù)沒有正常啟動的情況下硝训,會使客戶端一直向服務(wù)端發(fā)送請求科平,而不會因服務(wù)沒有啟動而終止的現(xiàn)象
解決辦法:autofs分布式存儲(自動掛載--按需掛載)
部署位置:nfs服務(wù)客戶端
部署過程:
1.確認是否安裝服務(wù)軟件
yum install -y autofs
2.部署配置文件
第一里程
vim /etc/auto.master ==>主配置文件
掛載點 擴展配置文件路徑 -timeout n (單位:s)
如:/mnt /etc/nfs.mount -timeout 60
第二里程
vim /etc/nfs.mount ==>擴展配置文件(這里的文件路徑不固定,根據(jù)主配置文件中設(shè)定的擴展配置文件)
格式:
切入點目錄 指定掛載類型 nfs服務(wù)私網(wǎng)IP地址:共享目錄
切入點目錄就是指崭别,當(dāng)進入該目錄時冬筒,再進行自動掛載
如:
nfsdata -fstype=nfs 172.16.1.31:/data
第三里程
vim /etc/sysconfig/autofs ==>閑置時間設(shè)置
TIMEOUT=n(單位:s)
改配置可在主配置文件中進行,也可再配置文件中編輯
第四里程:
systemctl start autof
3.檢查
進入指定切入點目錄茅主,激活自動掛載操作舞痰,當(dāng)達到閑置時間不適用時則自動卸載,解決耦合度過高的問題
二诀姚、完善全網(wǎng)備份腳本
1.客戶端主機沒有發(fā)送數(shù)據(jù)時,也可以讓運維人員得知
思路一: 根據(jù)客戶端傳輸數(shù)據(jù)結(jié)果
rsync -az /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
if [ (hostname -i) backup is failed" | mail -s "result" 郵箱
fi
ps:想要發(fā)送郵件成功响牛,需現(xiàn)在本地服務(wù)器配置郵箱文件
思路二: 根據(jù)服務(wù)端傳輸數(shù)據(jù)結(jié)果
a. 判斷傳輸過來數(shù)據(jù)文件名稱信息(日期信息)
b. 判斷相應(yīng)主機備份目錄中是否有finger指紋文件
沒有: 報響應(yīng)主機傳輸數(shù)據(jù)失敗
有: 顯示傳輸OK 數(shù)據(jù)傳輸不完成 數(shù)據(jù)文件不存在
2.讓郵件信息按照指定格式內(nèi)容發(fā)送
awk -F "[:/ ]+" '{print 5,$6}' /tmp/check_data.txt(校驗結(jié)果文件) | mail -s "result" 13936276656@163.com(郵箱)
三、網(wǎng)站實時同步服務(wù):
數(shù)據(jù)備份方法:實時備份和定時備份
區(qū)別:
定時任務(wù)備份數(shù)據(jù):由內(nèi)部人員備份數(shù)據(jù)且備份數(shù)據(jù)最短周期1分鐘
實時同步備份數(shù)據(jù):由外部人員備份數(shù)據(jù)(用戶)且沒有同步等待時間
實時同步數(shù)據(jù)原理:
第一步:監(jiān)視存儲服務(wù)器上指定目錄的數(shù)據(jù)信息變化
使用inotify監(jiān)控軟件
第二步:利用同步傳輸數(shù)據(jù)軟件,將變化數(shù)據(jù)進行傳輸呀打,主要使用rsync軟件進行傳輸數(shù)據(jù)
第三步:實現(xiàn)實時傳輸數(shù)據(jù)矢赁,結(jié)合監(jiān)控軟件和同步軟件即inotify+rsync實現(xiàn)實時同步過程
四、數(shù)據(jù)監(jiān)控軟件 ==>inotify
作用: 監(jiān)控目錄中數(shù)據(jù)信息變化
安裝部署過程
第一個里程: 部署安裝軟件
yum install -y inotify-tools
ps:保證系統(tǒng)中epel源是否優(yōu)化贬丛,否則無法正常安裝
prm -ql inotify-tools 查看該服務(wù)軟件內(nèi)容
/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 相應(yīng)事件信息暮屡、%T 定時觸發(fā)事件時間信息(調(diào)用--timefmt所定義時間格式)】
--timefmt <fmt> --- 定義時間格式信息撤摸,類似于date "+%F"
-q|--quiet --- 將某些信息不要進行顯示輸出,類似于>/dev/null
-qq ---不顯示任何信息
-s|--syslog ---發(fā)錯錯誤信息到日志文件中
-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
文件或目錄被關(guān)閉, 在文件打開后寫入新的信息后關(guān)閉了文件或目錄
開發(fā): 程序修改數(shù)據(jù)信息>邏輯過程: 打開文件 --- 編輯文件 --- 關(guān)閉文件
close_nowrite ==> file or directory closed, after being opened in read-only mode
文件或目錄被關(guān)閉, 在文件打開后沒有寫入新的信息后關(guān)閉了文件或目錄
close ==> file or directory closed, regardless of read/write mode
文件或目錄被關(guān)閉, 不管文件是否是讀或是寫
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參數(shù)用法示例
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
ps:①、--timefmt定義時間格式參數(shù)無法單獨使用莺掠,必須將定義好的格式給--format參數(shù)進行調(diào)用衫嵌,將時間格式進行顯示輸出
②、常見的時間類型信息為:增、刪讨韭、移框喳、改即在“-e”指定監(jiān)控時間信息時主要顯示的有:create/delete/move/close_write四種
③、inotify監(jiān)控數(shù)據(jù)變化命令 -- 實現(xiàn)數(shù)據(jù)變化實時同步
inotifywait -mrq /data --format "%w%f" -e create,delete,move,close_write
五酒朵、實現(xiàn)實時同步數(shù)據(jù)過程:
方法一: 編寫腳本
- 監(jiān)控目錄數(shù)據(jù)信息變化
inotifywait -mrq /data --format "%w%f" -e create,delete,move,close_write|
while read line(意思為:將監(jiān)控結(jié)果一直輸送,即死循環(huán)故用while扎附,while read就是將監(jiān)控數(shù)據(jù)信息一直不斷讀取蔫耽,并賦值給line) - 將變化數(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 $line rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
done
擴展完善
- 如何讓腳本文件始終運行
nohup sh /server/scripts/inotify.sh & - 利用腳本數(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
在進行無差異同步時,通過--include參數(shù)指定無差異同步的數(shù)據(jù)信息留夜,再通過--exclude將不需要的無差別同步到信息進行排除
補充:
腳本循環(huán)用法:
- for 循環(huán) for 變量 in 循環(huán)信息;do 操作命令;done 有限制循環(huán)
- while 循環(huán) while 條件表達式; do 操作命令;done 死循環(huán) 當(dāng)條件滿足時, 條件為真
- until 循環(huán) until 條件表達式; do 操作命令;done 死循環(huán) 當(dāng)條件不滿足, 條件為假
參數(shù):
1.$#:代表傳參的個數(shù)信息匙铡,有多少傳參就代表幾個
2.shift:代表將后一個傳參向前逐個移動
3.$*:將傳參參數(shù)進行顯示
方式二: 利用軟件 二進制軟件
第一個里程: 下載部署實時同步軟件 sersync ==>inotify+rsync
指定下載地址:https://github.com/wsgzao/sersync(無法通過yum正常下載)
mkdir /server/tools -p ==>將軟件保存在此目錄中
rz -y ==>選擇路徑,通過Windows下載到Linux中
解壓:unzip sersync_installdir_64bit.zip
檢查:cd /server/tools/sersync_installdir_64bit
第二個里程: 將解壓好目錄保存到指定目錄中
mv sersync/ /usr/local/
第三個里程: 修改軟件配置信息
vim /usr/local/sersync/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
ps: 26和27行為需要多個模塊進行備份時碍粥,可啟動的配置信息慰枕,將!--去除即可
28 </localpath>
29 <rsync>
30 <commonParams params="-artuz"/>
31 <auth start="false" users="root" passwordfile="/etc/rsync.pas"/>
ps:start配置參數(shù)需要更改為true即纲,后續(xù)參數(shù)才能正常使用
32 <userDefinedPort start="false" port="874"/>
ps:sersync軟件默認斷樓為873具帮,當(dāng)修改默認端口號為其他時,如:874則將start配置參數(shù)修改為true,并將后續(xù)port修改為修改后的端口號蜂厅,否則默認情況下匪凡,start設(shè)置為false即可
配置文件顏色與命令顏色對應(yīng)處為修改處
第四個里程: sersync服務(wù)如何啟動
cd /usr/local/sersync/bin/
chmod +x sersync
./sersync -dro /usr/local/sersync/conf/confxml.xml
-d:啟用守護進程模式,讓此軟件一直運行
-r:監(jiān)控前掘猿,將監(jiān)控目錄與遠程主機用rsync命令進行檢驗一次
-o:指定監(jiān)控分配置文件病游,且該參數(shù)為所有參數(shù)的最后位置,接指定的配配置文件稠通;該參數(shù)的主要目的就是使針對不同服務(wù)器集群時衬衬,做好相應(yīng)的指定同步工作
顯示數(shù)據(jù)同步過程方法:
修改配置文件:vim /usr/local/sersync/conf/confxml.xml
4 <debug start="false"/>
修改為true
六、實現(xiàn)腳本重啟sersync服務(wù)
編寫腳本思路:
第一步: 如何關(guān)閉和啟動服務(wù)
啟動:sersync -dro /usr/local/sersync/conf/confxml.xml
停止:killall sersync
第二步:編寫腳本信息
vim /server/scripts/sersync.sh
#!/bin/bash
export PATH=$PATH:/usr/local/sersync/bin/
# 啟動服務(wù)
if [ "$1" == "start" ]
then
sersync -dro /usr/local/sersync/conf/confxml.xml
elif [ "$1" == "stop" ]
then
killall sersync
sleep 1
killall sersync
elif [ "$1" == "restart" ]
then
killall sersync
sleep1
sersync -dro /usr/local/sersync/conf/confxml.xml
else
echo "pls input: start|stop|restart"
fi
第三步:賦予權(quán)限信息
chmod +x server/scripts/sersync.sh
第四步:檢查
sh sersync/scripts/sersync.sh stop/start/restart
補充:殺進程的三種方式
1.kill
用法: kill pid --- 進程殺死會有提示信息
- killall(推薦)
用法: killall 進程名稱 --- 進程殺死會有提示信息 推薦
安裝kallall時直接使用yum install -y killall無法正常安裝
需先確認killall屬于哪個軟件中的相應(yīng)命令
yum provides killall改橘,通過次方式查找相關(guān)軟件包滋尉,再次安裝該命令 - pkill
用法: pkill 進程名 --- 模糊匹配進程名稱(殺死類似名稱的進程全部殺死)
4.特殊用法:
kill -9 進程號 --- 強制殺死進程