51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

【升级实践】记录一次版本升级:TiDB v5.4 到 TiDB v6.5的过程

本文作者:董明放 TiDB 社区布道师


1.背景介绍



有个项目的数据库一直用的5.4.3版本,由于用的比较少,其实升级不升级的没啥必要,但是考虑到高版本的性能更强,功能也更多,同时为了练练手,决定对其进行升级。

给个建议,升级你首先要考虑你要升级的目标是什么,来决定你升级的版本,例如你当前版本有bug,暂时没有其他的解决方案,只能升级解决,那你可能只需要升级到你当前版本的对应bug解决之后的版本即可,可以不用升级大版本,例如从6.5.3升级到6.5.8之类的,这样升级其实改动的非常小,可能就是针对某些bug的修复而已,这样风险最小;但如果你的库版本比较老,当前版本已经是大版本的最后一个版本,例如5.4.3,那可能就得跨大版本升级了。又或者你看中了新版本的某个功能,例如我看中的是6.5的索引加速和密码管理策略,那我就升级到6.5的最新版本就可以了,7的资源管控很好很强大,但是我暂时不需要所以我并没有升级到7。

选好升级的版本,之后就需要考虑升级的方法了,这个可以根据下面的文档来选择。



2.参考文档



文档地址:使用 TiUP 升级 TiDB | PingCAP 文档中心:https://docs.pingcap.com/zh/tidb/v6.5/upgrade-tidb-using-tiup#%E4%BD%BF%E7%94%A8-tiup-%E5%8D%87%E7%BA%A7-tidb

既然你已经选择好了要升级的目标版本,那直接打开上面的文档地址,切换到你要升级的版本号。然后根据文档一步一步操作即可。文档中写的很清楚,如果你用到了tiflash,同时当前版本低于5.3,那tiflash只能采用停机升级,无法使用在线升级了,但是由于我时5.4.3,所以我选择了在线升级,下面我来详细介绍我在根据文档中步骤操作时遇到的问题,以及解决的方案。



3.实际升级操作 3.1兼容性说明‍



主要就两点,首先你得看看新版本对操作系统的需求,例如将 v6.3.0 之前的 TiFlash 升级至 v6.3.0 及之后的版本时,需要特别注意:在 Linux AMD64 架构的硬件平台部署 TiFlash 时,CPU 必须支持 AVX2 指令集。而在 Linux ARM64 架构的硬件平台部署 TiFlash 时,CPU 必须支持 ARMv8 架构。这个可以通过以下命令来检查:在 Linux AMD64 架构的硬件平台部署 TiFlash 时,CPU 必须支持 AVX2 指令集。确保命令 cat /proc/cpuinfo | grep avx2 有输出。而在 Linux ARM64 架构的硬件平台部署 TiFlash 时,CPU 必须支持 ARMv8 架构。确保命令 cat /proc/cpuinfo | grep 'crc32' | grep 'asimd' 有输出。

然后你得看新版本的配置文件参数和原来版本的区别,哪些是已经不支持的配置文件操作,具体不同版本的兼容性说明,请查看各个版本的 Release Note。



3.2升级前准备

3.2.1数据备份‍



由于tidb目前升级不支持回滚功能,如果你的数据库很重要的话,建议先搭建一套同版本备份集群,通过dumpling+lightning和ticdc先同步到备份集群,方便在在线升级失败的话,快速切换业务到备份集群,将对生产的影响降低到最小;如果你的数据库不是那么重要,对tidb在线升级有信心的话,可以直接升级,像我就选择了第二种方案。



3.2.2工具升级



首先需要把tiup版本升级了,

tiup update --self tiup --version

然后把tiup cluster组件升级了

tiup update cluster tiup cluster --version



3.2.3更新镜像



如果tiup机器无法链接到外网,需要先把你目标版本的离线镜像包下载,并设置位你的离线镜像。如果像我一样能够连接外网的话,可以跳过这一步。



3.2.4修改配置文件



如果你原来的配置文件没有在目标版本中被废除的话,可以跳过这一步,我就是这种情况。



3.2.5检查当前集群的状态



这步比较关键了,如果你平常没有对集群非常上心,进场观察集群的各种监控的话,这步要看下你当前系统的健康状态,防止因为你当前系统的问题导致升级的失败。像我检查的时候就发现了点问题:

发现有5个region丢失了副本。

这种情况最好是通过pdctl看下丢失副本region的情况

tiup ctl:v5.4.3 pd -u http://10.10.10.14:2379 -i

执行region check miss-peer

但是检查发现对应region的副本并没有丢失,后来想起来可能是这个表做过tiflash副本还是什么,就没有进行处理。但是如果经过检查发现副本真的丢失的话,可以用operator add add-peer 29665 4命令来给region补充副本。



3.2.6检查集群是否有正在进行的ddl和backup进程



在sql窗口执行ADMIN SHOW DDL jobs和SHOW backups以及SHOW restores检查没有正在进行的进程即可。

注意,如果有正在执行的进程切记不要升级



4.升级集群 4.1升级集群‍



如果是5.3以前版本,又有tiflash的话,必须选停机升级,一般都选不停机升级。

执行命令

tiup cluster upgradev6.5.10

在这里要检查你的每个tikv节点的数据量,如果数据量比较大,建议增加参数--transfer-timeout,因为不停机升级,tikv是滚动升级的,每个tikv节点要经过所有leader驱逐→停机→升级→启动→负载leader这个步骤,如果你数据量比较大最好--transfer-timeout 3600设置的也比较大。



4.2升级pd-ctl等组件



tiup install ctl:v6.5.10



4.3验证升级效果



查看集群版本

tiup cluster display tidb-test

查看组件版本

tiup ctl:v6.5.10 pd -u http://10.10.10.14:2379 -i

查看监控

dashboard

grafana



5总结



总的来说,tidb升级还是非常简单的,只要不是原来的版本太老,一般一键在线升级完全能够满足。最后祝大家都能够升级顺利成功。



赞(8)
未经允许不得转载:工具盒子 » 【升级实践】记录一次版本升级:TiDB v5.4 到 TiDB v6.5的过程