亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MongoDB副本集遷移實操案例詳解

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

背景介紹

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

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

實操過程

查看 Oplog 信息

檢查并評估生產(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 的運行中,產(chǎn)生了 10374.38MB 大小的 Oplog。

全量備份

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

#!/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"

提取增量備份開始的時間點

全備備份出來的 Oplog,可以利用 bsondump 工具將 bson 轉(zhuǎn)換為 json 格式,查看備份時間產(chǎn)生的最后的 Oplog 的時間戳,根據(jù)此時間戳來進(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 文件,找出增量備份開始的時間點。

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

增量備份

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

#!/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ù)量對比

分別在源端和目標(biāo)端運行腳本,檢查遷移完成后業(yè)務(wù)數(shù)據(jù)庫下文檔數(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

源端運行結(jié)果:

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

注意事項

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

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

相關(guān)文章

  • MongoDB 中Limit與Skip的使用方法詳解

    MongoDB 中Limit與Skip的使用方法詳解

    這篇文章主要介紹了MongoDB 中Limit與Skip的使用方法詳解的相關(guān)資料,這里對這兩種方法進(jìn)行了詳細(xì)介紹并附示例代碼,幫助大家學(xué)習(xí)理解,需要的朋友可以參考下
    2017-07-07
  • MongoDB數(shù)據(jù)庫授權(quán)認(rèn)證的實現(xiàn)

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

    本文主要介紹了MongoDB數(shù)據(jù)庫授權(quán)認(rèn)證的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • mongodb實現(xiàn)同庫聯(lián)表查詢方法示例

    mongodb實現(xiàn)同庫聯(lián)表查詢方法示例

    在關(guān)系型數(shù)據(jù)庫中,通過連接運算符可以實現(xiàn)多個表聯(lián)合查詢。而非關(guān)系型數(shù)據(jù)庫的特點是表之間屬于弱關(guān)聯(lián),下面這篇文章主要給大家介紹了關(guān)于mongodb實現(xiàn)同庫聯(lián)表查詢的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-08-08
  • Ubuntu中安裝MongoDB及執(zhí)行一些簡單操作筆記

    Ubuntu中安裝MongoDB及執(zhí)行一些簡單操作筆記

    這篇文章主要介紹了Ubuntu中安裝MongoDB及執(zhí)行一些簡單操作筆記,本文同時給出了查看已有數(shù)據(jù)庫、刪除數(shù)據(jù)庫、創(chuàng)建數(shù)據(jù)庫等操作命令實例,需要的朋友可以參考下
    2014-09-09
  • MongoDB Remove函數(shù)的3個常見用法

    MongoDB Remove函數(shù)的3個常見用法

    這篇文章主要介紹了MongoDB Remove函數(shù)的3個常見用法,需要的朋友可以參考下
    2014-05-05
  • mongodb在建立一個T級別的數(shù)據(jù)庫時,進(jìn)程掛掉的解決方法

    mongodb在建立一個T級別的數(shù)據(jù)庫時,進(jìn)程掛掉的解決方法

    這篇文章主要介紹了mongodb在建立一個T級別的數(shù)據(jù)庫時,進(jìn)程掛掉,需要的朋友可以參考下
    2017-03-03
  • ubuntu mongodb安裝在哪個文件夾路徑詳解

    ubuntu mongodb安裝在哪個文件夾路徑詳解

    這篇文章主要為大家介紹了ubuntu mongodb安裝在哪個文件夾的安裝路徑詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • mongodb3.4集群搭建實戰(zhàn)之高可用的分片+副本集

    mongodb3.4集群搭建實戰(zhàn)之高可用的分片+副本集

    這篇文章主要給大家介紹了關(guān)于mongodb3.4集群搭建實戰(zhàn)之高可用的分片+副本集的相關(guān)資料,文中通過示例代碼將實現(xiàn)的步驟一步步的介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-08-08
  • 一文搞懂Scrapy與MongoDB交互過程

    一文搞懂Scrapy與MongoDB交互過程

    這篇文章主要介紹了Scrapy與MongoDB交互過程,文末給大家介紹了類方法@classmethod的相關(guān)知識,需要的朋友可以參考下
    2022-07-07
  • MongoDB中的push操作詳解(將文檔插入到數(shù)組)

    MongoDB中的push操作詳解(將文檔插入到數(shù)組)

    $push操作符添加指定的值到數(shù)組中,下面這篇文章主要給大家介紹了關(guān)于MongoDB中push操作(將文檔插入到數(shù)組)的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11

最新評論