1. 程式人生 > >flume跨機房資料傳輸

flume跨機房資料傳輸

1、場景描述:
專案部署在異地機房,需要將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 &