成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Mongodb增量備份和基于時(shí)間點(diǎn)恢復(fù)

IT那活兒 / 4196人閱讀
Mongodb增量備份和基于時(shí)間點(diǎn)恢復(fù)


數(shù)據(jù)庫(kù)備份是DBA的一種日常工作,備份包括物理備份和邏輯備份。每一種DBMS產(chǎn)品都提供了自己的備份和恢復(fù)的工具,如Oracle的rman和數(shù)據(jù)泵就是實(shí)現(xiàn)數(shù)據(jù)庫(kù)備份工具的代表。

要實(shí)現(xiàn)數(shù)據(jù)庫(kù)增量備份一般都是基于物理備份備份來(lái)實(shí)現(xiàn),如rman0級(jí)+N級(jí)+歸檔日志,但是Mongodb官方以及第三方都沒(méi)有提供物理備份工具(基于文件系統(tǒng)的除外),僅提供了用于邏輯備份的mongoexport或者M(jìn)ongodump。一般來(lái)說(shuō)邏輯備份是無(wú)法實(shí)現(xiàn)增量的,但在Mongodb復(fù)制集中,提供了一個(gè)名為oplog的固定大小集合(默認(rèn)為磁盤(pán)空間的5%,可手動(dòng)修改)來(lái)存儲(chǔ)所有的數(shù)據(jù)變更操作(復(fù)制集架構(gòu)就利用此集合來(lái)進(jìn)行數(shù)據(jù)同步),并且其具有冪等性的特點(diǎn),因此可通過(guò)備份oplog的方式來(lái)進(jìn)行增量備份和增量恢復(fù)。

由于oplog的冪等性,即做了多次oplog恢復(fù)或者多次重復(fù)的操作,也能保證其數(shù)據(jù)跟只執(zhí)行一次的結(jié)果相同,所以我們使用如下方案來(lái)實(shí)現(xiàn)增量備份和恢復(fù):

1、全備:按固定頻率進(jìn)行mongodump全庫(kù)導(dǎo)出備份,如每天一次

2、增量備份:按固定頻率使用Mongodump進(jìn)行oplog備份,且每次備份時(shí)指定備份的起始位置為上次備份時(shí)間的前面幾分鐘,即多備份幾分鐘的oplog數(shù)據(jù),這樣可確保數(shù)據(jù)不丟失。此處要注意,oplog是一個(gè)capped集合,所以備份周期必須在oplog保留的時(shí)間范圍內(nèi)(即按照當(dāng)前數(shù)據(jù)庫(kù)的oplog大小,假如oplog集合可以保存3小時(shí)的數(shù)據(jù),那么備份頻率不能高于3小時(shí))。例:每小時(shí)備份一次oplog

starttime=`date-d -62 Minutes +%s`

mongodump--host=127.0.0.1 --port=27017 --authenticationDatabase admin -uroot-p*** -d local -c oplog.rs --gzip --query{ts:{$gte:Timestamp($starttime, 1)}} --out=/backupdir

在本例中,每小時(shí)備份一次oplog,每次備份的起始時(shí)間點(diǎn)為當(dāng)前時(shí)間的前面62min,這樣每次重復(fù)備份2min的oplog。

若出現(xiàn)了故障導(dǎo)致數(shù)據(jù)丟失或者人為誤操作,可以將數(shù)據(jù)恢復(fù)到任意時(shí)間點(diǎn)

3、全庫(kù)恢復(fù):利用步驟1的全備進(jìn)行恢復(fù)。

4、指定從全備開(kāi)始前的上一個(gè)oplog備份集開(kāi)始進(jìn)行恢復(fù),一直恢復(fù)到指定的時(shí)間點(diǎn)。例:多次恢復(fù)oplog直到指定的時(shí)間點(diǎn)。

mongorestore-h 127.0.0.1 --port 27017 --oplogReplay  /backup/oplog2021032714

mongorestore-h 127.0.0.1 --port 27017 --oplogReplay  /backup/oplog2021032715

…………

mongorestore-h 127.0.0.1 --port 27017 --oplogReplay --oplogLimit /backup/oplog/oplog.rs.bson


需要注意的是,oplog只存在于復(fù)制集架構(gòu)中,單機(jī)數(shù)據(jù)庫(kù)是不會(huì)寫(xiě)oplog的,所以針對(duì)單機(jī)架構(gòu),如果要實(shí)現(xiàn)增量備份的話,若有多的機(jī)器,可改成復(fù)制集,如果沒(méi)有多余的機(jī)器,則可將單機(jī)改成單節(jié)點(diǎn)的復(fù)制集。對(duì)于分片集群架構(gòu),要求將所有分片部署成復(fù)制集架構(gòu),備份需基于所有的分片進(jìn)行備份,而不能基于mongos進(jìn)行備份。

附:增量備份腳本:

#!/bin/bash

##env set

mongobin="/usr/local/mongodb/bin"

host=localhost

mongouser="admin"

mongopwd="123456"

mongoport=27017


fullbakdir=/home/mongo/backup/full-`date+%F`

inc_bakdir=/home/mongo/backup/inc-`date+"%Y-%m-%d-%H%M%S"`


#starttime=`date-d -1 hours +%s`

starttime=`date-d -62 Minutes +%s`


checktime=3900


##Make needs dirs

functionfulldir()

{

if[ ! -d "${fullbakdir}" ]; then

mkdir-p ${fullbakdir}

else

echo"已經(jīng)存在備份目錄,本次備份退出,請(qǐng)檢查環(huán)境"

exit

fi

}


functionincdir()

{

if[ ! -d "${inc_bakdir}" ]; then

mkdir-p ${inc_bakdir}

fi

}


functionfullback()

{

${mongobin}/mongodump--host=${host} --port=${mongoport} --authenticationDatabase admin-u${mongouser} -p${mongopwd} -j 8 --oplog --gzip --out=${fullbakdir}

}


functioninclback()

{

${mongobin}/mongodump--host=${host} --port=${mongoport} --authenticationDatabase admin-u${mongouser} -p${mongopwd} -d local -c oplog.rs --gzip --query{ts:{$gte:Timestamp($starttime, 1)}} --out=${inc_bakdir}

}



functionchkoplog()

{

oplogtime=`mongo--eval "rs.printReplicationInfo()" |grep "log lengthstart to end" |awk {print $6} |awk -Fs {print $1}`

echo$oplogtime

if[ ${oplogtime} -gt 60 ];then

return0

else

return1

fi

}



signal=${1:-full}


if[ ${signal} = full ];then

fulldir

fullback

elif[ ${signal} = inc ];then

incdir

chkoplog

if[ $? -eq 0 ];then

inclback

else

echo"send msg"

fi

else

echo"請(qǐng)指定備份類型"

fi

通過(guò)在crontab中部署定時(shí)任務(wù)來(lái)實(shí)現(xiàn)固定頻率備份
13 * * * sh /home/mongo/scripts/backup.sh full
30*/1 * * * sh /home/mongo/scripts/backup.sh inc


END


文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/129954.html

相關(guān)文章

  • 為你的mongodb砌堵墻吧,防止被攻擊勒索

    摘要:起因年月,當(dāng)大家都在為的逝去寫(xiě)總結(jié),并為年的到來(lái)做計(jì)劃的時(shí)候,一波黑客發(fā)動(dòng)了一輪攻擊,攻擊的對(duì)象瞄準(zhǔn)了數(shù)據(jù)庫(kù)。他們刪除了所有數(shù)據(jù)庫(kù)數(shù)據(jù),并留下一個(gè)勒索數(shù)據(jù)庫(kù)。不幸的是,我也成為這幸運(yùn)的一員。謹(jǐn)記,安全,安全,安全。 起因 2017年1月,當(dāng)大家都在為16的逝去寫(xiě)總結(jié),并為17年的到來(lái)做計(jì)劃的時(shí)候,一波黑客發(fā)動(dòng)了一輪攻擊,攻擊的對(duì)象瞄準(zhǔn)了mongodb數(shù)據(jù)庫(kù)。他們刪除了所有數(shù)據(jù)庫(kù)數(shù)據(jù),并...

    calx 評(píng)論0 收藏0
  • 為你的mongodb砌堵墻吧,防止被攻擊勒索

    摘要:起因年月,當(dāng)大家都在為的逝去寫(xiě)總結(jié),并為年的到來(lái)做計(jì)劃的時(shí)候,一波黑客發(fā)動(dòng)了一輪攻擊,攻擊的對(duì)象瞄準(zhǔn)了數(shù)據(jù)庫(kù)。他們刪除了所有數(shù)據(jù)庫(kù)數(shù)據(jù),并留下一個(gè)勒索數(shù)據(jù)庫(kù)。不幸的是,我也成為這幸運(yùn)的一員。謹(jǐn)記,安全,安全,安全。 起因 2017年1月,當(dāng)大家都在為16的逝去寫(xiě)總結(jié),并為17年的到來(lái)做計(jì)劃的時(shí)候,一波黑客發(fā)動(dòng)了一輪攻擊,攻擊的對(duì)象瞄準(zhǔn)了mongodb數(shù)據(jù)庫(kù)。他們刪除了所有數(shù)據(jù)庫(kù)數(shù)據(jù),并...

    Meathill 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<