如果同步的源數(shù)據(jù)庫類型為MongoDB,如自建MongoDB、云數(shù)據(jù)庫MongoDB,您需要在配置具體的同步任務(wù)前,參考本文的注意事項及限制,以保障數(shù)據(jù)同步任務(wù)的正常運(yùn)行。
源庫為MongoDB的同步方案概覽
根據(jù)如下同步方案,查看同步任務(wù)的注意事項及限制:
MongoDB(副本集架構(gòu))同步至MongoDB(副本集架構(gòu)、分片集群架構(gòu))
如果同步的目標(biāo)數(shù)據(jù)庫類型為MongoDB,如自建MongoDB、云數(shù)據(jù)庫MongoDB,具體注意事項及限制如下:
類型 | 說明 |
源庫限制 | 帶寬要求:源庫所屬的服務(wù)器需具備足夠的出口帶寬,否則將影響數(shù)據(jù)同步速率。 待同步的集合需具備主鍵或唯一約束,且字段具有唯一性,否則可能會導(dǎo)致目標(biāo)數(shù)據(jù)庫中出現(xiàn)重復(fù)數(shù)據(jù)。 如同步對象為集合級別,且需進(jìn)行編輯(如集合的名稱映射),則單次同步任務(wù)僅支持同步至多1000張集合。當(dāng)超出數(shù)量限制,任務(wù)提交后會顯示請求報錯,此時建議您拆分待同步的集合,分批配置多個任務(wù),或者配置整庫的同步任務(wù)。 源庫待同步的單條數(shù)據(jù)不能超過16 MB,否則會導(dǎo)致任務(wù)失敗。 源庫不支持Azure Cosmos DB for MongoDB和彈性集群的Amazon DocumentDB。 源庫需開啟Oplog日志,并確保Oplog日志至少保留7天以上;或者開啟變更流(Change Streams),并確保DTS能夠通過Change Streams訂閱到源庫最近7天內(nèi)的數(shù)據(jù)變更。否則可能會因無法獲取源庫的數(shù)據(jù)變更而導(dǎo)致任務(wù)失敗,極端情況下甚至可能會導(dǎo)致數(shù)據(jù)不一致或丟失。由此導(dǎo)致的問題,不在DTS的SLA保障范圍內(nèi)。
重要 建議通過Oplog日志獲取源庫的數(shù)據(jù)變更。 僅4.0及以上版本的MongoDB支持通過Change Streams獲取數(shù)據(jù)變更,使用Change Streams獲取源庫的數(shù)據(jù)變更不支持雙向同步。 源庫為Amazon DocumentDB(非彈性集群)時,需要手動開啟Change Streams,并在配置任務(wù)時將遷移方式選擇為ChangeStream,將架構(gòu)類型選擇為分片集群架構(gòu)。
暫不支持同步包含TTL(Time To Live)索引的集合。若待同步的數(shù)據(jù)庫中包含TTL索引,則可能會導(dǎo)致數(shù)據(jù)不一致。 源庫操作限制: 在結(jié)構(gòu)同步和全量同步階段,請勿執(zhí)行庫或集合的結(jié)構(gòu)變更(包含數(shù)組類型數(shù)據(jù)的更新),否則會導(dǎo)致數(shù)據(jù)同步任務(wù)失敗或源庫與目標(biāo)庫的數(shù)據(jù)不一致。 若僅執(zhí)行全量數(shù)據(jù)同步,請勿向源實例中寫入新的數(shù)據(jù),否則會導(dǎo)致源庫與目標(biāo)庫的數(shù)據(jù)不一致。
|
其他限制 | 目標(biāo)端實例為分片集群架構(gòu)時: 需清除孤立文檔,否則將影響同步性能。若在同步過程遇到_id 沖突的文檔,則可能導(dǎo)致數(shù)據(jù)不一致或任務(wù)失敗。 在任務(wù)開始前,需要為源端待同步的數(shù)據(jù)添加與目標(biāo)端對應(yīng)的分片鍵。若您無法為源端添加分片鍵,源MongoDB數(shù)據(jù)庫的同步操作,請參見MongoDB(無分片鍵)同步至MongoDB(分片集群架構(gòu))。 在任務(wù)開始后,待同步的數(shù)據(jù)在使用INSERT命令時必須包含分片鍵,使用UPDATE命令時不支持更改分片鍵。
建議源和目標(biāo)庫的MongoDB的數(shù)據(jù)庫版本保持一致,或者從低版本同步到高版本以保障兼容性。如為高版本同步至低版本,可能存在數(shù)據(jù)庫兼容性問題。 不支持同步admin和local庫中的數(shù)據(jù)。 若目標(biāo)集合存在唯一索引或目標(biāo)集合的capped 屬性為true 時,則在增量同步階段該集合不支持并發(fā)回放(只支持單線程寫入),從而可能會導(dǎo)致任務(wù)延遲增高。 不保留事務(wù)信息,即源庫中的事務(wù)同步到目標(biāo)庫時會轉(zhuǎn)變?yōu)閱螚l的記錄。 執(zhí)行數(shù)據(jù)同步前需評估源庫和目標(biāo)庫的性能,同時建議業(yè)務(wù)低峰期執(zhí)行數(shù)據(jù)同步。否則全量數(shù)據(jù)初始化時將占用源庫和目標(biāo)庫一定的讀寫資源,可能會導(dǎo)致數(shù)據(jù)庫的負(fù)載上升。 全量初始化會并發(fā)執(zhí)行INSERT操作,導(dǎo)致目標(biāo)數(shù)據(jù)庫的集合產(chǎn)生碎片,因此全量初始化完成后目標(biāo)實例的集合空間比源實例的集合空間大。 在DTS同步期間,不允許有除DTS外的數(shù)據(jù)寫入目標(biāo)庫,否則會導(dǎo)致源庫與目標(biāo)庫數(shù)據(jù)不一致。例如,有除DTS外的數(shù)據(jù)寫入目標(biāo)庫時,使用DMS執(zhí)行在線DDL變更,可能引起目標(biāo)庫數(shù)據(jù)丟失。 由于DTS寫入數(shù)據(jù)的邏輯為并發(fā)寫入,所以會導(dǎo)致目標(biāo)端占用的存儲空間比源端大5%~10%。 目標(biāo)端MongoDB的count數(shù)量需要使用db.$table_name.aggregate([{ $count:"myCount"}]) 語法查詢。 請確保目標(biāo)端MongoDB沒有與源端相同的主鍵(默認(rèn)為_id),否則會導(dǎo)致數(shù)據(jù)丟失。若目標(biāo)端有與源端相同的主鍵,請在不影響業(yè)務(wù)的前提條件下清空目標(biāo)端的相關(guān)數(shù)據(jù)(刪掉目標(biāo)端中與源端相同_id的文檔)。 若實例運(yùn)行失敗,DTS技術(shù)支持人員將在8小時內(nèi)嘗試恢復(fù)該實例。在恢復(fù)失敗實例的過程中,可能會對該實例進(jìn)行重啟、調(diào)整參數(shù)等操作。
說明 在調(diào)整參數(shù)時,僅會修改實例的參數(shù),不會對數(shù)據(jù)庫中的參數(shù)進(jìn)行修改。可能修改的參數(shù),包括但不限于修改實例參數(shù)中的參數(shù)。
|
特殊情況 | 當(dāng)源庫為自建MongoDB時:
說明 如果同步對象選擇為整庫,您還可以創(chuàng)建心跳表,心跳表每秒定期更新或者寫入數(shù)據(jù)。 |
MongoDB(分片集群架構(gòu))間雙向同步
具體注意事項及限制如下:
類型 | 說明 |
源和目標(biāo)庫的限制 | 帶寬要求:源庫所屬的服務(wù)器需具備足夠的出口帶寬,否則將影響數(shù)據(jù)同步速率。 待同步的集合需具備主鍵或唯一約束,且字段具有唯一性,否則可能會導(dǎo)致目標(biāo)數(shù)據(jù)庫中出現(xiàn)重復(fù)數(shù)據(jù)。 待同步集合中的_id字段需具有唯一性,否則可能會導(dǎo)致數(shù)據(jù)不一致。 如同步對象為集合級別,且需進(jìn)行編輯(如集合的名稱映射),則單次同步任務(wù)僅支持同步至多1000張集合。當(dāng)超出數(shù)量限制,任務(wù)提交后會顯示請求報錯,此時建議您拆分待同步的集合,分批配置多個任務(wù),或者配置整庫的同步任務(wù)。 源庫待同步的單條數(shù)據(jù)不能超過16 MB,否則會導(dǎo)致任務(wù)失敗。 源庫不支持Azure Cosmos DB for MongoDB和彈性集群的Amazon DocumentDB。 源庫需開啟Oplog日志,并確保Oplog日志至少保留7天以上;或者開啟變更流(Change Streams),并確保DTS能夠通過Change Streams訂閱到源庫最近7天內(nèi)的數(shù)據(jù)變更。否則可能會因無法獲取源庫的數(shù)據(jù)變更而導(dǎo)致任務(wù)失敗,極端情況下甚至可能會導(dǎo)致數(shù)據(jù)不一致或丟失。由此導(dǎo)致的問題,不在DTS的SLA保障范圍內(nèi)。
重要 建議通過Oplog日志獲取源庫的數(shù)據(jù)變更。 僅4.0及以上版本的MongoDB支持通過Change Streams獲取數(shù)據(jù)變更,使用Change Streams獲取源庫的數(shù)據(jù)變更不支持雙向同步。 源庫為Amazon DocumentDB(非彈性集群)時,需要手動開啟Change Streams,并在配置任務(wù)時將遷移方式選擇為ChangeStream,將架構(gòu)類型選擇為分片集群架構(gòu)。
MongoDB分片集群為源的單向同步不支持源端做分片的擴(kuò)縮容,雙向同步源和目標(biāo)都不支持分片數(shù)量的擴(kuò)縮容,否則會導(dǎo)致DTS任務(wù)失敗。 源MongoDB分片集群實例的Mongos節(jié)點的數(shù)量不能超過10個。 暫不支持同步包含TTL(Time To Live)索引的集合。若待同步的數(shù)據(jù)庫中包含TTL索引,則可能會導(dǎo)致數(shù)據(jù)不一致。 請確保源和目標(biāo)實例中沒有孤立文檔,否則可能會導(dǎo)致數(shù)據(jù)不一致甚至任務(wù)失敗。更多信息,請參見孤立文檔和如何清理MongoDB(分片集群架構(gòu))的孤立文檔。 源和目標(biāo)庫需為相同架構(gòu)的云數(shù)據(jù)庫MongoDB版,即自建MongoDB或不同架構(gòu)的MongoDB不支持雙向同步。 源庫操作限制: 在結(jié)構(gòu)同步和全量同步階段,請勿執(zhí)行庫或集合的結(jié)構(gòu)變更(包含數(shù)組類型數(shù)據(jù)的更新),否則會導(dǎo)致數(shù)據(jù)同步任務(wù)失敗或源庫與目標(biāo)庫的數(shù)據(jù)不一致。 若僅執(zhí)行全量數(shù)據(jù)同步,請勿向源實例中寫入新的數(shù)據(jù),否則會導(dǎo)致源庫與目標(biāo)庫的數(shù)據(jù)不一致。
若源庫的均衡器Balancer存在均衡數(shù)據(jù)的行為,則可能會導(dǎo)致實例產(chǎn)生延遲。
|
其他限制 | 在任務(wù)開始前,需要為源端待同步的數(shù)據(jù)添加與目標(biāo)端對應(yīng)的分片鍵;在任務(wù)開始后,待同步的數(shù)據(jù)在使用INSERT命令時必須包含分片鍵,使用UPDATE命令時不支持更改分片鍵。 建議源和目標(biāo)庫的MongoDB的數(shù)據(jù)庫版本保持一致,或者從低版本同步到高版本以保障兼容性。如為高版本同步至低版本,可能存在數(shù)據(jù)庫兼容性問題。 若目標(biāo)集合存在唯一索引或目標(biāo)集合的capped 屬性為true 時,則在增量同步階段該集合不支持并發(fā)回放(只支持單線程寫入),從而可能會導(dǎo)致任務(wù)延遲增高。 不支持同步admin和local庫中的數(shù)據(jù)。 不保留事務(wù)信息,即源庫中的事務(wù)同步到目標(biāo)庫時會轉(zhuǎn)變?yōu)閱螚l的記錄。 執(zhí)行數(shù)據(jù)同步前需評估源庫和目標(biāo)庫的性能,同時建議業(yè)務(wù)低峰期執(zhí)行數(shù)據(jù)同步。否則全量數(shù)據(jù)初始化時將占用源庫和目標(biāo)庫一定的讀寫資源,可能會導(dǎo)致數(shù)據(jù)庫的負(fù)載上升。 全量初始化會并發(fā)執(zhí)行INSERT操作,導(dǎo)致目標(biāo)數(shù)據(jù)庫的集合產(chǎn)生碎片,因此全量初始化完成后目標(biāo)實例的集合空間比源實例的集合空間大。 在DTS同步期間,不允許有除DTS外的數(shù)據(jù)寫入目標(biāo)庫,否則會導(dǎo)致源庫與目標(biāo)庫數(shù)據(jù)不一致。例如,有除DTS外的數(shù)據(jù)寫入目標(biāo)庫時,使用DMS執(zhí)行在線DDL變更,可能引起目標(biāo)庫數(shù)據(jù)丟失。 雙向同步實例包含正向和反向同步任務(wù),在配置或重置雙向同步實例時,若其中一個任務(wù)的目標(biāo)對象是另一個任務(wù)待同步的對象: 由于DTS寫入數(shù)據(jù)的邏輯為并發(fā)寫入,所以會導(dǎo)致目標(biāo)端占用的存儲空間比源端大5%~10%。 目標(biāo)端MongoDB的count數(shù)量需要使用db.$table_name.aggregate([{ $count:"myCount"}]) 語法查詢。 請確保目標(biāo)端MongoDB沒有與源端相同的主鍵(默認(rèn)為_id),否則會導(dǎo)致數(shù)據(jù)丟失。若目標(biāo)端有與源端相同的主鍵,請在不影響業(yè)務(wù)的前提條件下清空目標(biāo)端的相關(guān)數(shù)據(jù)(刪掉目標(biāo)端中與源端相同_id的文檔)。 全量同步期間必須關(guān)閉源MongoDB數(shù)據(jù)庫的均衡器(Balancer),直至每個子任務(wù)都運(yùn)行到增量階段,否則可能會造成數(shù)據(jù)不一致。關(guān)于均衡器的操作,請參見管理MongoDB均衡器Balancer。 若您無需使用DTS提供的庫表結(jié)構(gòu)同步功能(例如目標(biāo)端已配置好數(shù)據(jù)分片),在配置任務(wù)對象及高級配置階段中,同步類型請勿勾選庫表結(jié)構(gòu)同步,否則可能會因為分片沖突而導(dǎo)致數(shù)據(jù)不一致或任務(wù)失敗。 若實例運(yùn)行失敗,DTS技術(shù)支持人員將在8小時內(nèi)嘗試恢復(fù)該實例。在恢復(fù)失敗實例的過程中,可能會對該實例進(jìn)行重啟、調(diào)整參數(shù)等操作。
說明 在調(diào)整參數(shù)時,僅會修改實例的參數(shù),不會對數(shù)據(jù)庫中的參數(shù)進(jìn)行修改。可能修改的參數(shù),包括但不限于修改實例參數(shù)中的參數(shù)。
|
MongoDB(分片集群架構(gòu))間單向同步
如果同步的目標(biāo)數(shù)據(jù)庫類型為MongoDB,如自建MongoDB、云數(shù)據(jù)庫MongoDB,具體注意事項及限制如下:
類型 | 說明 |
源和目標(biāo)庫的限制 | 帶寬要求:源庫所屬的服務(wù)器需具備足夠的出口帶寬,否則將影響數(shù)據(jù)同步速率。 待同步的集合需具備主鍵或唯一約束,且字段具有唯一性,否則可能會導(dǎo)致目標(biāo)數(shù)據(jù)庫中出現(xiàn)重復(fù)數(shù)據(jù)。 待同步集合中的_id字段需具有唯一性,否則可能會導(dǎo)致數(shù)據(jù)不一致。 如同步對象為集合級別,且需進(jìn)行編輯(如集合的名稱映射),則單次同步任務(wù)僅支持同步至多1000張集合。當(dāng)超出數(shù)量限制,任務(wù)提交后會顯示請求報錯,此時建議您拆分待同步的集合,分批配置多個任務(wù),或者配置整庫的同步任務(wù)。 源庫待同步的單條數(shù)據(jù)不能超過16 MB,否則會導(dǎo)致任務(wù)失敗。 源庫不支持Azure Cosmos DB for MongoDB和彈性集群的Amazon DocumentDB。 源庫需開啟Oplog日志,并確保Oplog日志至少保留7天以上;或者開啟變更流(Change Streams),并確保DTS能夠通過Change Streams訂閱到源庫最近7天內(nèi)的數(shù)據(jù)變更。否則可能會因無法獲取源庫的數(shù)據(jù)變更而導(dǎo)致任務(wù)失敗,極端情況下甚至可能會導(dǎo)致數(shù)據(jù)不一致或丟失。由此導(dǎo)致的問題,不在DTS的SLA保障范圍內(nèi)。
重要 建議通過Oplog日志獲取源庫的數(shù)據(jù)變更。 僅4.0及以上版本的MongoDB支持通過Change Streams獲取數(shù)據(jù)變更,使用Change Streams獲取源庫的數(shù)據(jù)變更不支持雙向同步。 源庫為Amazon DocumentDB(非彈性集群)時,需要手動開啟Change Streams,并在配置任務(wù)時將遷移方式選擇為ChangeStream,將架構(gòu)類型選擇為分片集群架構(gòu)。
在DTS同步期間,不支持MongoDB分片集群進(jìn)行分片的擴(kuò)縮容,否則會導(dǎo)致DTS任務(wù)失敗。 若源實例為分片集群架構(gòu)的自建MongoDB,則接入方式僅支持專線/VPN網(wǎng)關(guān)/智能網(wǎng)關(guān)和云企業(yè)網(wǎng)CEN。 源MongoDB分片集群實例的Mongos節(jié)點的數(shù)量不能超過10個。 暫不支持同步包含TTL(Time To Live)索引的集合。若待同步的數(shù)據(jù)庫中包含TTL索引,則可能會導(dǎo)致數(shù)據(jù)不一致。 請確保源和目標(biāo)實例中沒有孤立文檔,否則可能會導(dǎo)致數(shù)據(jù)不一致甚至任務(wù)失敗。更多信息,請參見孤立文檔和如何清理MongoDB(分片集群架構(gòu))的孤立文檔。 源庫操作限制: 在結(jié)構(gòu)同步和全量同步階段,請勿執(zhí)行庫或集合的結(jié)構(gòu)變更(包含數(shù)組類型數(shù)據(jù)的更新),否則會導(dǎo)致數(shù)據(jù)同步任務(wù)失敗或源庫與目標(biāo)庫的數(shù)據(jù)不一致。 若僅執(zhí)行全量數(shù)據(jù)同步,請勿向源實例中寫入新的數(shù)據(jù),否則會導(dǎo)致源庫與目標(biāo)庫的數(shù)據(jù)不一致。
若源庫的均衡器Balancer存在均衡數(shù)據(jù)的行為,則可能會導(dǎo)致實例產(chǎn)生延遲。
|
其他限制 | 建議源和目標(biāo)庫的MongoDB的數(shù)據(jù)庫版本保持一致,或者從低版本同步到高版本以保障兼容性。如為高版本同步至低版本,可能存在數(shù)據(jù)庫兼容性問題。 不支持同步admin和local庫中的數(shù)據(jù)。 不保留事務(wù)信息,即源庫中的事務(wù)同步到目標(biāo)庫時會轉(zhuǎn)變?yōu)閱螚l的記錄。 執(zhí)行數(shù)據(jù)同步前需評估源庫和目標(biāo)庫的性能,同時建議業(yè)務(wù)低峰期執(zhí)行數(shù)據(jù)同步。否則全量數(shù)據(jù)初始化時將占用源庫和目標(biāo)庫一定的讀寫資源,可能會導(dǎo)致數(shù)據(jù)庫的負(fù)載上升。 全量初始化會并發(fā)執(zhí)行INSERT操作,導(dǎo)致目標(biāo)數(shù)據(jù)庫的集合產(chǎn)生碎片,因此全量初始化完成后目標(biāo)實例的集合空間比源實例的集合空間大。 若目標(biāo)集合存在唯一索引或目標(biāo)集合的capped 屬性為true 時,則在增量同步階段該集合不支持并發(fā)回放(只支持單線程寫入),從而可能會導(dǎo)致任務(wù)延遲增高。 由于DTS寫入數(shù)據(jù)的邏輯為并發(fā)寫入,所以會導(dǎo)致目標(biāo)端占用的存儲空間比源端大5%~10%。 目標(biāo)端MongoDB的count數(shù)量需要使用db.$table_name.aggregate([{ $count:"myCount"}]) 語法查詢。 請確保目標(biāo)端MongoDB沒有與源端相同的主鍵(默認(rèn)為_id),否則會導(dǎo)致數(shù)據(jù)丟失。若目標(biāo)端有與源端相同的主鍵,請在不影響業(yè)務(wù)的前提條件下清空目標(biāo)端的相關(guān)數(shù)據(jù)(刪掉目標(biāo)端中與源端相同_id的文檔)。 全量同步期間必須關(guān)閉源MongoDB數(shù)據(jù)庫的均衡器(Balancer),直至每個子任務(wù)都運(yùn)行到增量階段,否則可能會造成數(shù)據(jù)不一致。關(guān)于均衡器的操作,請參見管理MongoDB均衡器Balancer。 若您無需使用DTS提供的庫表結(jié)構(gòu)同步功能(例如目標(biāo)端已配置好數(shù)據(jù)分片),在配置任務(wù)對象及高級配置階段中,同步類型請勿勾選庫表結(jié)構(gòu)同步,否則可能會因為分片沖突而導(dǎo)致數(shù)據(jù)不一致或任務(wù)失敗。 若實例運(yùn)行失敗,DTS技術(shù)支持人員將在8小時內(nèi)嘗試恢復(fù)該實例。在恢復(fù)失敗實例的過程中,可能會對該實例進(jìn)行重啟、調(diào)整參數(shù)等操作。
說明 在調(diào)整參數(shù)時,僅會修改實例的參數(shù),不會對數(shù)據(jù)庫中的參數(shù)進(jìn)行修改。可能修改的參數(shù),包括但不限于修改實例參數(shù)中的參數(shù)。
|
MongoDB(副本集架構(gòu))間雙向同步
具體注意事項及限制如下:
類型 | 說明 |
源和目標(biāo)庫的限制 | 帶寬要求:源庫所屬的服務(wù)器需具備足夠的出口帶寬,否則將影響數(shù)據(jù)同步速率。 待同步的集合需具備主鍵或唯一約束,且字段具有唯一性,否則可能會導(dǎo)致目標(biāo)數(shù)據(jù)庫中出現(xiàn)重復(fù)數(shù)據(jù)。 如同步對象為集合級別,且需進(jìn)行編輯(如集合的名稱映射),則單次同步任務(wù)僅支持同步至多1000張集合。當(dāng)超出數(shù)量限制,任務(wù)提交后會顯示請求報錯,此時建議您拆分待同步的集合,分批配置多個任務(wù),或者配置整庫的同步任務(wù)。 源庫待同步的單條數(shù)據(jù)不能超過16 MB,否則會導(dǎo)致任務(wù)失敗。 源庫不支持Azure Cosmos DB for MongoDB和彈性集群的Amazon DocumentDB。 源庫需開啟Oplog日志,并確保Oplog日志至少保留7天以上;或者開啟變更流(Change Streams),并確保DTS能夠通過Change Streams訂閱到源庫最近7天內(nèi)的數(shù)據(jù)變更。否則可能會因無法獲取源庫的數(shù)據(jù)變更而導(dǎo)致任務(wù)失敗,極端情況下甚至可能會導(dǎo)致數(shù)據(jù)不一致或丟失。由此導(dǎo)致的問題,不在DTS的SLA保障范圍內(nèi)。
重要 建議通過Oplog日志獲取源庫的數(shù)據(jù)變更。 僅4.0及以上版本的MongoDB支持通過Change Streams獲取數(shù)據(jù)變更,使用Change Streams獲取源庫的數(shù)據(jù)變更不支持雙向同步。 源庫為Amazon DocumentDB(非彈性集群)時,需要手動開啟Change Streams,并在配置任務(wù)時將遷移方式選擇為ChangeStream,將架構(gòu)類型選擇為分片集群架構(gòu)。
暫不支持同步包含TTL(Time To Live)索引的集合。若待同步的數(shù)據(jù)庫中包含TTL索引,則可能會導(dǎo)致數(shù)據(jù)不一致。 源和目標(biāo)庫需為相同架構(gòu)的云數(shù)據(jù)庫MongoDB版,即自建MongoDB或不同架構(gòu)的MongoDB不支持雙向同步。 源庫操作限制: 在結(jié)構(gòu)同步和全量同步階段,請勿執(zhí)行庫或集合的結(jié)構(gòu)變更(包含數(shù)組類型數(shù)據(jù)的更新),否則會導(dǎo)致數(shù)據(jù)同步任務(wù)失敗或源庫與目標(biāo)庫的數(shù)據(jù)不一致。 若僅執(zhí)行全量數(shù)據(jù)同步,請勿向源實例中寫入新的數(shù)據(jù),否則會導(dǎo)致源庫與目標(biāo)庫的數(shù)據(jù)不一致。
|
其他限制 | 建議源和目標(biāo)庫的MongoDB的數(shù)據(jù)庫版本保持一致,或者從低版本同步到高版本以保障兼容性。如為高版本同步至低版本,可能存在數(shù)據(jù)庫兼容性問題。 源和目標(biāo)云數(shù)據(jù)庫MongoDB版的架構(gòu)需保持一致。(分片集群架構(gòu)) 不支持同步admin和local庫中的數(shù)據(jù)。 不保留事務(wù)信息,即源庫中的事務(wù)同步到目標(biāo)庫時會轉(zhuǎn)變?yōu)閱螚l的記錄。 執(zhí)行數(shù)據(jù)同步前需評估源庫和目標(biāo)庫的性能,同時建議業(yè)務(wù)低峰期執(zhí)行數(shù)據(jù)同步。否則全量數(shù)據(jù)初始化時將占用源庫和目標(biāo)庫一定的讀寫資源,可能會導(dǎo)致數(shù)據(jù)庫的負(fù)載上升。 全量初始化會并發(fā)執(zhí)行INSERT操作,導(dǎo)致目標(biāo)數(shù)據(jù)庫的集合產(chǎn)生碎片,因此全量初始化完成后目標(biāo)實例的集合空間比源實例的集合空間大。 在DTS同步期間,不允許有除DTS外的數(shù)據(jù)寫入目標(biāo)庫,否則會導(dǎo)致源庫與目標(biāo)庫數(shù)據(jù)不一致。例如,有除DTS外的數(shù)據(jù)寫入目標(biāo)庫時,使用DMS執(zhí)行在線DDL變更,可能引起目標(biāo)庫數(shù)據(jù)丟失。 若目標(biāo)集合存在唯一索引或目標(biāo)集合的capped 屬性為true 時,則在增量同步階段該集合不支持并發(fā)回放(只支持單線程寫入),從而可能會導(dǎo)致任務(wù)延遲增高。 雙向同步實例包含正向和反向同步任務(wù),在配置或重置雙向同步實例時,若其中一個任務(wù)的目標(biāo)對象是另一個任務(wù)待同步的對象: 由于DTS寫入數(shù)據(jù)的邏輯為并發(fā)寫入,所以會導(dǎo)致目標(biāo)端占用的存儲空間比源端大5%~10%。 目標(biāo)端MongoDB的count數(shù)量需要使用db.$table_name.aggregate([{ $count:"myCount"}]) 語法查詢。 請確保目標(biāo)端MongoDB沒有與源端相同的主鍵(默認(rèn)為_id),否則會導(dǎo)致數(shù)據(jù)丟失。若目標(biāo)端有與源端相同的主鍵,請在不影響業(yè)務(wù)的前提條件下清空目標(biāo)端的相關(guān)數(shù)據(jù)(刪掉目標(biāo)端中與源端相同_id的文檔)。 若實例運(yùn)行失敗,DTS技術(shù)支持人員將在8小時內(nèi)嘗試恢復(fù)該實例。在恢復(fù)失敗實例的過程中,可能會對該實例進(jìn)行重啟、調(diào)整參數(shù)等操作。
說明 在調(diào)整參數(shù)時,僅會修改實例的參數(shù),不會對數(shù)據(jù)庫中的參數(shù)進(jìn)行修改。可能修改的參數(shù),包括但不限于修改實例參數(shù)中的參數(shù)。
|