Doris集群升级

一、前言

文中的出现的BE二进制文件名称 doris_be,在之前的版本中为 palo_be

  1. Doris不支持跨两位版本号进行升级。此处的版本号指的是二级版本号(加粗字体0.XXX.123)

二、前置工作

  1. 关闭集群副本修复均衡功能(升级过程可能会重启,触发不必要的集群均衡和副本修复逻辑)

    1
    2
    3
    4
    5
    6
    7
    8
    # 关闭副本均衡逻辑。关闭后,不会再触发普通表副本的均衡操作。
    admin set frontend config("disable_balance" = "true");

    # 关闭 colocation 表的副本均衡逻辑。关闭后,不会再触发 colocation 表的副本重分布操作。
    admin set frontend config("disable_colocate_balance" = "true");

    # 关闭副本调度逻辑。关闭后,所有已产生的副本修复和均衡任务不会再被调度。
    admin set frontend config("disable_tablet_scheduler" = "true");

    当集群升级完毕后,在通过以上命令将对应配置设为原值即可。

  2. 重要!!在升级之前需要备份元数据(整个目录都需要备份)!!

    重要!!在升级之前需要备份元数据(整个目录都需要备份)!!

    重要!!在升级之前需要备份元数据(整个目录都需要备份)!!

三、测试BE升级正确性

  1. 选择一个BE节点,部署最新的 doris_be 二进制文件。
  2. 启动BE节点,通过be.INFO,查看是否启动成功。
  3. 启动失败解决方案
    • 错误不可恢复,
    • 可以直接通过 DROP BACKEND 删除该 BE、清理数据后,使用上一个版本的 doris_be 重新启动 BE。
    • 然后重新 ADD BACKEND。
    • 该方法会导致丢失一个数据副本,请务必确保3副本完整的情况下,执行这个操作!!!

四、测试 FE 元数据兼容性

重要!!元数据兼容性异常很可能导致数据无法恢复!!

  1. 单独使用新版本部署一个测试用的 FE 进程(建议在自己本地的开发机,或者BE节点。如果在Follower或者Observer节点上,需要停止启动的进程,但是不建议在Follower或者Observer节点上测试)
  2. 修改测试用的 FE 的配置文件 fe.conf,将所有端口设置为与线上不同
  3. 在 fe.conf 添加配置:metadata_failure_recovery=true
  4. 在 fe.conf 添加配置:metadata_failure_recovery=true
  5. 拷贝线上环境 Master FE 的元数据目录 doris-meta 到测试环境
  6. 将拷贝到测试环境中的 doris-meta/image/VERSION 文件中的 cluster_id 修改为 123456(即与第3步中相同)
  7. 在测试环境中,运行 sh bin/start_fe.sh 启动 FE
  8. 通过 FE 日志 fe.log 观察是否启动成功。
  9. 如果启动成功,运行 sh bin/stop_fe.sh 停止测试环境的 FE 进程。
  10. 以上 2-6 步的目的是防止测试环境的FE启动后,错误连接到线上环境中

注: 1.1.x 版本升级 1.2.x 版本时,需要先删除已有的原生 UDF ;否则会导致FE启动失败;并且1.2版本开始不再对原生 UDF提供支持,请使用 Java UDF

五、升级准备

  1. 在完成数据正确性验证后,将 BE 和 FE 新版本的二进制文件分发到各自目录下。

六、滚动升级