TiDB Binlog 版本升级方法
如未特别指明,文中出现的 TiDB Binlog 均指最新的 Cluster 版本。
本文会分 TiDB Ansible 部署和手动部署两种情况介绍 TiDB Binlog 版本升级的方法,另外有一小节介绍如何从更早的不兼容版本(Kafka/Local 版本)升级到最新版本。
TiDB Ansible 部署
本节适用于使用 TiDB Ansible Playbook 部署的情况。
升级 Pump
- 将新版本的二进制文件
pump
复制到{{ resources_dir }}/bin
目录中 - 执行
ansible-playbook rolling_update.yml --tags=pump
命令来滚动升级 Pump
升级 Drainer
- 将新版本的二进制文件
drainer
复制到{{ resources_dir }}/bin
目录中 - 执行
ansible-playbook stop_drainer.yml --tags=drainer
命令 - 执行
ansible-playbook start_drainer.yml --tags=drainer
命令
手动部署
升级 Pump
对集群里的每个 Pump 逐一升级,确保集群中总有 Pump 可以接收 TiDB 发来的 Binlog。
- 用新版本的
pump
替换原来的文件 - 重启 Pump 进程
升级 Drainer
- 用新版本的
drainer
替换原来的文件 - 重启 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 版本 | 说明 |
---|---|---|
Local | TiDB 1.0 及更低版本 | |
Kafka | TiDB 1.0 ~ TiDB 2.1 RC5 | TiDB 1.0 支持 local 版本和 Kafka 版本的 TiDB Binlog。 |
Cluster | TiDB v2.0.8-binlog,TiDB 2.1 RC5 及更高版本 | TiDB v2.0.8-binlog 是一个支持 Cluster 版本 TiDB Binlog 的 2.0 特殊版本。 |
升级流程
如果想从原来的 checkpoint 继续同步,使用以下升级流程:
部署新版本 Pump。
暂停 TiDB 集群业务。
更新 TiDB 以及配置,写 Binlog 到新的 Pump Cluster。
TiDB 集群重新接入业务。
确认老版本的 Drainer 已经将老版本的 Pump 的数据完全同步到下游。
查询 Drainer 的
status
接口,示例命令如下:curl 'http://172.16.10.49:8249/status'{"PumpPos":{"172.16.10.49:8250":{"offset":32686}},"Synced": true ,"DepositWindow":{"Upper":398907800202772481,"Lower":398907799455662081}}如果返回的
Synced
为 true,则可以认为 Binlog 数据已经全部同步到了下游。启动新版本 Drainer;
下线老版本的 Pump、Drainer 以及依赖的 Kafka 和 ZooKeeper。