TiDB Binlog 組件用於收集 TiDB 的 binlog,並準實時同步給下游,如:TiDB/MySQL等。該組件在功能上類似於 MySQL 的主從複製,會收集各個 TiDB 實例產生的 binlog,並按事務提交的時間排序,全局有序的將數據同步至下游。利用 TiDB Binlog 可以實現數據準實時同步到其他數據庫,以及 TiDB 數據準實時的備份與恢復。TiDB Binlog 作爲 TiDB 的核心組件之一,已經在上百家用戶的生產環境中長時間穩定運行。
爲方便用戶和開發者更加深入理解和使用 TiDB Binlog 組件,以及基於 TiDB Binlog 組件做二次開發用於更多的業務場景, 我們決定今天正式開源 TiDB Binlog 組件。
TiDB Binlog 適用的功能場景
- 準實時數據同步:同步 TiDB 數據到其他數據庫或消息隊列(如TiDB/MySQL/MariaDB/Kafka)。
- 準實時備份和恢復:增量備份 TiDB 集羣數據到外部系統,利用備份的數據在系統故障或者其他場景時可將數據恢復到任意時間點。
TiDB Binlog 架構
TiDB Binlog 核心特性
- 支持類似 MySQL ROW 複製模式。
- 準實時並按事務提交的時間順序將數據同步至下游。
- 分佈式架構設計,支持水平彈性擴容和服務高可用。
- 數據高可靠,系統實時將數據持久化到本地磁盤。
-
支持多種輸出方式,如下:
- 文件:系統準實時將 binlog 寫入文件系統作爲增量備份,利用此增量備份文件可將數據恢復到任意時間點。
- 消息隊列:按照 binlog slave protocol 輸出到 Kafka。
- 下游目標數據庫:TiDB/MySQL/MariaDB。
TiDB Binlog 代碼及文檔資源
歡迎大家一起參與 TiDB Binlog 的設計、研發、測試共同推進 TiDB Binlog 走向更成熟,更穩定。近期我們將發佈 TiDB Binlog 源碼閱讀指南,敬請期待。