1、概述DDS 的產品優勢MongoDB3種架構高可用高可靠高安全管理、監控100%兼容 MongoDB-具備無需業務改造,直接遷移上云的能力-支持社區3.4/4.0版本集群、副本集、單節點-集群:nTB存儲、在線擴容-副本集:2TB存儲,3副本-單節點:高性價比架構高可用、跨AZ部署-支持副本集,Shard高可用架構(集群)-副本集多節點(三、五、七)-集群、副本集支持跨AZ部署自動/手動備份,數據恢復-每天自動備份,保留 732 天-手動備份,永久保存-備份恢復-具備多層安全防護-網絡:VPC 網絡隔離-傳輸:SSL 安全連接-訪問:安全組出、入限制-可視化監控:CPU、內存、IO、網絡等-實
2、例一鍵擴容、規格變更-錯誤日志、慢日志管理-參數組配置DDS服務部署形態單節點(Single)1.超低成本,僅需支付一個節點的費用;2.支持10GB-1000GB 的數據存儲;3.較副本集/集群可用性不高:當節點故障,業務不可用;適用場景非核心數據存儲學習實踐;測試環境的業務;架構特點DDS部署形態副本集(Replica Set)1.三節點高可用架構:當主節點故障時,系統自動選出新的主節點2.支持10GB-3000GB 數據存儲;3.具備擴展到5節點,7節點副本集的能力。架構特點適用場景有高可用需求,數據存儲解析-整合:從磁盤讀取日志數據,解析日志中有效變化記錄,并按原庫發生的先后順序整合成事
3、務THL落盤文件:整合后的數據被轉換為DRS內部存儲格式,并寫入磁盤讀取-過濾-轉換:讀取THL文件數據,并對數據進行過濾和轉換,形成目標庫可應用的數據。并行分析:評估各記錄之間的依賴關系,生產可并行回放的數據隊列回放:多線程并發的將數據寫入到目標庫目錄 DDS簡介 DDS(文檔數據庫)災備技術原理 原生Change Streams分析 DDS對于Change Streams的優化 總結Change Streams可以直譯為變更流,也就是說會將數據庫中的所有變更以流式的方式呈現出來。用戶可以很方便地對數據庫建立一個監聽(訂閱)進程,一旦數據庫發生變更,使用change stream的客戶端都可
4、以收到相應的通知。使用場景可以包括但不限于以下幾種:1)多個MongoDB集群之間的增量數據同步;2)高風險操作的審計(刪庫刪表);3)將MongoDB的變更訂閱到其他關聯系統實現離線分析/計算等等原生Change Streams分析-1什么是Change Streams集群場景下,災備實例之間的日志拉取依靠Change Steams完成1 客戶端向MongoS發起了一個Aggregate命令,把該命令發給對應的Shard節點,同時服務端向客戶端返回一個游標。2 ShardServer端收到Aggregate命令后,掃描oplog集合,讀取數據并返回給Mongos.3 客戶端通過Mongos節
5、點拿到游標ID,在該游標上不斷的執行getMore請求,來獲取整個集群的oplog(操作日志)信息。原生Change Streams分析-21 事件拉取性能有待提升:如之前分析,當前的Change Streams請求發到Mongos節點后,通過單線程的方式向每個Shard節點發送異步請求命令來完成數據的拉取,并做數據歸并,如果將該方式替換為多線程并發拉取,對于分片表來說,性能會有提升。2 支持DDL事件不完善,對于集合和DB刪除事件導致事件監聽中斷,需要重新開始。Change Stream目前支持的事件如下:Insert Event:數據插入Update Event:數據更新Replace E
6、vent:數據替換Delete Event:刪除數據Drop Event:刪除集合Rename Event:重命名集合DropDatabase Event:刪除DB invalidate Event:非法事件原生Change Streams分析-3目錄 DDS簡介 DDS(文檔數據庫)災備技術原理 原生Change Streams分析 DDS對于Change Streams的優化 總結Change Streams Buffer:與Shard是一對一的關系。每個Change Streams Buffer 默認1GB,在Buffer滿之前,該Buffer無條件的向對應的Shard(secondar
7、y節點)拉取Change Streams數據Merged QueueMerged Queue是一個內存隊列,是Change Streams Buffer的消費者,是 Bucket的生產者。Merged Queue 歸并所有Shard的Change Streams Buffer,并等待合適的時機按照規則放入對應Client的Bucket。BucketBucket 是一個內存隊列,是MergedQueue的消費者,是Client的生產者。每個Client對應一個Bucket。每個Bucket維護該Bucket內所有文檔的的集合。Merged Queue 與Bucket的交互過程Merged Que
8、ue不停的從頭部拿出盡可能多的數據,并從前往后的按照hash(document.ns)%n的規則放入對應的Bucket,document.ns是指這個文檔的NameSpace,所以同一個集合的數據一定在一個Bucket里面。并發Change Streams架構并發Change Stream除了支持原生的Change Stream外,還新增支持如下事件:CreateCollection Event:創建集合CollMod Event:修改集合屬性CreateIndex Event:創建索引Drop Index Event:刪除索引CreateView Event:創建視圖DropView Eve
9、nt:刪除視圖ShardCollection Event:對集合分片DDL事件的增強目錄 DDS簡介 DDS(文檔數據庫)災備技術原理 原生Change Streams分析 DDS對于Change Streams的優化 總結DRS災備與Mongoshake災備的對比華為云DRS災備Mongoshake倒換方式一鍵倒換手動配置參數倒換倒換位點不需要指定增量位點手動配置位點數據一致性平臺展示,可以進行對象、行數、內容三種對比粒度,內容對比可以展示所有不一致數據腳本對比,有對象、行數和抽樣內容,抽樣內容無法展示所有不一致數據,可能會漏掉不一致數據同步進度平臺展示時延監控,時延為0代表追平,可設置閾值
10、告警,隨時關注災備狀態api調用,參數多且繁雜,對比位點是否相同來判斷是否追平主鍵_id支持支持所有類型_id混合且不影響并發源庫集合只支持單一類型_id斷點續傳全量、增量都可以斷點續傳增量斷點續傳項目投入極小人力成本,不需要客戶申請部署ecs,創建DRS災備任務即可完成災備前期基礎設施部署和網絡需要人力成本使用華為云DRS做災備的優勢華為云DDS社區版MongoDBChangeStream內DDL操作支持豐富的DDL:CollMod/CreateIndex/DropIndex/CreateView/DropView,ChangeStream將對應的Oplog封裝成事件,解決DDL操作不全的問
11、題DDL操作不完全,缺少對ShardCollection/CollMod/CreateIndex/DropIndex/CreateView/DropView的支持對于集合刪除,數據庫刪除事件,日志拉取不中斷碰到集合刪除和數據庫刪除事件會導致Change Streams中斷,需要重新開始監聽華為云DDS對社區版的優勢華為云DDS社區版MongoDB性能單個ChangeStream能被多個客戶端消費客戶端只能單線程拉取數據(單線程意味著CPU最高到100%,對于大表容易追不上)mongos上load數據和客戶端消費數據獨立,各自streaming處理客戶端拉取數據時,數據在mongos上并未準備好(因為沒有預讀),要當場從mongod上查ops50000左右10000左右華為云DDS對社區版的優勢