flume跨機房資料傳輸
阿新 • • 發佈:2019-01-03
1、場景描述:
專案部署在異地機房,需要將mongo資料庫同步到本地機房,由於本地mongo伺服器埠不宜在公網上暴露,在兩擠房間採用flume實現資料同步。
2、技術方案:
3、重點概念:
專案部署在異地機房,需要將mongo資料庫同步到本地機房,由於本地mongo伺服器埠不宜在公網上暴露,在兩擠房間採用flume實現資料同步。
2、技術方案:
1)、異地機房通過擴充套件flume-source外掛從mongodb的oplog集合中實時獲取變更的操作記錄,通過flume avro sink傳送資料。
考慮到效能問題,使用批量時間處理_channel.processEventBatch(listEvent);
儲存oplog的ts欄位,保證程式宕機後可以從時間點以後讀取。
2)、本地機房通過flume avro source接收資料,擴充套件flume-sink外掛將資料插入到本地的mongodb.3、重點概念:
oplog:oplog是capped collection,因為oplog的特點(不能太多把磁碟填滿了,固定大小)需要,MongoDB才發明了capped collection(the oplog is actually the reason capped collections were invented). oplog的位置 oplog在local庫: master/slave 架構下 local.oplog.$main; replica sets 架構下: local.oplog.rs sharding 架構下,mongos下不能檢視oplog,可到每一片去看。
備註:
啟動命令:nohup flume-ng agent -n ms -c conf -f /opt/flume1.5.0/conf/mongo-source.conf -Dflume.root.logger=INFO,console &