官方参考
参考
tiup update cluster
注意: 如果 tiup --version 显示 tiup 版本低于 v1.0.0,请在执行 tiup update cluster 之前先执行 tiup update --self 命令更新 tiup 版本。
最新版本可以通过执行 tiup list tidb 来查看 TiUP 支持的版本
tiup list tidb
运行后可以看到相关的版本
Available versions for tidb:
Version Installed Release Platforms
------- --------- ------- ---------
nightly 2020-06-29T05:00:12+08:00 linux/amd64,darwin/amd64
……
v4.0.0-beta.1 2020-05-26T11:42:48+08:00 linux/amd64,linux/arm64,darwin/amd64
v4.0.0-beta.2 2020-05-26T11:56:51+08:00 linux/amd64,linux/arm64,darwin/amd64
v4.0.0-rc 2020-05-26T14:56:06+08:00 linux/amd64,linux/arm64,darwin/amd64
v4.0.0-rc.1 2020-04-29T01:03:31+08:00 linux/amd64,linux/arm64,darwin/amd64
v4.0.0-rc.2 2020-05-15T21:54:51+08:00 linux/amd64,linux/arm64,darwin/amd64
v4.0.0 2020-05-28T20:10:10+08:00 linux/amd64,linux/arm64,darwin/amd64
v4.0.1 2020-06-12T21:22:29+08:00 linux/amd64,linux/arm64,darwin/amd64
[tidb@dev29 ~]$
tiup cluster upgrade <cluster-name> <version>
以升级到 v4.0.0 版本为例:
tiup cluster upgrade <cluster-name> v4.0.0
滚动升级会逐个升级所有的组件。升级 TiKV 期间,会逐个将 TiKV 上的所有 leader 切走再停止该 TiKV 实例。默认超时时间为 5 分钟,超过后会直接停止实例。
如果不希望驱逐 leader,而希望立刻升级,可以在上述命令中指定 --force,该方式会造成性能抖动,不会造成数据损失。但是对线上运行的集群影响较大。
tiup cluster upgrade v4.0.0 --force
如果希望保持性能稳定,则需要保证 TiKV 上的所有 leader 驱逐完成后再停止该 TiKV 实例,可以指定 --transfer-timeout 为一个超大值,如 --transfer-timeout 100000000,单位为 s。
例:tiup cluster upgrade v4.0.0 --transfer-timeout 100000000
tiup cluster display <cluster-name>
Restarting component tiflash
Restarting instance 192.168.181.6
retry error: operation timed out after 1m0s
192.168.181.6 failed to restart: timed out waiting for port 9000 to be started after 1m0s
Error: failed to upgrade: failed to restart tiflash: 192.168.181.6 failed to restart: timed out waiting for port 9000 to be started after 1m0s: timed out waiting for port 9000 to be started after 1m0s
Verbose debug logs has been written to /home/tidb/logs/tiup-cluster-debug-2020-06-29-20-26-05.log.
Error: run `/home/tidb/.tiup/components/cluster/v1.0.7/tiup-cluster` (wd:/home/tidb/.tiup/data/S3IqRWN) failed: exit status 1
快速处理的话,可以先 scale-in tiflash 节点。升级成功后在扩容上去。
1、使用 pd-ctl 的 store 命令在 PD 中查看该 TiFlash 节点对应的 store id。(pd-address——IP:prot)
tiup ctl pd -u -address> store
2、在 pd-ctl 中下线该 TiFlash 节点。
tiup ctl pd -u -address> store delete >
3、等待该 TiFlash 节点对应的 store 消失或者 state_name 变成 Tombstone 再关闭 TiFlash 进程。
如果等待较长时间后,该节点仍然无法正常消失或者状态变成 Tombstone,可以考虑以下命令,把节点强制踢出集群:
curl -X POST 'http://-address>/pd/api/v1/store/>/state?state=Tombstone'
4、手动删除 TiFlash 的数据文件,具体位置可查看在集群拓扑配置文件中 TiFlash 配置部分下的 data_dir
目录。
一般默认是:/tidb-data/tiflash-9000找到tiflash的机器删除
5、手动更新 TiUP 的集群配置文件,在编辑模式中手动删除我们已经下线的 TiFlash 节点信息:
tiup cluster edit-config -name>
注意:
如果在集群中所有的 TiFlash 节点停止运行之前,没有取消所有同步到 TiFlash 的表,则需要手动在 PD 中清除同步规则,否则无法成功完成 TiFlash 节点的下线。
注1、查询当前 PD 实例中所有与 TiFlash 相关的的数据同步规则。
curl http://>:>/pd/api/v1/config/rules/group/tiflash
[
{
"group_id": "tiflash",
"id": "table-45-r",
"override": true,
"start_key": "7480000000000000FF2D5F720000000000FA",
"end_key": "7480000000000000FF2E00000000000000F8",
"role": "learner",
"count": 1,
"label_constraints": [
{
"key": "engine",
"op": "in",
"values": [
"tiflash"
]
}
]
}
]
注2、删除所有与 TiFlash 相关的数据同步规则。以 id 为 table-45-r 的规则为例,通过以下命令可以删除该规则。
curl -v -X DELETE http://>:>/pd/api/v1/config/rule/tiflash/table-45-r
6、再次查看集群状态
tiup cluster display -name>
(完成)
tiup cluster scale-in -name> --node 10.0.1.4:9000
启动集群
启动集群操作会按 PD -> TiKV -> Pump -> TiDB -> TiFlash -> Drainer 的顺序启动整个 TiDB 集群所有组件(同时也会启动监控组件):
tiup cluster start ${cluster-name}
注意:
你需要将 ${cluster-name} 替换成实际的集群名字,若忘记集群名字,可通过 tiup cluster list 查看。
该命令支持通过 -R 和 -N 参数来只启动部分组件。
#例如,下列命令只启动 PD 组件:
tiup cluster start ${cluster-name} -R pd
# 下列命令只启动 1.2.3.4 和 1.2.3.5 这两台机器上的 PD 组件:
tiup cluster start ${cluster-name} -N 1.2.3.4:2379,1.2.3.5:2379
# 手动停止集群
[tidb@test1 ~]$ tiup cluster stop tidb-test
# 销毁集群
[tidb@test1 ~]$ tiup cluster destroy tidb-test