莘縣網(wǎng)站建設最有效的線上推廣方式
作者: asd80703406 原文來源: https://tidb.net/blog/90394c97
背景
近期發(fā)現(xiàn)很多人從低版本升級至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"]
社區(qū)解決方案
社區(qū)很多人的處理方式歸類為以下幾種方式:
方法1、多次啟停tidb-server進程,自動就成功了。 這個也是我自己偶然間重試后,發(fā)現(xiàn)的一個方法,確實可以,但是需要多次stop tidb-4000 ; start tidb-4000;
方法2、提前創(chuàng)建升級需要的表,比如 mysql.tidb_runaway_watch ,參考鏈接: https://asktug.com/t/topic/1018496/7 ,參考代碼 bootstrap.go 。 親測,依然無法一次成功。
本人親測升級方案
接下來分享我多次重試后的升級方案
本人環(huán)境:TiDB v5.3.4 升級至 v7.5.1, 3PD + 3 TIKV + 3 tidb
升級步驟
1、停止集群
tiup cluster stop $cluster_name -y
2、升級tiup組件
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組件
tiup install cluster
4、升級集群(我這里是離線升級法)
tiup cluster upgrade $cluster_name v7.5.1 --offline -y --wait-timeout 3600
核心升級步驟(分組件啟動)
要想升級不報錯,啟動升級后集群需要分組件啟動
5、啟動集群PD節(jié)點
tiup cluster start $cluster_name -R pd
6、啟動集群TIKV節(jié)點
tiup cluster start $cluster_name -R tikv
7、啟動節(jié)點某一臺tidb-server進程( 重點來了 )
tiup cluster start $cluster_name -N IP:PORT
只啟動一臺tidb-server,這樣升級涉及的bootstrap.go等相關代碼,就只會有一臺tidb-server執(zhí)行。 親測不會有報錯的情況 。
8、啟動其他服務
tiup cluster start $cluster_name
官網(wǎng)標準步驟升級失敗的原因猜測
1、低版本升級至高版本,多個tidb-server進程存在mdl鎖爭用,也存在鎖沖突的情況
2、官方BUG,沒有深挖
升級需要注意事項
1、版本間 cluster yaml文件可能存在配置不兼容的情況,升級前需要提前確認配置文件兼容性
2、硬件不兼容。 比如 高版本tiflash組件需要CPU支持avx2指令集,升級前需確認,確認命令:lscpu | grep avx2
3、其他原因請參考官網(wǎng)手冊
吐槽一下:
專欄審核好復雜。好幾天沒有審核通過,感覺是有BUG。第一次提交很快審核通過,后邊就delay了好幾。