跳到主要内容
版本:Latest-4.1

降级 StarRocks

本文介绍如何降级您的 StarRocks 集群。

如果升级 StarRocks 集群后出现异常,您可以将其降级到之前的版本,以快速恢复集群。

概述

请在降级前查看本节中的信息。建议您按照文中推荐的操作降级集群。

降级路径

  • 小版本降级

    您可以跨小版本降级您的 StarRocks 集群,例如,从 v3.5.11 直接降级到 v3.5.6。

  • 大版本降级

    出于兼容性和安全原因,我们强烈建议您将 StarRocks 集群按大版本逐级降级。例如,要将 StarRocks v3.5 集群降级到 v3.2,需要按照以下顺序降级:v3.5.x --> v3.4.x --> v3.3.x --> v3.2.x。

  • 重大版本降级

    您只能将 StarRocks v4.1 集群降级至 v4.0.6 及更高版本。

    warning

    降级说明

    • 将 StarRocks 升级至 v4.1 后,请勿降级至 v4.0.6 之前的任何 v4.0 版本。

      由于 v4.1 引入了数据布局的内部变更(与 Tablet 分割和数据分布机制相关),升级至 v4.1 的集群生成的元数据和存储结构可能与早期版本不完全兼容。因此,从 v4.1 降级仅支持降至 v4.0.6 或更高版本。不支持降级至 v4.0.6 之前的版本。此限制源于早期版本在解析 Tablet 布局和分布元数据时的向后兼容性约束。

降级流程

StarRocks 的降级流程与 升级流程 相反。所以您需要先降级 FE,再降级 BE 和CN。错误的降级顺序可能会导致 FE 与 BE/CN 不兼容,进而导致服务崩溃。对于 FE 节点,您必须先降级所有 Follower FE 节点,最后降级 Leader FE 节点。

准备工作

准备过程中,如果您需要进行大版本或重大版本降级,则必须进行兼容性配置。在全面降级集群所有节点之前,您还需要对其中一个 FE 和 BE 节点进行降级正确性测试。

兼容性配置

如需进行大版本或重大版本降级,则必须进行兼容性配置。除了通用的兼容性配置外,还需根据降级前版本进行具体配置。

  • 通用兼容性配置

降级前,请关闭 Tablet Clone。如果您已经关闭 Balancer,可以跳过该步骤。

ADMIN SET FRONTEND CONFIG ("tablet_sched_max_scheduling_tablets" = "0");
ADMIN SET FRONTEND CONFIG ("tablet_sched_max_balancing_tablets" = "0");
ADMIN SET FRONTEND CONFIG ("disable_balance"="true");
ADMIN SET FRONTEND CONFIG ("disable_colocate_balance"="true");

完成降级,并且所有 BE 节点状态变为 Alive 后,您可以重新开启 Tablet Clone。

ADMIN SET FRONTEND CONFIG ("tablet_sched_max_scheduling_tablets" = "10000");
ADMIN SET FRONTEND CONFIG ("tablet_sched_max_balancing_tablets" = "500");
ADMIN SET FRONTEND CONFIG ("disable_balance"="false");
ADMIN SET FRONTEND CONFIG ("disable_colocate_balance"="false");

降级 FE

通过降级正确性测试后,您可以先降级 FE 节点。您必须先降级 Follower FE 节点,然后再降级 Leader FE 节点。

备注

如需将 v3.3.0 及以上集群降级至 v3.2,需在降级前执行以下操作:

  1. 确保降级前的 v3.3 集群中发起的所有 ALTER TABLE SCHEMA CHANGE 事物已完成或取消。

  2. 通过以下命令清理所有事务历史记录:

    ADMIN SET FRONTEND CONFIG ("history_job_keep_max_second" = "0");
  3. 通过以下命令确认无历史记录遗留:

    SHOW PROC '/jobs/<db>/schema_change';
  1. 生成新的元数据快照。

    a. 执行 ALTER SYSTEM CREATE IMAGE 创建新的元数据快照文件。

    b. 通过查看 Leader FE 节点的日志文件 fe.log 确认元数据快照文件是否推送完成。如果日志打印以下内容,则说明快照文件推送完成:

    push image.xxx from subdir [] to other nodes. totally xx nodes, push succeeded xx nodes
  2. 进入 FE 节点工作路径,并停止该节点。

    # 将 <fe_dir> 替换为 FE 节点的部署目录。
    cd <fe_dir>/fe
    ./bin/stop_fe.sh
  3. 替换部署文件原有路径 binlib 以及 spark-dpp 为旧版本的部署文件。

    mv lib lib.bak 
    mv bin bin.bak
    mv spark-dpp spark-dpp.bak
    cp -r /tmp/StarRocks-x.x.x/fe/lib .
    cp -r /tmp/StarRocks-x.x.x/fe/bin .
    cp -r /tmp/StarRocks-x.x.x/fe/spark-dpp .
  4. 启动该 FE 节点。

    ./bin/start_fe.sh --daemon
  5. 查看节点是否启动成功。

    ps aux | grep StarRocksFE
  6. 重复以上步骤 2~5 降级其他 Follower FE 节点,最后降级 Leader FE 节点。

    注意

    如果您在升级之后进行了回滚,之后有计划再次执行升级,比如 3.5->4.0->3.5->4.0。为了避免第二次升级时,部分 FE 节点元数据升级失败,建议您在降级完成后再次执行步骤 1,生成新的元数据快照。

降级 BE

降级所有 FE 节点后,您可以继续降级 BE 节点。

  1. 进入 BE 节点工作路径,并停止该节点。

    # 将 <be_dir> 替换为 BE 节点的部署目录。
    cd <be_dir>/be
    ./bin/stop_be.sh
  2. 替换部署文件原有路径 binlib 为旧版本的部署文件。

    mv lib lib.bak 
    mv bin bin.bak
    cp -r /tmp/StarRocks-x.x.x/be/lib .
    cp -r /tmp/StarRocks-x.x.x/be/bin .
  3. 启动该 BE 节点。

    ./bin/start_be.sh --daemon
  4. 查看节点是否启动成功。

    ps aux | grep starrocks_be
  5. 重复以上步骤降级其他 BE 节点。

降级 CN

  1. 进入 CN 节点工作路径,并优雅停止该节点。

    # 将 <cn_dir> 替换为 CN 节点的部署目录。
    cd <cn_dir>/be
    ./bin/stop_cn.sh --graceful
  2. 替换部署文件原有路径 binlib 为新版本的部署文件。

    mv lib lib.bak 
    mv bin bin.bak
    cp -r /tmp/StarRocks-x.x.x/be/lib .
    cp -r /tmp/StarRocks-x.x.x/be/bin .
  3. 启动该 CN 节点。

    ./bin/start_cn.sh --daemon
  4. 查看节点是否启动成功。

    ps aux | grep starrocks_be
  5. 重复以上步骤降级其他 CN 节点。

Rocky the happy otterStarRocks Assistant

AI generated answers are based on docs and other sources. Please test answers in non-production environments.