title | summary |
---|---|
tiup cluster patch |
tiup cluster patch 命令用于在集群运行过程中动态替换某个服务的二进制文件。它会上传替换的二进制包到目标机器,并通过 API 下线节点,停止目标服务,解压替换二进制包,最后启动目标服务。在使用命令前需要准备二进制包,包括确定组件名、版本、操作系统和平台,下载组件包,创建临时打包目录,解压原二进制包,复制要替换的文件到临时目录,最后打包所有文件。命令还包括一些选项,如 --overwrite、--transfer-timeout、-N、-R、--offline 等。 |
在集群运行过程中,如果需要动态替换某个服务的二进制文件(即替换过程中保持集群可用),那么可以使用 tiup cluster patch
命令,它会完成以下几件事情:
- 将用于替换的二进制包上传到目标机器
- 如果目标服务是 TiKV 或者 TiFlash 之类的存储服务,则先通过 API 下线节点
- 停止目标服务
- 解压二进制包,替换服务
- 启动目标服务
tiup cluster patch <cluster-name> <package-path> [flags]
<cluster-name>
代表要操作的集群名<package-path>
为用于替换的二进制包路径
在运行 tiup cluster patch
命令之前,你需要打包所需的二进制文件。请按照以下步骤操作:
-
确定以下变量的值:
${component}
:需要替换的组件名(例如tidb
、tikv
、pd
)。${version}
:组件的版本(例如v8.3.0
、v7.5.3
)。${os}
:操作系统 (linux
)。${arch}
:组件运行的平台 (amd64
、arm64
)。
-
下载当前的组件包:
wget https://tiup-mirrors.pingcap.com/${component}-${version}-${os}-${arch}.tar.gz -O /tmp/${component}-${version}-${os}-${arch}.tar.gz
-
创建临时打包目录:
mkdir -p /tmp/package && cd /tmp/package
-
解压原来的二进制包:
tar xf /tmp/${component}-${version}-${os}-${arch}.tar.gz
-
查看临时打包目录中的文件结构:
find .
-
将要替换的二进制文件或配置文件复制到临时目录的对应位置。
-
将临时目录中的所有文件打包:
tar czf /tmp/${component}-hotfix-${os}-${arch}.tar.gz *
完成上述步骤后,你可以在 tiup cluster patch
命令中使用 /tmp/${component}-hotfix-${os}-${arch}.tar.gz
作为 <package-path>
。
- 对某个组件(比如 TiDB,TiKV)进行 patch 后,如果要在该集群扩容该组件,tiup-cluster 会默认使用 patch 前的版本。如果希望后续扩容的时候也使用 patch 之后的版本,需要指定
--overwrite
选项。 - 数据类型:
BOOLEAN
- 该选项默认关闭,默认值为
false
。在命令中添加该选项,并传入true
值或不传值,均可开启此功能。
在重启 PD 或 TiKV 时,会先将被重启节点的 leader 迁移到其他节点,迁移过程会需要一定时间,可以通过设置 --transfer-timeout
设置最长等待时间(单位为秒),超时之后会跳过等待直接重启服务。
注意:
若出现跳过等待直接重启的情况,服务性能可能会出现抖动。
指定要替换的节点,该选项的值为以逗号分割的节点 ID 列表,节点 ID 为集群状态表格的第一列。
注意:
若同时指定了
-R, --role
,那么将替换它们的交集中的服务。
指定要替换的角色,该选项的值为以逗号分割的节点角色列表,角色为集群状态表格的第二列。
注意:
若同时指定了
-N, --node
,那么将替换它们的交集中的服务。
- 声明当前集群处于停止状态。指定该选项时,TiUP Cluster 仅原地替换集群组件的二进制文件,不执行迁移 Leader 以及重启服务等操作。
- 数据类型:
BOOLEAN
- 该选项默认关闭,默认值为
false
。在命令中添加该选项,并传入true
值或不传值,均可开启此功能。
- 输出帮助信息。
- 数据类型:
BOOLEAN
- 该选项默认关闭,默认值为
false
。在命令中添加该选项,并传入true
值或不传值,均可开启此功能。
tiup-cluster 的执行日志。