Mongodump和Mongorestore是MongoDB數(shù)據(jù)庫自帶的備份恢復(fù)工具。您可以在本地設(shè)備或ECS實例中安裝MongoDB數(shù)據(jù)庫,然后借助該工具將自建MongoDB數(shù)據(jù)庫遷移至阿里云MongoDB分片集群實例。
背景信息
- 建議通過DTS遷移分片集群架構(gòu)的自建MongoDB數(shù)據(jù)庫上云,可實現(xiàn)不停機遷移上云。詳情請參見使用DTS遷移分片集群架構(gòu)的自建MongoDB數(shù)據(jù)庫上云。
- 更多數(shù)據(jù)遷移或同步場景的解決方案,請參見MongoDB數(shù)據(jù)遷移和同步方案概覽。
前提條件
- 請確保安裝的Mongodump和Mongorestore軟件版本與自建MongoDB數(shù)據(jù)庫的版本一致。安裝步驟請參見官方文檔Install MongoDB。 說明 您也可以直接在自建MongoDB數(shù)據(jù)庫所屬的服務(wù)器上執(zhí)行Mongodump和Mongorestore命令,無需安裝。
- 目標(biāo)分片集群實例的存儲空間應(yīng)大于自建MongoDB數(shù)據(jù)庫已占用的存儲空間。如存儲空間不足,您可以升級存儲空間,詳情請參見變更配置方案概覽。
注意事項
- 該操作為全量數(shù)據(jù)遷移。為保障數(shù)據(jù)一致性,遷移操作開始前請停止自建數(shù)據(jù)庫的相關(guān)業(yè)務(wù),并停止數(shù)據(jù)寫入。
- 如果您之前使用Mongodump命令對數(shù)據(jù)庫進行過備份操作,請將dump文件夾中的備份文件移動至其他目錄并確保dump文件夾為空,否則執(zhí)行備份操作將會覆蓋該文件夾中的歷史備份文件。
- 請在數(shù)據(jù)庫服務(wù)器上執(zhí)行Mongodump和Mongorestore命令,并非在Mongo Shell環(huán)境下執(zhí)行。
步驟一:備份自建數(shù)據(jù)庫
- 在自建MongoDB數(shù)據(jù)庫所屬的服務(wù)器中執(zhí)行以下命令,備份所有數(shù)據(jù)庫的數(shù)據(jù)。
mongodump --host <mongodb_host> --port <port> -u <username> --authenticationDatabase <database>
說明- <mongodb_host>:自建MongoDB數(shù)據(jù)庫的服務(wù)器地址,本機可使用127.0.0.1。
- <port>:數(shù)據(jù)庫服務(wù)的端口號,默認(rèn)為27017。
- <username>:自建MongoDB數(shù)據(jù)庫的數(shù)據(jù)庫賬號,本文以test為示例賬號。
- <database>:鑒權(quán)數(shù)據(jù)庫名,即數(shù)據(jù)庫賬號所屬的數(shù)據(jù)庫。
示例:mongodump --host 127.0.0.1 --port 27017 -u test --authenticationDatabase admin
- 當(dāng)命令行提示
Enter password:
時,輸入數(shù)據(jù)庫賬號對應(yīng)的密碼并按回車鍵確認(rèn),即開始執(zhí)行備份操作。
等待備份完成,自建數(shù)據(jù)庫中的數(shù)據(jù)即備份至當(dāng)前目錄下的dump文件夾中。
步驟二:設(shè)置數(shù)據(jù)分片(可選)
沒有設(shè)置數(shù)據(jù)分片的情況下,數(shù)據(jù)將被集中寫入到Primary Shard節(jié)點中,導(dǎo)致其他Shard節(jié)點的存儲空間和計算性能無法被充分利用。如需設(shè)置請參見設(shè)置數(shù)據(jù)分片。
說明 您可以在遷移前,在目標(biāo)MongoDB實例中建立需要數(shù)據(jù)分片的數(shù)據(jù)庫和集合,配置數(shù)據(jù)分片。也可以在遷移后配置數(shù)據(jù)分片。
步驟三:將數(shù)據(jù)遷移至阿里云
- 獲取任一Mongos節(jié)點的公網(wǎng)或內(nèi)網(wǎng)連接地址,詳情請參見分片集群實例連接說明。 說明 公網(wǎng)連接地址需要手動申請,詳情請參見申請公網(wǎng)連接地址。
- 將自建數(shù)據(jù)庫所屬服務(wù)器的IP地址加入至分片集群實例的白名單中,詳情請參見設(shè)置白名單。 說明
- 通過專有網(wǎng)絡(luò)或經(jīng)典網(wǎng)絡(luò)連接分片集群實例時,您需要將自建數(shù)據(jù)庫所屬ECS的內(nèi)網(wǎng)IP地址加入至分片集群實例的白名單中。
- 通過公網(wǎng)地址連接分片集群實例時,將需要將自建數(shù)據(jù)庫所屬本地服務(wù)器的公網(wǎng)IP地址加入至分片集群實例的白名單中。
- 在自建數(shù)據(jù)庫服務(wù)器上執(zhí)行以下語句,將備份的數(shù)據(jù)全部遷移至分片集群實例。
mongorestore --host <Mongos_host> -u <username> --authenticationDatabase <database> <Backup directory>
說明- <Mongos_host>:分片集群實例中任一Mongos節(jié)點的連接地址。
- <username>:分片集群實例的數(shù)據(jù)庫賬號,初始賬號為root。
- <database>:鑒權(quán)數(shù)據(jù)庫名,即數(shù)據(jù)庫賬號所屬的數(shù)據(jù)庫。當(dāng)數(shù)據(jù)庫賬號為root時,對應(yīng)的數(shù)據(jù)庫為admin。
- <Backup directory>:備份文件存儲的目錄,默認(rèn)為dump。
示例:
數(shù)據(jù)庫賬號為test,所屬數(shù)據(jù)庫為admin。
mongorestore --host s-bp19f409d7512****-pub.mongodb.rds.aliyuncs.com:3717 -u test --authenticationDatabase admin dump
- 在命令行提示
Enter password:
時,輸入分片集群實例的數(shù)據(jù)庫賬號對應(yīng)的密碼并按回車鍵確認(rèn),即開始執(zhí)行數(shù)據(jù)遷移操作。說明 輸入密碼時,密碼字符是不可見的。
等待數(shù)據(jù)遷移完成,根據(jù)業(yè)務(wù)需求選擇合適的時間,將業(yè)務(wù)切換至分片集群實例。