Greenplum數據導入系列 — (二)資料庫實時同步
- 2020 年 1 月 14 日
- 筆記
說明
本文描述問題及解決方法同樣適用於 騰訊雲Snova雲數倉。
背景
Greenplum作為數據倉庫的計算引擎,其數據來源多是業務數據,其中以MySQL為主。那如何將數據從MySQL同步到Greenplum中?如果是離線同步,比如每小時,每天,可以參考前一篇文章 Greenplum數據導入系列 — (一)DataX,那如果需要實時同步呢,最常見的就是解析MySQL的binlog然後寫入到Greenplum中,本文就描述了一種實現方法。
方法
本文介紹的方法是採用 maxwell+Kafka+bireme,以下簡單做一下介紹:
maxwell:maxwell能實時解析MySQL的binlog,並輸出json格式的數據發送到Kafka(還支援其它的消息中間件),具體參見maxwell官網
Kafka: 一種消息中間件,在該方案中主要用於消息中轉,具體參見Kafka官網
bireme:支援Greenplum的數據增量同步工具,在寫入Greenplum的過程中,由於採用Copy模式,所以性能較高,具體參見bireme官網
使用該方法,總體流程就是如下3步:
- 下載並搭建Kafka服務(如果是雲環境,最好使用雲上的kafka,省去搭建和維護的成本,比如騰訊雲CKafka)
- 下載並搭建maxwell服務,修改配置使其能夠連接MySQL並能向kafka寫入數據
- 下載並搭建bireme服務,修改配置使其能讀取kafka的數據並能向Greenplum寫入數據
前置
- 運行上述軟體需要先安裝java
yum -y install java-1.8.0-openjdk.x86_64
- 安裝jsvc
yum -y install jsvc
- 確保機器對MySQL,Kafka,Greenplum網路連通
Kafka
為了簡便,此處使用騰訊雲CKafka作為例子
1. 騰訊雲CKafka地址
2. 創建一個topic

maxwell
1. maxwell下載地址,選取最新版本即可
2. 解壓之後,需要修改配置文件
cp config.properties.example config.properties
至少修改以下項目
# kafka配置 kafka_topic=maxwell kafka.bootstrap.servers=localhost:9092 # MySQL配置 host=localhost port=3306 user=maxwell password=maxwell
3. 啟動maxwell
bin/maxwell --config config.properties
4. 需要注意,maxwell啟動後,會在MySQL中創建一個maxwell的資料庫

bireme
1. bireme下載地址,選取最新版本即可
2. 解壓後,修改配置文件etc/config.properties
# target database where the data will sync into. target.url = jdbc:postgresql://127.0.0.1:5432/postgres target.user = postgres target.passwd = postgres # data source name list, separated by comma. data_source = maxwell1 # data source "mysql1" type maxwell1.type = maxwell # kafka server which maxwell write binlog into. maxwell1.kafka.server = 127.0.0.1:9092 # kafka topic which maxwell write binlog into. maxwell1.kafka.topic = topic_name1 # kafka groupid used for consumer. maxwell1.kafka.groupid = bireme
3. 修改配置etc/maxwell1.properties
需要注意 maxwell1.properties中的maxwell1就是etc/config.properties中配置的data_source
以下表名MySQL中的test庫的tb1和Greeplum(資料庫在配置中已經指定了)中的public schema下的tb1是對應的,需要同步數據
test.tb1 = public.tb1
4. 啟動bireme, bin/bireme start
注意:啟動bireme,需設置JAVA_HOME
總結
該方案主要使用開源組件,門檻較低,僅需修改配置便可運行,不過需要用戶自己維護開源組件的運行,後續將介紹一些