最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MongoDB副本集遷移實(shí)操案例詳解

 更新時(shí)間:2023年11月29日 09:52:34   作者:愛(ài)可生開(kāi)源社區(qū)  
文中詳細(xì)闡述了通過(guò)全量?+?增量?Oplog?的遷移方式,完成一套副本集?MongoDB?遷移的全過(guò)程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

背景介紹

客戶(hù)要將生產(chǎn)環(huán)境上一套副本集架構(gòu)的 MongoDB 進(jìn)行遷移,數(shù)據(jù)量 240GB 左右。經(jīng)過(guò)測(cè)試,全量備份耗時(shí) 3.5 小時(shí),恢復(fù)耗時(shí) 4.5小時(shí)。

為了減少割接時(shí)間,采取全量 + 增量 Oplog 的遷移方式。提前一天進(jìn)行全備,割接當(dāng)天只需備份增量的 Oplog 恢復(fù)即可,可大幅減少割接窗口。

實(shí)操過(guò)程

查看 Oplog 信息

檢查并評(píng)估生產(chǎn)環(huán)境 Oplog 的產(chǎn)生信息,以防全量和增量備份期間產(chǎn)生的 Oplog 被覆蓋掉。

mongo> db.getReplicationInfo()
{
"logSizeMB" : 20480,
"usedMB" : 20374.38,
"timeDiff" : 7074665,
"timeDiffHours" : 1965.18,
"tFirst" : "Fri Feb 24 2023 18:36:32 GMT+0800 (CST)",
"tLast" : "Wed May 17 2023 15:47:37 GMT+0800 (CST)",
"now" : "Wed May 17 2023 15:47:43 GMT+0800 (CST)"
}

可以看出在 1965.18h 的運(yùn)行中,產(chǎn)生了 10374.38MB 大小的 Oplog。

全量備份

全量備份并拷貝備份期間產(chǎn)生的 Oplog 用來(lái)增量還原。

#!/bin/bash

user=admin
password=123
host=127.0.0.1
port=27017
outputdir=/data/mongobak_`date +%F`
authenticationdatabase=admin
start_time=`date +%s`
mongodump -u$user --host $host --port $port -p$password --authenticationDatabase $authenticationdatabase --oplog --gzip -o $outputdir
stop_time=`date +%s`
duration=$((stop_time-start_time)) 
echo "Spend times: $duration seconds"

全量恢復(fù)

利用全備進(jìn)行數(shù)據(jù)恢復(fù)。

#!/bin/bash
start_time=`date +%s`
user=admin
password=123
host=127.0.0.1
port=27017
authenticationdatabase=admin
mongorestore -u$user --host $host --port $port -p$password --authenticationDatabase $authenticationdatabase --oplogReplay --gzip /data/mongobak_2023-07-17
stop_time=`date +%s`
duration=$((stop_time-start_time)) 
echo "Spend times: $duration seconds"

提取增量備份開(kāi)始的時(shí)間點(diǎn)

全備備份出來(lái)的 Oplog,可以利用 bsondump 工具將 bson 轉(zhuǎn)換為 json 格式,查看備份時(shí)間產(chǎn)生的最后的 Oplog 的時(shí)間戳,根據(jù)此時(shí)間戳來(lái)進(jìn)行增量的 Oplog 備份。

shell> cd /data/ mongobak_2023-07-17
shell> mv oplog.bson oplog.bson.gz
shell> gzip -d oplog.bson.gz
shell> bsondump --pretty oplog.bson > op.json

查看 op.json 文件,找出增量備份開(kāi)始的時(shí)間點(diǎn)。

"ts": {
          "$timestamp": {
                      "t": 1686669429,
                      "i": 4
          }
},

增量備份

備份 Oplog(時(shí)間戳大于上一次全備結(jié)束時(shí)的時(shí)間)。

#!/bin/bash
user=admin
password=123
host=127.0.0.1
port=27017
outputdir=/tmp/oplog_`date +%F`
authenticationdatabase=admin
start_time=`date +%s`
mongodump -u$user --host $host --port $port -p$password --authenticationDatabase $authenticationdatabase -d local -c oplog.rs -q '{"ts":{"$gt": {"$timestamp":{"t":1686669429, "i":4}}}}' -o $outputdir
stop_time=`date +%s`
duration=$((stop_time-start_time)) 
echo "Spend times: $duration seconds"

增量恢復(fù)

#!/bin/bash
user=admin
password=123
host=127.0.0.1
port=27017
authenticationdatabase=admin
start_time=`date +%s`
mongorestore -u$user --host $host --port $port -p$password --authenticationDatabase $authenticationdatabase --oplogReplay  /data/oplog_2023-07-17
stop_time=`date +%s`
duration=$((stop_time-start_time)) 
echo "Spend times: $duration seconds"

增量遷移后業(yè)務(wù)文檔數(shù)量對(duì)比

分別在源端和目標(biāo)端運(yùn)行腳本,檢查遷移完成后業(yè)務(wù)數(shù)據(jù)庫(kù)下文檔數(shù)量是否一致。

#!/bin/bash
user=admin
password=123
host=127.0.0.1
port=27017
authenticationdatabase=admin
mpid=`pidof mongod`
tooldir=`dirname $(ls -l /proc/$mpid/exe | awk '{print $11}')`
database=$(echo "show dbs" | $tooldir/mongo -uadmin --host $host --port $port -p$password --authenticationDatabase $authenticationdatabase  --quiet |awk '{print $1}'| sed -E '/^admin$|^config$|^local$/d')
for db in $database
do
  collections=$(echo -e "use $db\n show collections" | $tooldir/mongo -u $user --host $host --port $port -p $password  $authenticationdatabase --quiet | sed '/switched to db/d')
  for table in $collections
  do
    count=$(echo -e "use $db\n db.$table.count()" | $tooldir/mongo -u $user --host $host --port $port -p $password  --authenticationDatabase $authenticationdatabase  --quiet | sed '/switched to db/d')
    echo "$db.$table have $count documents"
  done
done

源端運(yùn)行結(jié)果:

目標(biāo)端運(yùn)行結(jié)果:

注意事項(xiàng)

  • 使用 secondary 備份時(shí),在割接停止業(yè)務(wù)后,增量備份前,首先檢查下從庫(kù)與主庫(kù)的延時(shí),確保主從沒(méi)有延時(shí),防止備份出的數(shù)據(jù)和主庫(kù)不一致。
  • 如果全備時(shí)指定了 gzip,在提取時(shí)間戳?xí)r要重命名 oplog.bson 為 oplog.bson.gz,然后解壓,再利用 bsondump 工具解析 bson 文件,否則會(huì)報(bào)錯(cuò)。

以上就是MongoDB 副本集遷移實(shí)操案例的詳細(xì)內(nèi)容,更多關(guān)于MongoDB 副本集遷移實(shí)操案例的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • MongoDB數(shù)據(jù)庫(kù)授權(quán)認(rèn)證的實(shí)現(xiàn)

    MongoDB數(shù)據(jù)庫(kù)授權(quán)認(rèn)證的實(shí)現(xiàn)

    本文主要介紹了MongoDB數(shù)據(jù)庫(kù)授權(quán)認(rèn)證的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • MongoDB內(nèi)存過(guò)高問(wèn)題分析及解決

    MongoDB內(nèi)存過(guò)高問(wèn)題分析及解決

    有個(gè)3.2.7版本的mongo復(fù)制集,最近幾天頻繁告警內(nèi)存過(guò)高,所以這篇文章給大家介紹了MongoDB內(nèi)存過(guò)高問(wèn)題分析及解決。并通過(guò)代碼示例給出詳細(xì)的解決方案,需要的朋友可以參考下
    2024-03-03
  • MongoDB使用自帶的命令行工具進(jìn)行備份和恢復(fù)的教程

    MongoDB使用自帶的命令行工具進(jìn)行備份和恢復(fù)的教程

    這篇文章主要介紹了MongoDB使用自帶的命令行工具進(jìn)行備份和恢復(fù)的教程,我們只需要在命令行界面中用簡(jiǎn)單的命令操作mongorestore和mongodump工具就可以實(shí)現(xiàn),需要的朋友可以參考下
    2016-06-06
  • CentOS 7下用yum快速安裝MongoDB的方法教程

    CentOS 7下用yum快速安裝MongoDB的方法教程

    MongoDB 是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù)。由 C++ 語(yǔ)言編寫(xiě)。旨在為 WEB 應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。本文介紹了CentOS 7系統(tǒng)下用yum快速安裝MongoDB的方法教程,文中通過(guò)一步步的步驟介紹的很詳細(xì),有需要的朋友們可以參考借鑒。
    2016-12-12
  • centos6.5中安裝mongodb簡(jiǎn)明總結(jié)

    centos6.5中安裝mongodb簡(jiǎn)明總結(jié)

    這篇文章主要介紹了centos6.5中安裝mongodb簡(jiǎn)明總結(jié),本文簡(jiǎn)單的總結(jié)了安裝過(guò)程中的6個(gè)步驟,需要的朋友可以參考下
    2014-10-10
  • Windows10安裝MongoDB4.0詳細(xì)步驟及啟動(dòng)配置教程

    Windows10安裝MongoDB4.0詳細(xì)步驟及啟動(dòng)配置教程

    這篇文章主要介紹了Windows10安裝MongoDB4.0詳細(xì)步驟及啟動(dòng)配置教程 ,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-01-01
  • mongodb實(shí)現(xiàn)同庫(kù)聯(lián)表查詢(xún)方法示例

    mongodb實(shí)現(xiàn)同庫(kù)聯(lián)表查詢(xún)方法示例

    在關(guān)系型數(shù)據(jù)庫(kù)中,通過(guò)連接運(yùn)算符可以實(shí)現(xiàn)多個(gè)表聯(lián)合查詢(xún)。而非關(guān)系型數(shù)據(jù)庫(kù)的特點(diǎn)是表之間屬于弱關(guān)聯(lián),下面這篇文章主要給大家介紹了關(guān)于mongodb實(shí)現(xiàn)同庫(kù)聯(lián)表查詢(xún)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-08-08
  • Mac中mongoDB的安裝與卸載步驟詳解

    Mac中mongoDB的安裝與卸載步驟詳解

    mongoDB是一個(gè)非常不錯(cuò)的數(shù)據(jù)庫(kù),最近也正在學(xué)習(xí)mongoDB,在使用一個(gè)數(shù)據(jù)庫(kù)前必不可少的就是安裝和卸載,所以下面這篇文章主要給大家介紹了關(guān)于Mac系統(tǒng)中mongoDB安裝與卸載的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-10-10
  • MongoDB開(kāi)啟權(quán)限認(rèn)證的方法步驟詳解

    MongoDB開(kāi)啟權(quán)限認(rèn)證的方法步驟詳解

    MongoDB已經(jīng)使用很長(zhǎng)一段時(shí)間了,基于MongoDB的數(shù)據(jù)存儲(chǔ)也一直沒(méi)有使用到權(quán)限訪(fǎng)問(wèn)(MongoDB默認(rèn)設(shè)置為無(wú)權(quán)限訪(fǎng)問(wèn)限制),最近深入學(xué)習(xí)了下,所以下面這篇文章主要給大家介紹了關(guān)于MongoDB開(kāi)啟權(quán)限認(rèn)證的相關(guān)資料,需要的朋友可以參考下。
    2018-02-02
  • mongodb與mysql命令詳細(xì)對(duì)比

    mongodb與mysql命令詳細(xì)對(duì)比

    MongoDB的好處挺多的,比如多列索引,查詢(xún)時(shí)可以用一些統(tǒng)計(jì)函數(shù),支持多條件查詢(xún),但是目前多表查詢(xún)是不支持的,可以想辦法通過(guò)數(shù)據(jù)冗余來(lái)解決多表查詢(xún)的問(wèn)題
    2013-08-08

最新評(píng)論

江川县| 赣州市| 洪洞县| 龙海市| 连南| 景洪市| 隆子县| 肥东县| 沁源县| 麻江县| 达日县| 宁安市| 平昌县| 泾源县| 乳源| 二连浩特市| 仁寿县| 德钦县| 南开区| 克什克腾旗| 禹州市| 兰西县| 山西省| 屏东市| 通州区| 丰台区| 勃利县| 汉川市| 吉水县| 垣曲县| 四川省| 青河县| 凌云县| 阳原县| 武功县| 平定县| 新化县| 长海县| 彩票| 奉新县| 璧山县|