TiDB Binlog 版本升级方法

如未特别指明,文中出现的 TiDB Binlog 均指最新的 Cluster 版本。

版本升级 - 图1

注意

  • TiDB Binlog 与 TiDB v5.0 开始引入的一些特性不兼容,无法一起使用,详情参照注意事项
  • 从 TiDB v7.5.0 开始,TiDB Binlog 组件的数据同步功能不再提供技术支持,强烈建议使用 TiCDC 作为数据同步的替代方案。
  • 尽管 TiDB v7.5.0 仍支持 TiDB Binlog 组件的实时备份和恢复,但该组件在未来版本中将被完全废弃,推荐使用 PITR 作为数据恢复的替代方案。

本文介绍通过手动部署的 TiDB Binlog 的版本升级方法,另外有一小节介绍如何从更早的不兼容版本(Kafka/Local 版本)升级到最新版本。

手动部署

升级 Pump

对集群里的每个 Pump 逐一升级,确保集群中总有 Pump 可以接收 TiDB 发来的 Binlog。

  1. 用新版本的 pump 替换原来的文件
  2. 重启 Pump 进程

升级 Drainer

  1. 用新版本的 drainer 替换原来的文件
  2. 重启 Drainer 进程

从 Kafka/Local 版本升级到 Cluster 版本

新版本的 TiDB(v2.0.8-binlog、v2.1.0-rc.5 及以上版本)不兼容 Kafka 版本以及 Local 版本的 TiDB Binlog,集群升级到新版本后只能使用 Cluster 版本的 TiDB Binlog。如果在升级前已经使用了 Kafka/Local 版本的 TiDB Binlog,必须将其升级到 Cluster 版本。

TiDB Binlog 版本与 TiDB 版本的对应关系如下:

TiDB Binlog 版本TiDB 版本说明
LocalTiDB 1.0 及更低版本
KafkaTiDB 1.0 ~ TiDB 2.1 RC5TiDB 1.0 支持 local 版本和 Kafka 版本的 TiDB Binlog。
ClusterTiDB v2.0.8-binlog,TiDB 2.1 RC5 及更高版本TiDB v2.0.8-binlog 是一个支持 Cluster 版本 TiDB Binlog 的 2.0 特殊版本。

升级流程

版本升级 - 图2

注意

如果能接受重新导全量数据,则可以直接废弃老版本,按 TiDB Binlog 集群部署中的步骤重新部署。

如果想从原来的 checkpoint 继续同步,使用以下升级流程:

  1. 部署新版本 Pump。

  2. 暂停 TiDB 集群业务。

  3. 更新 TiDB 以及配置,写 Binlog 到新的 Pump Cluster。

  4. TiDB 集群重新接入业务。

  5. 确认老版本的 Drainer 已经将老版本的 Pump 的数据完全同步到下游。

    查询 Drainer 的 status 接口,示例命令如下:

    1. curl 'http://172.16.10.49:8249/status'
    1. {"PumpPos":{"172.16.10.49:8250":{"offset":32686}},"Synced": true ,"DepositWindow":{"Upper":398907800202772481,"Lower":398907799455662081}}

    如果返回的 Synced 为 true,则可以认为 Binlog 数据已经全部同步到了下游。

  6. 启动新版本 Drainer;

  7. 下线老版本的 Pump、Drainer 以及依赖的 Kafka 和 ZooKeeper。