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了好几。

相关推荐
JavaGuide1 小时前
公司来的新人用字符串存储日期,被组长怒怼了...
后端·mysql
怒放吧德德4 小时前
MySQL篇:MySQL主从集群同步延迟问题
后端·mysql·面试
数据智能老司机5 小时前
CockroachDB权威指南——CockroachDB SQL
数据库·分布式·架构
Eip不易也不e5 小时前
教程之同时安装两个版本的 mysql
mysql
数据智能老司机6 小时前
CockroachDB权威指南——开始使用
数据库·分布式·架构
松果猿6 小时前
空间数据库学习(二)—— PostgreSQL数据库的备份转储和导入恢复
数据库
Kagol6 小时前
macOS 和 Windows 操作系统下如何安装和启动 MySQL / Redis 数据库
redis·后端·mysql
无名之逆6 小时前
Rust 开发提效神器:lombok-macros 宏库
服务器·开发语言·前端·数据库·后端·python·rust
s9123601016 小时前
rust 同时处理多个异步任务
java·数据库·rust
数据智能老司机6 小时前
CockroachDB权威指南——CockroachDB 架构
数据库·分布式·架构