Kafka Connect如何實現同步RDS binlog資料?
本文介紹如何在E-MapReduce上使用Kafka Connect實現同步RDS binlog資料
1. 背景
在我們的業務開發中,往往會碰到下面這個場景:
業務更新資料寫到資料庫中
業務更新資料需要實時傳遞給下游依賴處理
所以傳統的處理架構可能會這樣:
但這個架構也存在著不少弊端:我們需要在專案中維護很多傳送訊息的程式碼。新增或者更新訊息都會帶來不少維護成本。所以,更好的處理方式應該是直接將資料庫的資料接入到流式系統中,如下圖:
本文將演示如何在E-MapReduce上實現將RDS binlog實時同步到Kafka叢集中。
2. 環境準備
實驗中使用VPC網路環境,以下例項建立時預設都是在VPC環境下。
2.1 準備一個測試RDS資料庫
建立一個RDS例項,版本選擇5.7。這裡不贅述如何建立RDS,詳細流程請參考RDS文件。建立完如圖:
2.2 準備一個Kafka叢集
建立一個E-MapReduce Kafka叢集,版本選擇EMR-3.11.0。需要注意,這裡必須選擇EMR-3.11.0以上版本,否則不會預設安裝啟動Kafka Connect服務。詳細建立流程請參考E-MapReduce文件。建立完如圖:
注意:RDS例項和E-MapReduce Kafka叢集最好在同一個VPC中,否則需要打通兩個VPC之間的網路。
3. Kafka Connect
3.1 Connector
Kafka Connect是一個用於Kafka和其他資料系統之間進行資料傳輸的工具,它可以實現基於Kafka的資料管道,打通上下游資料來源。我們需要做的就是在Kafka Connect服務上執行一個Connector,這個Connector是具體實現如何從/向資料來源中讀/寫資料。Confluent提供了很多Connector實現,你可以在這裡下載。不過今天我們使用Debezium提供的一個MySQL Connector外掛,下載地址。
下載這個外掛,並將解壓出來的jar包全部複製到kafka lib目錄下。注意:需要將這些jar包複製到Kafka叢集所有機器上。
在Kafka叢集的服務列表中重啟Kafka Connect元件。
3.2 啟動Connector
在建立connector前,我們需要做一番配置,這裡羅列一些Debezium MySQL Connector的主要配置項:
登入到Kafka叢集,配置並建立一個connector,命令如下:
這時,我們可以看到一個建立好的connector,如圖:
3.3 注意事項
server_id是多少?:你可以在RDS執行"SELECT @@server_id;"查到。
建立connector時可能會出現連線失敗,請確保RDS的白名單已經授權了Kafka叢集機器訪問。
4 測試
4.1 建立一張表
一會之後,Kafka叢集中會自動建立一個對應的topic
插入幾條資料
檢視binlog資料
檢視fulfillment.mugen.students這個topic,是否有剛剛新插入的資料
結果如圖所示:
5. 資料
confluent官方文件
debezium官網
kafka官方文件 http://kafka.apache.org/documentation.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31077337/viewspace-2154534/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Kafka 叢集如何實現資料同步?Kafka
- 永續性Akka、Kafka、Cassandra實現CQRS資料同步Kafka
- 通過DTS將RDS的資料實時同步至DataHub
- 基於 MySQL Binlog 的 Elasticsearch 資料同步實踐MySqlElasticsearch
- mysql通過kafka實現資料實時同步(三)——es叢集配置MySqlKafka
- 用canal監控binlog並實現mysql定製同步資料的功能MySql
- Clickhouse Engine kafka 將kafka資料同步clickhouseKafka
- PG 資料庫 從阿里雲pg rds 同步資料。資料庫阿里
- AWS RDS上如何使用mysqlbinlog命令下載binlogMySql
- Linux 伺服器如何實現資料同步?Linux伺服器
- 如何高效實現 MySQL 與 elasticsearch 的資料同步MySqlElasticsearch
- alpakka-kafka(8)-kafka資料消費模式實現Kafka模式
- canal+mysql+kafka實時資料同步安裝、配置MySqlKafka
- jstree實現資料同步JS
- 技術乾貨|如何利用 ChunJun 實現資料實時同步?
- 實戰案例丨使用雲連線CC和資料複製服務DRS實現跨區域RDS遷移和資料同步
- 如何在 PyQt 中實現非同步資料庫請求QT非同步資料庫
- SQL Server CDC配合Kafka Connect監聽資料變化SQLServerKafka
- kafka connect,將資料批量寫到hdfs完整過程Kafka
- 教你如何運用python實現不同資料庫間資料同步功能Python資料庫
- E-Mapreduce如何處理RDS的資料
- 資料同步:教你如何實時把資料從 MySQL 同步到 OceanBaseMySql
- 技術乾貨|如何利用 ChunJun 實現資料離線同步?
- PostgreSQL邏輯複製資料同步到kafkaSQLKafka
- Kafka資料每5分鐘同步到HiveKafkaHive
- MySQL Binlog 增量同步工具 go-mysql-transfer 實現詳解MySqlGo
- 打造實時資料整合平臺——DataPipeline基於Kafka Connect的應用實踐APIKafka
- 天翼雲RDS資料庫如何修改資料庫引數資料庫
- 資料庫–如何連線RDS例項,使用雲資料庫?資料庫
- 高效資料移動指南 | 如何快速實現資料庫 SQL Server 到 Dameng 的資料同步?資料庫SQLServer
- 如何遠端管理天翼雲RDS資料庫資料庫
- 【Mysql】如何透過binlog恢復資料MySql
- 實現web資料同步的四種方式Web
- 使用GoldenGate 實現Oracle for Oracle 單向資料同步(實現表的DML操作同步)GoOracle
- mysql和redis實時同步資料怎麼實現MySqlRedis
- Laravel-Binlog 擴充套件(用於實時監聽 MySQL 資料變更、資料同步等場景)Laravel套件MySql
- 資料庫系列——基於Canal實現MySQL增量資料同步資料庫MySql
- kafka資料遷移實踐Kafka