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

相关推荐
胚芽鞘6815 分钟前
关于java项目中maven的理解
java·数据库·maven
nbsaas-boot1 小时前
Java 正则表达式白皮书:语法详解、工程实践与常用表达式库
开发语言·python·mysql
sun0077003 小时前
mysql索引底层原理
数据库·mysql
程序员秘密基地4 小时前
基于html,css,vue,vscode,idea,,java,springboot,mysql数据库,在线旅游,景点管理系统
java·spring boot·mysql·spring·web3
workflower6 小时前
MDSE和敏捷开发相互矛盾之处:方法论本质的冲突
数据库·软件工程·敏捷流程·极限编程
叁沐6 小时前
MySQL 11 怎么给字符串字段加索引?
mysql
Tony小周6 小时前
实现一个点击输入框可以弹出的数字软键盘控件 qt 5.12
开发语言·数据库·qt
lifallen7 小时前
Paimon 原子提交实现
java·大数据·数据结构·数据库·后端·算法
TDengine (老段)7 小时前
TDengine 数据库建模最佳实践
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
Elastic 中国社区官方博客7 小时前
Elasticsearch 字符串包含子字符串:高级查询技巧
大数据·数据库·elasticsearch·搜索引擎·全文检索·lucene