升级 StarRocks
本文介绍如何升级 StarRocks 集群。
概述
在升级之前,请查看本节中的信息,并执行任何建议的操作。
StarRocks 版本
StarRocks 的版本由三个数字表示,格式为 主版本号.次版本号.修订版本号,例如 2.5.4
。第一个数字代表 StarRocks 的主版本号,第二个数字代表次版本号,第三个数字代表修订版本号。
注意
请注意,您无法将现有的 Shared-Nothing 集群升级到 Shared-Data 集群,反之亦然。您必须部署一个新的 Shared-Data 集群。
升级路径
-
对于修订版本升级
您可以跨修订版本升级 StarRocks 集群,例如,从 v2.2.6 直接升级到 v2.2.11。
-
对于次版本升级
从 StarRocks v2.0 开始,您可以跨次版本升级 StarRocks 集群,例如,从 v2.2.x 直接升级到 v2.5.x。但是,出于兼容性和安全原因,我们强烈建议您从一个次版本连续升级到另一个次版本。例如,要将 StarRocks v2.2 集群升级到 v2.5,您需要按以下顺序升级:v2.2.x --> v2.3.x --> v2.4.x --> v2.5.x。
-
对于主版本升级
要将您的 StarRocks 集群升级到 v3.0,您必须首先将其升级到 v2.5。
注意
假设您需要执行连续的次版本升级,例如,2.4->2.5->3.0->3.1->3.2,或者您的集群在升级失败后已降级,并且您想再次升级集群,例如,2.5->3.0->2.5->3.0。为了防止某些 Follower FE 的元数据升级失败,请在两次连续升级之间或在降级后第二次尝试升级之前执行以下步骤
- 运行 ALTER SYSTEM CREATE IMAGE 以创建新镜像。
- 等待新镜像同步到所有 Follower FE。
您可以通过查看 Leader FE 的日志文件 fe.log 来检查镜像文件是否已同步。类似 “push image.* from subdir [] to other nodes. totally xx nodes, push successful xx nodes” 的日志记录表明镜像文件已成功同步。
升级步骤
StarRocks 支持滚动升级,允许您在不停止服务的情况下升级集群。按照设计,BE 和 CN 向后兼容 FE。因此,您需要先升级 BE 和 CN,然后再升级 FE,以使您的集群在升级时能够正常运行。以相反的顺序升级它们可能会导致 FE 与 BE/CN 之间不兼容,从而导致服务崩溃。对于 FE 节点,您必须先升级所有 Follower FE 节点,然后再升级 Leader FE 节点。
准备工作
在准备过程中,如果要进行次版本或主版本升级,则必须执行兼容性配置。您还需要在升级集群中的所有节点之前,先在一个 FE 和 BE 上执行升级可用性测试。
执行兼容性配置
如果要将 StarRocks 集群升级到更高的次版本或主版本,则必须执行兼容性配置。除了通用的兼容性配置外,详细配置因您升级的 StarRocks 集群的版本而异。
- 通用兼容性配置
在升级 StarRocks 集群之前,您必须禁用 Tablet 克隆。如果您已禁用 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 克隆。
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");
- 如果从 v2.0 升级到更高版本
在升级 StarRocks v2.0 集群之前,必须设置以下 BE 配置和系统变量。
-
如果您修改了 BE 配置项
vector_chunk_size
,则必须在升级前将其设置为4096
。由于它是一个静态参数,因此您必须在 BE 配置文件 be.conf 中修改它并重新启动节点以使修改生效。 -
将系统变量
batch_size
全局设置为小于或等于4096
。SET GLOBAL batch_size = 4096;
升级 BE
通过升级可用性测试后,您可以先升级集群中的 BE 节点。
-
导航到 BE 节点的工作目录并停止该节点。
# Replace <be_dir> with the deployment directory of the BE node.
cd <be_dir>/be
./bin/stop_be.sh -
将 bin 和 lib 下的原始部署文件替换为新版本的部署文件。
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 . -
启动 BE 节点。
sh bin/start_be.sh --daemon
-
检查 BE 节点是否成功启动。
ps aux | grep starrocks_be
-
重复上述步骤以升级其他 BE 节点。
升级 CN
-
导航到 CN 节点的工作目录并优雅地停止该节点。
# Replace <cn_dir> with the deployment directory of the CN node.
cd <cn_dir>/be
./bin/stop_cn.sh --graceful -
将 bin 和 lib 下的原始部署文件替换为新版本的部署文件。
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 . -
启动 CN 节点。
sh bin/start_cn.sh --daemon
-
检查 CN 节点是否成功启动。
ps aux | grep starrocks_be
-
重复上述步骤以升级其他 CN 节点。
升级 FE
在升级所有 BE 和 CN 节点后,您可以升级 FE 节点。您必须先升级 Follower FE 节点,然后再升级 Leader FE 节点。
-
导航到 FE 节点的工作目录并停止该节点。
# Replace <fe_dir> with the deployment directory of the FE node.
cd <fe_dir>/fe
./bin/stop_fe.sh -
将 bin、lib 和 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 . -
启动 FE 节点。
sh bin/start_fe.sh --daemon
-
检查 FE 节点是否成功启动。
ps aux | grep StarRocksFE
-
重复上述步骤以升级其他 Follower FE 节点,最后升级 Leader FE 节点。