最近,在线上遇到了一个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套集群,均未发现异常。
Navicat for MySQL怎么连接数据库?- Navicat for MySQL连接数据库教程攻略