资讯

展开

TiDB版本升级案例

作者:快盘下载 人气:

最近,在线上遇到了一个TiDB版本升级的需求,之前一直没有遇到过,参照官方文档,对已有的几套集群做了下升级,也总结了一些自己的经验,这里分享出来。

一、TiDB版本介绍

TiDB目前最新的版本是5.4版本,推荐使用tiup工具进行部署和维护。而tiup工具是从TiDB4.0版本引进的,因此,从TiDB4.0开始,可以直接使用tiup工具进行直接升级,不需要多次升级,例如下面的升级方案都是可行的:

v4.0 --- v5.4

v4.0 --- v5.3

v4.0 --- v5.2

v4.0 --- v5.1

v4.0 --- v5.0

从上面描述可以看到,版本号我这边只写到第二位,只要大版本号的2位满足上述规则,则可以忽略小版本带来的差异。

相反,如果你的线上TiDB版本是TiDB3.0或者TiDB2.0 ,则需要先将TiDB版本升级到TiDB4.0,然后再升级到TiDB5.x版本,升级过程如下:

v3.0 --- v4.0 ---v5.x

二、TiDB升级须知

升级过程中,有以下必须了解的内容:

1、TiDB的升级过程不可逆,不支持版本降级或者回退,需要根据release note提前做好测试工作

2、如果使用TiDB Ansible管理的TiDB4.0集群,需要将集群导入到tiup工具中来管理,才可以使用tiup进行升级

3、v5.3版本之后,TiDB 内置的prometheus会从默认2.8版本升级到2.27版本

三、TiDB升级前置工作

1、确保没有DDL操作

2、需要确保tiup工具的版本不低于1.9.0

这个可以通过下面命令来执行更新:

tiup update --self来自动更新tiup版本

tiup --version 命令来查看当前tiup的版本

[root@ ~]# tiup --version 
1.9.2 tiup
Go Version: go1.17.7
Git Ref: v1.9.2
GitHash: d90f3eb81e145621c3880c320b88bf10c6f03a70

3、需要确保tiup cluster工具版本不低于1.9.0

这个可以通过下面命令来执行更新:

tiup update cluster来自动更新tiup版本

tiup cluster --version 命令来查看当前tiup的版本

[root@ ~]# tiup cluster --version 
tiup is checking updates for component cluster ...
Starting component `cluster`: /root/.tiup/components/cluster/v1.9.2/tiup-cluster /root/.tiup/components/cluster/v1.9.2/tiup-cluster --version
tiup version 1.9.2 tiup
Go Version: go1.17.7
Git Ref: v1.9.2
GitHash: d90f3eb81e145621c3880c320b88bf10c6f03a70

注意:如果你的服务器不能连接外网,则不能直接使用上述命令,需要在官网下载对应版本的tidb官方社区版本的软件:tidb-community-server,然后进行挤压,并执行其中的本地化安装脚本,从而实现安装,命令如下:

tar xzvf tidb-community-server-${version}-linux-amd64.tar.gz
sh tidb-community-server-${version}-linux-amd64/local_install.sh
source /home/tidb/.bash_profile

4、部分参数修改

如果你的TiDB 版本大于v5.0,而TiDB本身又配置了如下参数:

pessimistic-txn.enabled
server.request-batch-enable-cross-command
server.request-batch-wait-duration

则需要将这些参数注释之后再升级,因为这些参数在v5.0之后,已经取消。

四、TiDB升级步骤

目前,官方给的TiDB升级方案,主要有2种,一种是在线升级,一种是离线升级,默认的方案是在线升级,但是这里推荐采用离线升级,主要有下面几个原因:

1、在线升级对于大数据量不是很友好

这种升级方案,升级过程中集群可以对外提供服务,升级的时候会逐个升级集群的组件,包含tidb、pd、tikv等,对于tikv,牵扯到节点上的leader驱逐,驱逐后再进行升级和重启,当集群中的数据量很多的时候,leader数量也比较多,驱逐时间比较长,而且很容易造成驱逐超时

2、在线升级期间,业务可能会产生抖动问题,存在不确定性

3、离线升级虽然需要停机,但是升级过程只是软件包的替换,跟业务数据量无关,时间比较可控。

下面分别给出在线升级和离线升级的命令:

在线升级:

a、在线升级

tidb cluster upgrate cluster_name version

b、检查升级状态

tiup cluster display cluster_name

离线升级:

a、停服务

tiup cluster stop cluster_name

b、升级

tiup cluster upgrade cluster version --offline

c、启动服务

tiup cluster start cluster_name

d、检查升级状态

tiup cluster display cluster_name

以上就是升级过程中需要注意的问题。如果升级过程失败了,可以根据具体的失败类型来进行处理,详情可以参考:https://docs.pingcap.com/zh/tidb/stable/upgrade-tidb-using-tiup

本次线上升级,采用离线升级方案,升级了3套集群,均未发现异常。

加载全部内容

相关教程
猜你喜欢
用户评论
快盘暂不提供评论功能!