TiDB 升级至高版本提示'mysql.tidb_runaway_watch' doesn't exist 问题处理

作者: asd80703406 原文来源: https://tidb.net/blog/90394c97

背景

近期发现很多人从低版本升级至TiDB v7 或者v8版本,均遇到了tidb-server启动失败,提示报错如下:

"get runaway watch record failed"\] \[error="\[schema:1146\]Table 'mysql.tidb_runaway_watch' doesn't exist"

"try to get new runaway watch"\] \[error="\[schema:1146\]Table 'mysql.tidb_runaway_watch' doesn't exist"

社区解决方案

社区很多人的处理方式归类为以下几种方式:

方法1、多次启停tidb-server进程,自动就成功了。 这个也是我自己偶然间重试后,发现的一个方法,确实可以,但是需要多次stop tidb-4000 ; start tidb-4000;

方法2、提前创建升级需要的表,比如 mysql.tidb_runaway_watch ,参考链接: https://asktug.com/t/topic/1018496/7 ,参考代码 bootstrap.go 。 亲测,依然无法一次成功。

本人亲测升级方案

接下来分享我多次重试后的升级方案

本人环境:TiDB v5.3.4 升级至 v7.5.1, 3PD + 3 TIKV + 3 tidb

升级步骤

1、停止集群

markdown 复制代码
tiup cluster stop  $cluster_name -y

2、升级tiup组件

markdown 复制代码
cd tidb-community-server-v7.5.1-linux-amd
cp -rp keys ~/.tiup/
tiup mirror merge ../tidb-community-toolkit-v7.5.1-linux-amd

3、升级cluster组件

markdown 复制代码
tiup install cluster

4、升级集群(我这里是离线升级法)

markdown 复制代码
tiup cluster upgrade $cluster_name v7.5.1 --offline -y --wait-timeout 3600

核心升级步骤(分组件启动)

要想升级不报错,启动升级后集群需要分组件启动

5、启动集群PD节点

markdown 复制代码
tiup cluster start $cluster_name -R pd

6、启动集群TIKV节点

markdown 复制代码
tiup cluster start $cluster_name -R tikv

7、启动节点某一台tidb-server进程( 重点来了 )

markdown 复制代码
tiup cluster start $cluster_name -N IP:PORT

只启动一台tidb-server,这样升级涉及的bootstrap.go等相关代码,就只会有一台tidb-server执行。 亲测不会有报错的情况

8、启动其他服务

markdown 复制代码
tiup cluster start $cluster_name

官网标准步骤升级失败的原因猜测

1、低版本升级至高版本,多个tidb-server进程存在mdl锁争用,也存在锁冲突的情况

2、官方BUG,没有深挖

升级需要注意事项

1、版本间 cluster yaml文件可能存在配置不兼容的情况,升级前需要提前确认配置文件兼容性

2、硬件不兼容。 比如 高版本tiflash组件需要CPU支持avx2指令集,升级前需确认,确认命令:lscpu | grep avx2

3、其他原因请参考官网手册

吐槽一下:

专栏审核好复杂。好几天没有审核通过,感觉是有BUG。第一次提交很快审核通过,后边就delay了好几。

相关推荐
fen_fen2 小时前
Oracle建表语句示例
数据库·oracle
砚边数影4 小时前
数据可视化入门:Matplotlib 基础语法与折线图绘制
数据库·信息可视化·matplotlib·数据可视化·kingbase·数据库平替用金仓·金仓数据库
orange_tt4 小时前
Djiango配置Celery
数据库·sqlite
云小逸5 小时前
【nmap源码学习】 Nmap网络扫描工具深度解析:从基础参数到核心扫描逻辑
网络·数据库·学习
·云扬·5 小时前
MySQL Binlog落盘机制深度解析:性能与安全性的平衡艺术
android·mysql·adb
肉包_5115 小时前
两个数据库互锁,用全局变量互锁会偶发软件卡死
开发语言·数据库·c++
霖霖总总5 小时前
[小技巧64]深入解析 MySQL InnoDB 的 Checkpoint 机制:原理、类型与调优
数据库·mysql
此刻你6 小时前
常用的 SQL 语句
数据库·sql·oracle
それども7 小时前
分库分表的事务问题 - 怎么实现事务
java·数据库·mysql
·云扬·7 小时前
MySQL Binlog 配置指南与核心作用解析
数据库·mysql·adb