服務(wù)器數(shù)據(jù)的實時備份與定時備份(rsync+inotify)

需求:對服務(wù)器數(shù)據(jù)進(jìn)行實時備份蝶棋,不能丟失任何已生成數(shù)據(jù)
思路:需要新增一臺備份服務(wù)器,利用inotify監(jiān)測主服務(wù)器需要備份的目錄下的數(shù)據(jù)忽妒,有任何改動立即調(diào)用rsync進(jìn)行數(shù)據(jù)同步玩裙。并且在備份服務(wù)器上對同步數(shù)據(jù)每天進(jìn)行定時備份(如果兩臺都是阿里云服務(wù)器,建議開通內(nèi)網(wǎng)通訊段直,這樣不會影響外網(wǎng)流量而且傳輸速度很快)


server name IP
主服務(wù)器 171.12.13.36
備份服務(wù)器 171.12.13.37


安裝調(diào)試inotify(主服務(wù)器)

安裝inotify步驟參考:https://blog.51cto.com/sndapk/1252218


調(diào)試rsync

ubuntu 16.04默認(rèn)已安裝rsync吃溅,rsync服務(wù)默認(rèn)不是啟動的,我們要修改rsync文件鸯檬。

sudo vim /etc/default/rsync

1.修改配置項:

RSYNC_ENABLE=true   #false改true

2.備份端創(chuàng)建賬號密碼文件决侈,主服務(wù)器端只需創(chuàng)建密碼文件
備份端創(chuàng)建:

vim /etc/rsyncd.secret 
JackMa:wobuxihuanqian

主服務(wù)器創(chuàng)建:

vim /etc/rsyncd.pwd 
wobuxihuanqian

3.創(chuàng)建配置文件(備份端)
將rsyncd.conf 復(fù)制到/etc目錄下,并進(jìn)行配置

sudo cp /usr/share/doc/rsync/examples/rsyncd.conf /etc
sudo vi /etc/rsyncd.conf
#日志存放地址
log file=/home/hyperledger_data/rsync_logs/rsync_log

pid file=/var/run/rsyncd.pid
syslog facility=daemon
#以下配置的代表名稱
[demo]
comment = demo
path = /home/hyperledger_data/volumes/
use chroot = no
lock file = /var/lock/rsyncd
read only = no
list = yes
uid = 0
gid = 0
#用戶名
auth users = JackMa
#密碼文件地址
secrets file = /etc/rsyncd.secret
strict modes = yes
#允許同步的客戶端地址
hosts allow = 171.12.13.36
ignore errors = yes
ignore nonreadable = yes
transfer logging = yes
log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes.
timeout = 600
#refuse options = checksum dry-run
dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.

4.兩邊均啟動rsync服務(wù),并設(shè)置成開機(jī)啟動

service rsync start
update-rc.d rsync defaults 90

5.在主服務(wù)器端先執(zhí)行一次全量同步颜及,看下rsync能不能用

#-a 歸檔模式痊土,表示遞歸傳輸并保持文件屬性
#-v 顯示rsync過程中詳細(xì)信息
#-z 傳輸時進(jìn)行壓縮提高效率
#-R 在備份端創(chuàng)建絕對路徑上的所有目錄
rsync -avzR --password-file=/etc/rsync.pwd /var/lib/docker/volumes/ JackMa@171.12.13.37::demo


編寫實時同步腳本(主服務(wù)器)

本腳本參考自:http://www.ttlsa.com/web/let-infotify-rsync-fast/

vim /home/backups_script/rsync_scripts
#!/bin/bash
src=/var/lib/docker/volumes/         # 需要同步的源路徑
des=demo                             # 目標(biāo)服務(wù)器上 rsync --daemon 發(fā)布的名稱,rsync --daemon這里就不做介紹了,網(wǎng)上搜一下痰娱,比較簡單鲸睛。
rsync_passwd_file=/etc/rsync.pwd     # rsync驗證的密碼文件
ip1=171.12.13.37                     # 目標(biāo)服務(wù)器1       
user=JackMa                      # rsync --daemon定義的驗證用戶名
cd ${src}                            # 此方法中拳亿,由于rsync同步的特性,這里必須要先cd到源目錄,inotify再監(jiān)聽 ./ 才能rsync同步后目錄結(jié)構(gòu)一致瞬雹,有興趣的同學(xué)可以進(jìn)行各種嘗試觀看其效果
/usr/local/bin/inotifywait -mrq --format  '%Xe %w%f' -e modify,create,delete,attrib,close_write,move $src | while read file         # 把監(jiān)控到有發(fā)生更改的"文件路徑列表"循環(huán)
do
        INO_EVENT=$(echo $file | awk '{print $1}')      # 把inotify輸出切割 把事件類型部分賦值給INO_EVENT
        INO_FILE=$(echo $file | awk '{print $2}')       # 把inotify輸出切割 把文件路徑部分賦值給INO_FILE
        echo "-------------------------------$(date)------------------------------------"
        echo $file
        #增加胖缤、修改初烘、寫入完成哆料、移動進(jìn)事件
        #增唬渗、改放在同一個判斷卒稳,因為他們都肯定是針對文件的操作,即使是新建目錄,要同步的也只是一個空目錄份企,不會影響速度降宅。
        if [ "$INO_EVENT" = "CREATE" ] || [ "$INO_EVENT" = "MODIFY" ] || [ "$INO_EVENT" = "CLOSE_WRITE" ] || [ "$INO_EVENT" = "MOVED_TO" ];then
                echo 'CREATE or MODIFY or CLOSE_WRITE or MOVED_TO'
                rsync -avzcR --password-file=${rsync_passwd_file} $(dirname ${INO_FILE}) ${user}@${ip1}::${des}         # INO_FILE變量代表路徑哦  -c校驗文件內(nèi)容
                 #仔細(xì)看 上面的rsync同步命令 源是用了$(dirname ${INO_FILE})變量 即每次只針對性的同步發(fā)生改變的文件的目錄(只同步目標(biāo)文件的方法在生產(chǎn)環(huán)境的某些極端環(huán)境下會漏文件 現(xiàn)在可以在不漏文件下也有不錯的速度 做到平衡) 然后用-R參數(shù)把源的目錄結(jié)構(gòu)遞歸到目標(biāo)后面保證目錄結(jié)構(gòu)一致性
        fi
        #刪除瘸恼、移動出事件
        if [ "$INO_EVENT" = "DELETE" ] || [ "$INO_EVENT" = "MOVED_FROM" ];then
                echo 'DELETE or MOVED_FROM'
                rsync -avzR --delete --password-file=${rsync_passwd_file} $(dirname ${INO_FILE}) ${user}@${ip1}::${des}
                #看rsync命令 如果直接同步已刪除的路徑${INO_FILE}會報no such or directory錯誤 所以這里同步的源是被刪文件或目錄的上一級路徑冰啃,并加上--delete來刪除目標(biāo)上有而源中沒有的文件扇调,這里不能做到指定文件刪除碳柱,如果刪除的路徑越靠近根涎拉,則同步的目錄月多季俩,同步刪除的操作就越花時間店归。這里有更好方法的同學(xué)肄满,歡迎交流汇陆。
        fi
        #修改屬性事件 指 touch chgrp chmod chown等操作
        if [ "$INO_EVENT" = "ATTRIB" ];then
                echo 'ATTRIB'
                if [ ! -d "$INO_FILE" ]                 # 如果修改屬性的是目錄 則不同步毡代,因為同步目錄會發(fā)生遞歸掃描,等此目錄下的文件發(fā)生同步時导梆,rsync會順帶更新此目錄看尼。
                then
                        rsync -avzcR --password-file=${rsync_passwd_file} $(dirname ${INO_FILE}) ${user}@${ip1}::${des}
                fi
        fi
done
~           

將實時腳本設(shè)置成開機(jī)自啟動

vim /etc/rc.local
#這句話加在exit0之前
nohup bash /home/backups_script/rsync_scripts >> /home/backups_script/rsync.log 2>&1 &






編寫定時備份腳本(備份端)

vim /home/hyperledger_data_bakup/backup.sh
#!/bin/bash
bak_dir=/home/hyperledger_data_bakup
tmp_dir=/home/hyperledger_data_bakup/tmp
target_dir=/home/hyperledger_data

#創(chuàng)建一個臨時文件(要保存?zhèn)浞莸穆窂剑?mkdir $tmp_dir
#數(shù)據(jù)存在backups目錄下藏斩,備份到beifen目錄下媳拴,所以先將數(shù)據(jù)拷過來
cp -r $target_dir  $tmp_dir
#將數(shù)據(jù)所在文件夾beifen打包
tar -zcPvf $bak_dir/backup$(date +%Y%m%d).tar.gz $tmp_dir
#刪除臨時文件內(nèi)容
rm -rf $tmp_dir
#刪除改文件夾下超過10天的文件
find $bak_dir -mtime +10 -name "*.tar.gz" -exec rm -rf {} \;
~                                                                     

利用crontab進(jìn)行定期執(zhí)行備份腳本

crontab -e
#每天的凌晨兩點(diǎn)對同步數(shù)據(jù)進(jìn)行全量備份
0 2 * * * bash /home/hyperledger_data_bakup/backup.sh
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子竹挡,更是在濱河造成了極大的恐慌鳄抒,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異嘁酿,居然都是意外死亡隙券,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進(jìn)店門闹司,熙熙樓的掌柜王于貴愁眉苦臉地迎上來娱仔,“玉大人,你說我怎么就攤上這事游桩∩龋” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵借卧,是天一觀的道長盹憎。 經(jīng)常有香客問我,道長铐刘,這世上最難降的妖魔是什么陪每? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮镰吵,結(jié)果婚禮上檩禾,老公的妹妹穿的比我還像新娘。我一直安慰自己疤祭,他們只是感情好盼产,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著勺馆,像睡著了一般戏售。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上草穆,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天灌灾,我揣著相機(jī)與錄音,去河邊找鬼续挟。 笑死紧卒,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的诗祸。 我是一名探鬼主播跑芳,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼直颅!你這毒婦竟也來了博个?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤功偿,失蹤者是張志新(化名)和其女友劉穎盆佣,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡共耍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年虑灰,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片痹兜。...
    茶點(diǎn)故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡穆咐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出字旭,到底是詐尸還是另有隱情对湃,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布遗淳,位于F島的核電站拍柒,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏屈暗。R本人自食惡果不足惜拆讯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望恐锦。 院中可真熱鬧往果,春花似錦疆液、人聲如沸一铅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽潘飘。三九已至,卻和暖如春掉缺,著一層夾襖步出監(jiān)牢的瞬間卜录,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工眶明, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留艰毒,地道東北人。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓搜囱,卻偏偏與公主長得像丑瞧,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蜀肘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評論 2 355