前提:
1、之前是二进制方式安装tidb cluster
2、后面迁移到tiup
用tiup升级tidb集群报错,卡在tikv这一层,看了下日志,报错:
[2020/07/29 17:35:08.808 +08:00] [ERROR] [util.rs:327] ["request failed"] [err="Grpc(RpcFailure(RpcStatus { status: 2-UNKNOWN, details: Some(\"version should compatible with version 4.1.0-alpha, got 4.0.0\") }))"]
查了下tikv版本:
TiKV
Release Version: 4.1.0-alpha
Git Commit Hash: 36dab75da84ec57374d364a4a4af9146ec31df07
Git Commit Branch: master
UTC Build Time: 2020-02-17 01:39:18
Rust Version: rustc 1.42.0-nightly (0de96d37f 2019-12-19)
Enable Features: jemalloc portable sse protobuf-codec
Profile: dist_release
4.1.0-alpha是什么版本,tiup中貌似没找到,这个要怎么解决?
来了老弟
2
这边的升级过程是什么呢,请描述下
binary 的版本是什么呢。
tidb-server binary版本:
Release Version: v4.0.0-beta-159-ga22ab8f29
Git Commit Hash: a22ab8f2975c3de5270a1e8018027c71e5349249
Git Branch: master
UTC Build Time: 2020-02-17 12:13:43
GoVersion: go1.13
Race Enabled: false
TiKV Min Version: v3.0.0-60965b006877ca7234adaced7890d7b029ed1306
Check Table Before Drop: false
pd-server binary 版本:
Release Version: v4.0.0-beta-27-ga1e13640
Git Commit Hash: a1e13640572e3d6eadabf76c2869541c0c443956
Git Branch: master
UTC Build Time: 2020-02-17 01:50:09
tikv-server binary 版本:
TiKV
Release Version: 4.1.0-alpha
Git Commit Hash: 36dab75da84ec57374d364a4a4af9146ec31df07
Git Commit Branch: master
UTC Build Time: 2020-02-17 01:39:18
Rust Version: rustc 1.42.0-nightly (0de96d37f 2019-12-19)
Enable Features: jemalloc portable sse protobuf-codec
Profile: dist_release
升级过程:
1、使用topology.yml描述旧版本tidb的数据目录,然后直接用tiup进行deploy,tiup并不会覆盖tidb data目录
2、用tiup启动tidb集群的时候,就报tikv版本不支持了,tiup部署的是v4.0.0版本
来了老弟
4
之前 binary 部署的时候 tidb 的各个组件版本就不是统一的,最安全的办法建议将现有集群数据备份一下,使用 tiup 部署全新集群,并将旧数据导入。
或者
可以尝试将 tidb-server binary 4.0.0-beta 加到集群中并将 alpha 从集群中剔除,在进行 tiup deploy 看是否可以
1、怎么加入,怎么剔除?
2、4.1.0-alpha怎么会有这个版本?最新的不是才到v4.0.3
TiKV
Release Version: 4.1.0-alpha
Git Commit Hash: 36dab75da84ec57374d364a4a4af9146ec31df07
Git Commit Branch: master
UTC Build Time: 2020-02-17 01:39:18
Rust Version: rustc 1.42.0-nightly (0de96d37f 2019-12-19)
Enable Features: jemalloc portable sse protobuf-codec
Profile: dist_release
来了老弟
6
之前 binary 不知道这边是怎么下载的,
binary 部署下线 tidb-server 直接 kill alpha 版本的即可。
新加一个 tidb-server 这边可以使用之前的命令重新启动一个就行,注意 --path 部分的配置。
eg:
./bin/tidb-server --store=tikv \
--path="127.0.0.1:2379" \
--log-file=tidb.log
来了老弟
8
提供下 binary 的集群 topo 吧。
可以先加一个 tikv 上去,将 alpha 版本 tikv 上的 region 和 leader 都迁移到新的 tikv 上,走 tikv 下线流程就行。
>> scheduler add evict-leader-scheduler 1 // 把 store 1 上的所有 Region 的 leader 从 store 1 调度出去
或者可以直接关闭 tikv ,通过 pd-ctl 看到 tikv 状态为 Tombstone 即为下线成功。
@户口舟亢
没办法这样做,没有资源;
只能in-place升级
topology:
Starting component `cluster`: display bi
TiDB Cluster: bi
TiDB Version: v4.0.0
ID Role Host Ports OS/Arch Status Data Dir Deploy Dir
-- ---- ---- ----- ------- ------ -------- ----------
10.59.111.210:9093 alertmanager 10.59.111.210 9093/9094 linux/x86_64 Up /data/alertmanager/data /data/alertmanager
10.59.111.210:3000 grafana 10.59.111.210 3000 linux/x86_64 Up - /data/grafana
10.59.111.117:2379 pd 10.59.111.117 2379/2380 linux/x86_64 Up|L /data/pd/data /data/pd
10.59.111.12:2379 pd 10.59.111.12 2379/2380 linux/x86_64 Up|UI /data/pd/data /data/pd
10.59.111.178:2379 pd 10.59.111.178 2379/2380 linux/x86_64 Up /data/pd/data /data/pd
10.59.111.210:9090 prometheus 10.59.111.210 9090 linux/x86_64 Up /data/prometheus/data /data/prometheus
10.59.111.117:4000 tidb 10.59.111.117 4000/10080 linux/x86_64 Up - /data/tidb
10.59.111.12:4000 tidb 10.59.111.12 4000/10080 linux/x86_64 Up - /data/tidb
10.59.111.178:4000 tidb 10.59.111.178 4000/10080 linux/x86_64 Up - /data/tidb
10.59.108.120:20160 tikv 10.59.108.120 20160/20180 linux/x86_64 Up /data/disk3/tikv/store /data/disk3/tikv
10.59.108.120:20161 tikv 10.59.108.120 20161/20181 linux/x86_64 Up /data/disk4/tikv/store /data/disk4/tikv
10.59.108.121:20160 tikv 10.59.108.121 20160/20180 linux/x86_64 Up /data/disk3/tikv/store /data/disk3/tikv
10.59.108.121:20161 tikv 10.59.108.121 20161/20181 linux/x86_64 Up /data/disk4/tikv/store /data/disk4/tikv
10.59.108.122:20160 tikv 10.59.108.122 20160/20180 linux/x86_64 Up /data/disk3/tikv/store /data/disk3/tikv
10.59.108.122:20161 tikv 10.59.108.122 20161/20181 linux/x86_64 Up /data/disk4/tikv/store /data/disk4/tikv
上面看到tikv是正常启动,那是因为我改了tiup中启动脚本,把tikv运行命令改为原来的v4.1.0-alpha来运行
来了老弟
12
额,不是有或者吗,,,你 6 tikv 3 副本不是有冗余的吗。。。关闭这个 tikv 等到 Tombstone 就可以了。
来了老弟
14
>> scheduler add evict-leader-scheduler 1 // 把 store 1 上的所有 Region 的 leader 从 store 1 调度出去
先迁移 region leader 在关闭 tikv 也可以啊。
不建议修改,修改的哪里可以贴出来看下。修改之后不确定在 tiup 升级或者其他操作还有问题,请知悉。
scheduler add evict-leader-scheduler 1
这个可以试下
来了老弟
18
这方面可以自行评估,不建议这样做,会有未知的运维风险在。
通过 pd-ctl store 看下 region count 和 leader count 是否存在,再看下流量是否打到了这台 tikv 上