華為云計算 云知識 MongoDB數(shù)據(jù)庫遷移_ECS自建數(shù)據(jù)庫遷移到華為云文檔數(shù)據(jù)庫服務(wù)
MongoDB數(shù)據(jù)庫遷移_ECS自建數(shù)據(jù)庫遷移到華為云文檔數(shù)據(jù)庫服務(wù)

數(shù)據(jù)復(fù)制服務(wù) (Data Replication Service,簡稱DRS)支持將ECS自建 數(shù)據(jù)庫 數(shù)據(jù)遷移 到本云 文檔數(shù)據(jù)庫服務(wù) (Document Database Service,以下簡稱DDS)實例。通過DRS提供的實時 遷移 任務(wù),實現(xiàn)在 數(shù)據(jù)庫遷移 過程中業(yè)務(wù)和數(shù)據(jù)庫不停機,業(yè)務(wù)中斷時間最小化。

本章節(jié)主要介紹了通過DRS將ECS自建數(shù)據(jù)庫實時遷移至本云DDS的任務(wù)配置流程。支持以下網(wǎng)絡(luò)場景:

· 源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫屬于同一個VPC網(wǎng)絡(luò)內(nèi)

· 源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫屬于不同VPC網(wǎng)絡(luò)內(nèi)

 

網(wǎng)絡(luò)示意圖

圖1 同一VPC網(wǎng)路
 
圖2 同區(qū)域不同VPC網(wǎng)絡(luò)

 

遷移流程

圖3 遷移流程圖
 

遷移建議(重要)

· 數(shù)據(jù)庫遷移與環(huán)境多樣性和人為操作均有密切關(guān)系,為了確保遷移的平順,建議您在進(jìn)行正式的數(shù)據(jù)庫遷移之前進(jìn)行一次演練,可以幫助您提前發(fā)現(xiàn)問題并解決問題,如何最小化對數(shù)據(jù)庫的影響請參考如下建議。

· 強烈建議您在啟動任務(wù)時選擇“稍后啟動”功能,將啟動時間設(shè)置在業(yè)務(wù)低峰期,相對靜止的數(shù)據(jù)可以有效提升一次性遷移成功率,避免遷移對業(yè)務(wù)造成性能影響。

 

遷移須知(重要)

須知:在創(chuàng)建遷移任務(wù)之前,請您務(wù)必仔細(xì)閱讀遷移須知。參考《 數(shù)據(jù)復(fù)制 服務(wù)快速入門》中的“使用須知”章節(jié)。

 

遷移準(zhǔn)備

1、權(quán)限準(zhǔn)備:

當(dāng)使用 DRS 將本地數(shù)據(jù)庫的數(shù)據(jù)遷移到本云DDS實例時,在不同遷移類型情況下,對源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫的帳號權(quán)限要求如表1所示:

表1 遷移帳號權(quán)限

遷移類型

全量遷移

全量+增量遷移

源數(shù)據(jù)庫

· 副本集:連接源數(shù)據(jù)庫的用戶權(quán)限需要對admin數(shù)據(jù)庫有readAnyDatabase權(quán)限。

· 群:連接源數(shù)據(jù)庫的用戶權(quán)限需要對admin數(shù)據(jù)庫有readAnyDatabase權(quán)限,對config數(shù)據(jù)庫有read權(quán)限。

· 單節(jié)點:連接源數(shù)據(jù)庫的用戶權(quán)限需要對admin數(shù)據(jù)庫有readAnyDatabase權(quán)限。

· 如果需要遷移源數(shù)據(jù)庫用戶和角色信息,連接源數(shù)據(jù)庫的用戶權(quán)限需要對admin數(shù)據(jù)庫的系統(tǒng)表system.users,system.roles有讀權(quán)限。

· 副本集:連接源數(shù)據(jù)庫的用戶權(quán)限需要對admin數(shù)據(jù)庫有readAnyDatabase權(quán)限,對local數(shù)據(jù)庫有read權(quán)限。

· 單節(jié)點:連接源數(shù)據(jù)庫的用戶權(quán)限需要對admin數(shù)據(jù)庫有readAnyDatabase權(quán)限,對local數(shù)據(jù)庫有read權(quán)限。

· 集群:連接源數(shù)據(jù)庫mongos節(jié)點的用戶權(quán)限需要對admin數(shù)據(jù)庫有readAnyDatabase權(quán)限,對config數(shù)據(jù)庫有read權(quán)限, 連接源數(shù)據(jù)庫分片節(jié)點的用戶權(quán)限需要對admin數(shù)據(jù)庫有readAnyDatabase權(quán)限,對local數(shù)據(jù)庫有read權(quán)限。

· 如果需要遷移源數(shù)據(jù)庫用戶和角色信息,連接源數(shù)據(jù)庫的用戶權(quán)限需要對admin數(shù)據(jù)庫的系統(tǒng)表system.users,system.roles有讀權(quán)限。

目標(biāo)數(shù)據(jù)庫

連接目標(biāo)數(shù)據(jù)庫的用戶權(quán)限需要對admin數(shù)據(jù)庫有readAnyDatabase權(quán)限,對目標(biāo)數(shù)據(jù)庫有readWrite權(quán)限。

· 源數(shù)據(jù)庫的權(quán)限設(shè)置:

需要確保源數(shù)據(jù)庫MongoDB的帳號具備表1的權(quán)限,若權(quán)限不足,需要在源數(shù)據(jù)庫端創(chuàng)建高權(quán)限的帳號。

· 目標(biāo)數(shù)據(jù)庫的權(quán)限設(shè)置:

本云DDS實例使用初始帳號即可。

 

2、網(wǎng)絡(luò)準(zhǔn)備:

· 源數(shù)據(jù)庫所在的region需要和目標(biāo)DDS所在的region保持一致。

· 源數(shù)據(jù)庫可以與目標(biāo)DDS實例在同一個VPC,也可以不在同一個VPC。

△當(dāng)不在同一個VPC的時候,要求源數(shù)據(jù)庫實例和目標(biāo)端DDS實例所處的子網(wǎng)處于不同網(wǎng)段,此時需要通過建立對等連接實現(xiàn)網(wǎng)絡(luò)互通,具體操作請參見《 虛擬私有云 用戶指南》中“VPC對等連接”章節(jié)。

△當(dāng)在同一VPC的時候,網(wǎng)絡(luò)默認(rèn)是互通的。

 

3、安全規(guī)則準(zhǔn)備:

· 同一VPC場景下,默認(rèn)網(wǎng)絡(luò)是連通的,不需要單獨設(shè)置安全組。

· 不同VPC場景下,通過建立對等連接就可以實現(xiàn)網(wǎng)絡(luò)互通,不需要單獨設(shè)置安全組。 

 

4、其他事項準(zhǔn)備:

由于遷移過程不會遷移MongoDB數(shù)據(jù)庫的用戶信息以及相關(guān)參數(shù),需要自行將上述信息導(dǎo)出后,手動添加到目標(biāo)DDS中。

遷移步驟

1、創(chuàng)建遷移任務(wù)。

a)登錄管理控制臺,在服務(wù)列表中選擇數(shù)據(jù)庫 > 數(shù)據(jù)復(fù)制服務(wù),進(jìn)入數(shù)據(jù)復(fù)制服務(wù)信息頁面。

b)在實時遷移管理”頁面,單擊右上角“創(chuàng)建遷移任務(wù)”,進(jìn)入遷移任務(wù)信息頁面。

c)在“遷移實例”頁面,填選任務(wù)名稱、通知收件人、描述和遷移實例信息。

圖4 遷移實例信息
 
表2 任務(wù)和描述

參數(shù)

描述

區(qū)域

當(dāng)前所在區(qū)域,可進(jìn)行切換。

任務(wù)名稱

任務(wù)名稱在4-50位之間,必須以字母開頭,不區(qū)分大小寫,可以包含字母、數(shù)字、中劃線或下劃線,不能包含其他的特殊字符。

描述

描述不能超過256位,且不能包含! = < > & ' " \ 特殊字符。

任務(wù)異常通知設(shè)置

該項為可選參數(shù),開啟之后,選擇對應(yīng)的 SMN 主題,。當(dāng)同步任務(wù)狀態(tài)異常時,系統(tǒng)將發(fā)送通知。

SMN主題

“任務(wù)異常通知設(shè)置”項開啟后可見,需提前在SMN上申請主題并添加訂閱。

SMN主題申請和訂閱可參考 消息通知 服務(wù)用戶指南》。

時延閾值

在增量同步階段,源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫之間的同步有時會存在一個時間差,稱為時延,單位為秒。

時延閾值設(shè)置是指時延超過一定的值后(時延閾值范圍為1—3600s),DRS可以發(fā)送告警通知給指定收件人。告警通知將在時延穩(wěn)定超過設(shè)定的閾值6min后發(fā)送,避免出現(xiàn)由于時延波動反復(fù)發(fā)送告警通知的情況。

說明:

· 首次進(jìn)入增量同步階段,會有較多數(shù)據(jù)等待同步,存在較大的時延,屬于正常情況,不在此功能的監(jiān)控范圍之內(nèi)。

· 設(shè)置時延閾值之前,需要設(shè)置任務(wù)異常通知。

任務(wù)異常自動結(jié)束時間(天)

設(shè)置任務(wù)異常自動結(jié)束天數(shù),輸入值必須在14-100之間。

說明:異常狀態(tài)下的任務(wù)仍然會計費,而長時間異常的任務(wù)無法續(xù)傳和恢復(fù)。設(shè)置任務(wù)異常自動結(jié)束天數(shù)后,異常且超時的任務(wù)將會自動結(jié)束,以免產(chǎn)生不必要的費用。

 

表3 遷移實例信息

參數(shù)

描述

數(shù)據(jù)流動方向

選擇入云。

源數(shù)據(jù)庫引擎

選擇MongoDB數(shù)據(jù)庫引擎。

目標(biāo)數(shù)據(jù)庫引擎

選擇DDS數(shù)據(jù)庫引擎。

網(wǎng)絡(luò)類型

選擇VPC網(wǎng)絡(luò)。

目標(biāo)數(shù)據(jù)庫實例

您所創(chuàng)建的本云DDS實例。

遷移模式

此處以全量+增量模式為示例。

· 全量:該模式為數(shù)據(jù)庫一次性遷移,適用于可中斷業(yè)務(wù)的數(shù)據(jù)庫遷移場景,全量遷移將非系統(tǒng)數(shù)據(jù)庫的全部數(shù)據(jù)庫對象和數(shù)據(jù)一次性遷移至目標(biāo)端數(shù)據(jù)庫,包括:表、視圖、存儲過程等。

說明:如果用戶只進(jìn)行全量遷移時,建議停止對源數(shù)據(jù)庫的操作,否則遷移過程中源數(shù)據(jù)庫產(chǎn)生的新數(shù)據(jù)不會同步到目標(biāo)數(shù)據(jù)庫。

· 全量+增量:該模式為數(shù)據(jù)庫持續(xù)性遷移,適用于對業(yè)務(wù)中斷敏感的場景,通過全量遷移過程中完成的目標(biāo)端數(shù)據(jù)庫的初始化后,增量遷移階段通過解析日志等技術(shù),將遠(yuǎn)端和目標(biāo)端數(shù)據(jù)庫保持?jǐn)?shù)據(jù)持續(xù)一致。

說明:選擇“全量+增量”遷移模式,增量遷移可以在全量遷移完成的基礎(chǔ)上實現(xiàn)數(shù)據(jù)的持續(xù)同步,無需中斷業(yè)務(wù),實現(xiàn)遷移過程中源業(yè)務(wù)和數(shù)據(jù)庫繼續(xù)對外提供訪問。

 

d)在“源庫及目標(biāo)庫”信息頁面,遷移實例創(chuàng)建成功后,填選源庫信息和目標(biāo)庫信息,建議您單擊“源庫和目標(biāo)庫”處的“測試連接”,分別測試并確定與源庫和目標(biāo)庫連通后,勾選協(xié)議,單擊“下一步”

圖5 源庫及目標(biāo)庫信息
 
表4 源庫信息

參數(shù)

描述

源庫類型

選擇“非DDS實例”。

VPC

源數(shù)據(jù)庫實例所在的 虛擬專用網(wǎng)絡(luò) ,可以對不同業(yè)務(wù)進(jìn)行網(wǎng)絡(luò)隔離。您需要創(chuàng)建或選擇所需的虛擬 私有云 。如何創(chuàng)建虛擬私有云,請參見《虛擬私有云用戶指南》中的“創(chuàng)建虛擬私有云基本信息及默認(rèn)子網(wǎng)”章節(jié)。

子網(wǎng)

通過子網(wǎng)提供與其他網(wǎng)絡(luò)隔離的、可以獨享的網(wǎng)絡(luò)資源,以提高網(wǎng)絡(luò)安全。子網(wǎng)在可用分區(qū)內(nèi)才會有效,創(chuàng)建源數(shù)據(jù)庫實例的子網(wǎng)需要開啟DHCP功能,在創(chuàng)建過程中也不能關(guān)閉已選子網(wǎng)的DHCP功能。如何創(chuàng)建子網(wǎng),請參見《虛擬私有云用戶指南》中的“創(chuàng)建虛擬私有云基本信息及默認(rèn)子網(wǎng)”章節(jié)。

IP地址或域名

配置源MongoDB數(shù)據(jù)庫實例的訪問地址或域名。

端口

配置源MongoDB數(shù)據(jù)庫實例的服務(wù)端口,可輸入范圍為1~65535間的整數(shù)。

數(shù)據(jù)庫用戶名

訪問源MongoDB數(shù)據(jù)庫的用戶名。

數(shù)據(jù)庫密碼

訪問源MongoDB數(shù)據(jù)庫的用戶名所對應(yīng)的密碼。

SSL安全連接

您可以選擇開啟SSL安全連接,對遷移鏈路進(jìn)行加密,開啟之后,需要您上傳加密證書。

 

表5 目標(biāo)庫信息

參數(shù)

描述

數(shù)據(jù)庫實例名稱

默認(rèn)為創(chuàng)建遷移任務(wù)時選擇的已創(chuàng)建的本云DDS實例,不可進(jìn)行修改。

數(shù)據(jù)庫用戶名

訪問目標(biāo)數(shù)據(jù)庫本云DDS的用戶名。

數(shù)據(jù)庫密碼

訪問目標(biāo)數(shù)據(jù)庫本云DDS的用戶名所對應(yīng)的密碼。

 

e)在“遷移設(shè)置”頁面,設(shè)置遷移對象,單擊“下一步”。

圖6 設(shè)置遷移對象
 
表6 遷移對象

參數(shù)

描述

遷移用戶

常見的遷移用戶一般分為兩類:支持遷移的用戶和不支持遷移的用戶。您可以根據(jù)業(yè)務(wù)需求選擇“遷移”或者“不遷移”,其中,不支持遷移的賬號或者未選擇遷移的賬號將在目標(biāo)數(shù)據(jù)庫中缺失,需要先確保業(yè)務(wù)不受影響。

· 遷移

當(dāng)您選擇遷移用戶時,請參見《數(shù)據(jù)復(fù)制服務(wù)用戶指南》中“遷移用戶”章節(jié)進(jìn)行數(shù)據(jù)庫用戶及角色的處理。

· 不遷移

遷移過程中,將不進(jìn)行數(shù)據(jù)庫用戶及角色的遷移。

其他遷移選項

根據(jù)業(yè)務(wù)需求,選擇全量遷移是否遷移用戶自行創(chuàng)建的索引,基于_id的默認(rèn)索引目標(biāo)端會自動創(chuàng)建。如果不遷移索引,索引不參與對比。

遷移對象

您可以根據(jù)業(yè)務(wù)需求,選擇全部對象遷移、表級遷移或者庫級遷移。

· 全部遷移:將源數(shù)據(jù)庫中的所有對象全部遷移至目標(biāo)數(shù)據(jù)庫,對象遷移到目標(biāo)數(shù)據(jù)庫實例后,對象名將會保持與源數(shù)據(jù)庫實例對象名一致且無法修改。

· 表級遷移:將選擇的表級對象遷移至目標(biāo)數(shù)據(jù)庫。

· 庫級遷移:將選擇的庫級對象遷移至目標(biāo)數(shù)據(jù)庫。

如果有切換源數(shù)據(jù)庫的操作或源庫遷移對象變化的情況,請務(wù)必在選擇遷移對象前單擊右上角的,以確保待選擇的對象為最新源數(shù)據(jù)庫對象。

說明:

· 若選擇部分?jǐn)?shù)據(jù)庫進(jìn)行遷移時,由于存儲過程、視圖等對象可能與其他數(shù)據(jù)庫的表存在依賴關(guān)系,若所依賴的表未遷移,則會導(dǎo)致遷移失敗。建議您在遷移之前進(jìn)行確認(rèn),或選擇全部數(shù)據(jù)庫進(jìn)行遷移。

· 選擇對象的時候,對象名稱的前后空格不顯示,中間如有多個空格只顯示一個空格。

· 選擇對象的時候支持搜索,以便您快速選擇需要的數(shù)據(jù)庫對象。

 

f)在“預(yù)檢查”頁面,進(jìn)行遷移任務(wù)預(yù)校驗,校驗是否可進(jìn)行任務(wù)遷移。

· 查看檢查結(jié)果,如有不通過的檢查項,需要修復(fù)不通過項后,單擊“重新校驗”按鈕重新進(jìn)行遷移任務(wù)預(yù)校驗。

預(yù)檢查不通過項處理建議請參見《數(shù)據(jù)復(fù)制服務(wù)用戶指南》中的“預(yù)檢查不通過項修復(fù)方法”。

· 預(yù)檢查完成后,且所有檢查項結(jié)果均通過時,單擊“下一步”。

圖7 預(yù)檢查

說明:所有檢查項結(jié)果均通過時,若存在待確認(rèn)項,需要閱讀并確認(rèn)詳情后才可以繼續(xù)執(zhí)行下一步操作。

 

g)在“任務(wù)確認(rèn)”頁面,選擇遷移任務(wù)的啟動時間,勾選協(xié)議,單擊“啟動任務(wù)”,提交遷移任務(wù)。

說明:

· 遷移任務(wù)的啟動時間可以根據(jù)業(yè)務(wù)需求,設(shè)置為“立即啟動”或“稍后啟動”。

· 預(yù)計遷移任務(wù)啟動后,會對源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫的性能產(chǎn)生影響,建議選擇業(yè)務(wù)低峰期,合理設(shè)置遷移任務(wù)的啟動時間。如果遷移不可避免業(yè)務(wù)高峰期,推薦使用遷移限速功能,即“流速模式”選擇“限速”。

h)遷移任務(wù)提交后,您可以返回實時遷移管理”頁面,查看遷移任務(wù)狀態(tài)。

 

2、任務(wù)管理

同步任務(wù)啟動后,會經(jīng)歷全量同步和增量同步兩個階段,對于不同階段的同步任務(wù),您可以進(jìn)行任務(wù)管理。

· 全量同步

查看同步進(jìn)度:全量同步中的任務(wù),您可單擊任務(wù)名稱,在“同步進(jìn)度”頁簽下,查看全量同步進(jìn)度,您可以查看結(jié)構(gòu)、數(shù)據(jù)、索引同步的進(jìn)度,也查看具體同步對象的同步進(jìn)度。當(dāng)全量同步進(jìn)度顯示為100%,表示全量同步已經(jīng)完成。

· 增量同步

【查看時延監(jiān)控】全量同步完成后,開始進(jìn)行增量同步。對于增量同步中的任務(wù),您可單擊任務(wù)名稱,在“同步進(jìn)度”頁簽下,查看增量同步同步時延,當(dāng)時延為0s時,說明源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫的數(shù)據(jù)是實時同步的。您也可以使用“同步對比”頁簽進(jìn)行一致性對比。

圖8 查看時延監(jiān)控

【查看同步對比】為了盡可能減少業(yè)務(wù)的影響和業(yè)務(wù)中斷時間,增量同步中的任務(wù),您可單擊任務(wù)名稱,在“同步對比”頁簽下創(chuàng)建對比任務(wù)。

具體的同步對比操作及注意事項請參考《數(shù)據(jù)復(fù)制服務(wù)用戶指南》中“對比同步項”章節(jié)。

 

3、割接建議。

建議您選擇一個業(yè)務(wù)低峰期,開始正式系統(tǒng)割接流程。割接前,請您確認(rèn)至少在業(yè)務(wù)低峰期有過一次完整的數(shù)據(jù)對比??梢越Y(jié)合數(shù)據(jù)對比的“稍后啟動”功能,選擇業(yè)務(wù)低峰期進(jìn)行數(shù)據(jù)對比,以便得到更為具有參考性的對比結(jié)果。由于同步具有輕微的時差,在數(shù)據(jù)持續(xù)操作過程中進(jìn)行對比任務(wù),可能會出現(xiàn)少量數(shù)據(jù)不一致對比結(jié)果,從而失去參考意義。

a)先中斷業(yè)務(wù)(如果業(yè)務(wù)負(fù)載非常輕,也可以嘗試不中斷業(yè)務(wù))。

b)在源數(shù)據(jù)庫端執(zhí)行如下語句,并觀察在1-5分鐘內(nèi)若無任何新會話執(zhí)行SQL ,則可認(rèn)為業(yè)務(wù)已經(jīng)完全停止。

db.currentOp()

說明:上述語句查詢到的進(jìn)程列表中,包括DRS遷移實例的連接,您需要確認(rèn)除DRS遷移實例的連接外無任何新會話執(zhí)行SQL,即可認(rèn)為業(yè)務(wù)已經(jīng)完全停止。

c)通過DRS遷移任務(wù)監(jiān)控頁面進(jìn)行觀察同步時延,保持實時同步時延為0,并穩(wěn)定保持一段時間;同時,您可以使用數(shù)據(jù)級對比功能,進(jìn)行割接前的最后一次數(shù)據(jù)級對比,耗時可參考之前的對比記錄。

· 如果時間允許,則選擇全部對比。

· 如果時間不允許,則推薦對比活躍表,關(guān)鍵業(yè)務(wù)表,第二步對比多次存在差異的表等。

d)確定系統(tǒng)割接時機,業(yè)務(wù)系統(tǒng)指向本 云數(shù)據(jù)庫 ,業(yè)務(wù)對外恢復(fù)使用,遷移完成。

 

4、遷移結(jié)束

a)結(jié)束遷移任務(wù):業(yè)務(wù)系統(tǒng)和數(shù)據(jù)庫切換至本云后,為了防止源數(shù)據(jù)庫的操作繼續(xù)同步到目標(biāo)數(shù)據(jù)庫,造成數(shù)據(jù)覆蓋問題,此時您可選擇結(jié)束遷移任務(wù),該操作僅刪除了遷移實例,遷移任務(wù)仍顯示在任務(wù)列表中,您可以進(jìn)行查看或刪除。結(jié)束遷移任務(wù)后,DRS將不再計費。

b)刪除遷移任務(wù):對于已結(jié)束的遷移任務(wù),您可選擇刪除任務(wù)。該操作將一并刪除遷移任務(wù),刪除遷移任務(wù)后,該任務(wù)將不會出現(xiàn)在任務(wù)列表中。