TiDB Binlog 版本升级方法

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

    本节适用于使用 部署的情况。

    1. 将新版本的二进制文件 复制到 {{ resources_dir }}/bin 目录中
    2. 执行 ansible-playbook rolling_update.yml --tags=pump 命令来滚动升级 Pump
    1. 将新版本的二进制文件 drainer 复制到 目录中
    2. 执行 ansible-playbook stop_drainer.yml --tags=drainer 命令
    3. 执行 ansible-playbook start_drainer.yml --tags=drainer 命令

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

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

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

    1. 部署新版本 Pump。
    2. 暂停 TiDB 集群业务。
    3. 更新 TiDB 以及配置,写 Binlog 到新的 Pump Cluster。
    4. TiDB 集群重新接入业务。
    5. 确认老版本的 Drainer 已经将老版本的 Pump 的数据完全同步到下游。

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

      1. {"PumpPos":{"172.16.10.49:8250":{"offset":32686}},"Synced": true ,"DepositWindow":{"Upper":398907800202772481,"Lower":398907799455662081}}

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

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