TiDB-unsafe recover(三台tikv宕机两台)
生活随笔
收集整理的這篇文章主要介紹了
TiDB-unsafe recover(三台tikv宕机两台)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、背景
| tikv | 3 |
| 副本 | 3 |
1.故障:
因為某些原因,兩臺tikv不可連接,出現region不能訪問的故障
2.幾條理論:
2.1.多副本原則
存在一半以上的副本則集群訪問不受影響(如n副本,存活(n+1)/ 2)
2.2.數據完整性
當副本數量等于tikv的數量的時候,每一個tikv都有全部的region,只不過不是每個region都是leader
2.3.集群不可訪問
當副本存活數量小于(n+1)/ 2的時候,集群不可訪問,只能使用unsafe recover來恢復
二、故障處理
1.查看不可連接的store
# 記錄下 "state_name": "Disconnected"的store id(我的是1,7) tiup ctl:v4.0.13 pd -u http://pd_ip:pd_port store2.關閉pd調度,避免恢復過程中產生異常
# 進入交互模式 tiup ctl:v4.0.13 pd -u http://pd_ip:pd_port -i # 分別執行以下命令 config set region-schedule-limit 0 config set replica-schedule-limit 0 config set leader-schedule-limit 0 config set merge-schedule-limit 0 # 查看調度是否關閉 operator show3.停止tikv進程(防止執行unsafe-recover remove-fail-stores出現文件鎖而失敗)
tiup cluster stop cluster_name -R tikv4.進行unsafe-recover remove-fail-stores
4.1 將tikvctl挪移到所有狀態正常kv機器中
scp /data/tidb/.tiup/components/ctl/v4.0.13/tikv-ctl tidb@192.168.1.1:/home/tidb scp /data/tidb/.tiup/components/ctl/v4.0.13/tikv-ctl tidb@192.168.1.2:/home/tidb scp /data/tidb/.tiup/components/ctl/v4.0.13/tikv-ctl tidb@192.168.1.3:/home/tidb4.2 執行tikvctl命令
# 4.0.x 版本命令,-s是指store id,--all-regions是指所有region,-r 可以用來指定的region來代替--all-regions # unsafe-recover remove-fail-stores(故障機器從指定 Region 的 peer 列表中移除)./tikv-ctl --db /data/tikv/tikv-data28016/db unsafe-recover remove-fail-stores -s 1,7 --all-regions# 5.x 版本命令./tikv-ctl --data-dir /data/tikv/tikv-data28016 unsafe-recover remove-fail-stores -s 1,7 --all-regions5.恢復pd調度
# 進入交互模式 tiup ctl:v4.0.13 pd -u http://pd_ip:pd_port -i # 分別執行以下命令(值為關閉之前的值就可以) config set region-schedule-limit 2048 config set replica-schedule-limit 64 config set leader-schedule-limit 4 config set merge-schedule-limit 86.啟動tikv集群
tiup cluster start cluster_name -R tikv三、一些不成功的嘗試方法
1.主要原因
看日志的原因是連接到幾個已經down 掉的kv
2.解決
2.1嘗試 --force縮容依舊報錯
tiup cluster scale-in cluster_name -N tikv_ip:tikv_port --force2.2 嘗試store delete
# 進入交換模式 tiup ctl:v4.0.13 pd -u http://pd_ip:pd_port -i # 查看當前都有哪些store store # 刪除對應id的store store delete 1 # 沒有刪除掉,這是因為狀態不是Tombstone的狀態無法進行delete2.3 查看宕機store上的region
# 進入交換模式 tiup ctl:v4.0.13 pd -u http://pd_ip:pd_port -i # 查看region region store 1 # 這里可以看到pd的記錄里,還有好多region再這個宕機的store上,那么這樣的話就回向對應的kv發布消息,但kv收不到,所以就會有region不可用的報錯綜上: 只有把宕機store上的region清除掉,才能讓集群正常啟動,所以這里就用到了unsafe-recover方法
感謝大佬的文章:
https://mp.weixin.qq.com/s/u5MBSIydf_ZQ1jxCJn4O2A
https://tidb.io/blog/9163546d
總結
以上是生活随笔為你收集整理的TiDB-unsafe recover(三台tikv宕机两台)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JUNIPER的认证分类
- 下一篇: 基于Spring boot的个人理财系统