增量准實時日志同步 (binlog)
TiDB Binlog 用於收集 TiDB 中的二進制日志數據,提供實時數據備份和同步以及將 TiDB 集群的數據增量同步到下游應用業務。
適用場景
- 實時備份和恢復:備份 TiDB 集群數據,同時可以用於 TiDB 集群故障時恢復
- 數據同步:將 TiDB 集群數據增量同步到其他數據庫,或通過 Kafka 增量同步到選擇的下游
- 當使用 TiDB DM (Data Migration) 將數據從上游 MySQL 或者 MariaDB 遷移到 TiDB 集群時,可使用 TiDB Binlog 保持 TiDB 集群與其一個獨立下游 MySQL 或 MariaDB 實例或集群同步。當 TiDB 集群上游數據遷移過程中出現問題,下游數據同步過程中可使用 TiDB Binlog 恢復數據到原先的狀態。
TiDB Binlog 整體架構
TiDB Binlog 集群主要分為 Pump 和 Drainer 兩個組件,以及 binlogctl 管理工具。
一個 Pump 集群中有若干個 Pump 節點。TiDB 實例連接到各個 Pump 節點並發送 binlog 數據到 Pump 節點。Pump 集群連接到 Drainer 節點,Drainer 將接收到的更新數據轉換到某個特定下游(例如 Kafka、另一個 TiDB 集群或 MySQL 或 MariaDB Server)指定的正確格式。
Pump 的集群架構能確保 TiDB 或 Pump 集群中有新的實例加入或退出時更新數據不會丟失。
Pump
用於實時記錄 TiDB 產生的 Binlog,並將 Binlog 按照事務的提交時間進行排序,再提供給 Drainer 進行消費。
Drainer
從各個 Pump 中收集 Binlog 進行歸並,再將 Binlog 轉化成 SQL 或者指定格式的數據,最終同步到下游。
binlogctl 工具
與 TiDB Binlog 配套的運維工具。具有如下功能:
- 獲取 TiDB 集群當前的 TSO
- 查看 Pump/Drainer 狀態
- 修改 Pump/Drainer 狀態
- 暫停/下線 Pump/Drainer
軟件下載地址
對於 v2.1.0 GA 及以上版本,Pump 和 Drainer 已經包含在 TiDB 的下載包
# 下載官方 Binary
version='v4.0.9'
wget -c https://download.pingcap.org/tidb-{version}-linux-amd64.tar.gz &&
wget -c https://download.pingcap.org/tidb-{version}-linux-amd64.sha256
# 檢查文件完整性
sha256sum -c tidb-{version}-linux-amd64.sha256
檢查 TiDB 集群是否開啟binlog
show variables like 'log_bin';