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