tidb4.0升级==》v4.0.0-rc 升级到 v4.0.0(此为正式版TiDB 4.0 GA Release Notes)

官方参考
参考

1、如果之前安装过 TiUP,使用如下命令更新至最新版本即可:

tiup update cluster

注意: 如果 tiup --version 显示 tiup 版本低于 v1.0.0,请在执行 tiup update cluster 之前先执行 tiup update --self 命令更新 tiup 版本。

2、滚动升级 TiDB 集群

最新版本可以通过执行 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 ~]$

2.1、将集群升级到指定版本
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

2.2、升级后验证
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:

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,可以考虑以下命令,把节点强制踢出集群:

注意以下命令会直接丢弃该 TiFlash 节点上的副本,有可能导致查询失败
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>

(完成)

方案2:执行 scale-in 命令来下线节点,获得该节点名为 10.0.1.4:9000

tiup cluster scale-in -name> --node 10.0.1.4:9000

tiup常用语法

启动集群
启动集群操作会按 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

你可能感兴趣的:(TiDB)