TiDB數(shù)據(jù)庫高可用概述
計劃外系統(tǒng)不可用原因

計劃內(nèi)系統(tǒng)不可用原因

TiDB 系統(tǒng)不可用解決方案

高可用的評判指標
用可提供服務(wù)的時間來評判
不可用時間=從故障發(fā)生到故障恢復(fù)所用時間

定義恢復(fù)時間目標(Recovery Time Objective, RTO)
指所能容忍的業(yè)務(wù)系統(tǒng)停止服務(wù)的最長時間,也就是災(zāi)難發(fā)生到業(yè)務(wù)系統(tǒng)恢復(fù)服務(wù)功能所需要的最短時間

定義恢復(fù)點目標(Recovery Point Objective, RPO)
指業(yè)務(wù)系統(tǒng)所能容忍的數(shù)據(jù)丟失量,用時間表示,是指災(zāi)難發(fā)生到數(shù)據(jù)上一次備份的時間。

Raft 與 Multi Raft

- Leader選舉:
- 通過投票產(chǎn)生一個節(jié)點成為 Leader
- 檢查宕機/網(wǎng)絡(luò)隔離,選舉新 Leader
- Log 復(fù)制︰
- Leader 負責(zé)接收客戶端請求,在本地追加日志
- Leader 將日志復(fù)制給其他節(jié)點(并覆蓋不一致的日志)
- 約束∶
- Leader 由超過一半節(jié)點投票選出
- Log 需復(fù)制給一半以上節(jié)點
- 持有最新日志的節(jié)點才能被選為 Leader
TiDB Server 的高可用特性

- 無狀態(tài)∶
- 數(shù)據(jù)由 TiKV 存儲
- TiDB 之間不通信(通過 TiKV 和 PD )
- 隨時增加或刪除
- 本身不支持 Failover,需要業(yè)務(wù)配合
TiKV 的高可用特性
- 故障恢復(fù)
- 少數(shù) Follower 故障或隔離不影響 Leader 服務(wù)
- Leader 故障或者隔離后,F(xiàn)ollower 心跳超時會自動開始選舉流程
- 只要有一半以上節(jié)點存活,一定能選出新的 Leader,從而恢復(fù)服務(wù)
- 數(shù)據(jù)一致性
- 寫入數(shù)據(jù)時,Leader 會保證日志被復(fù)制到大多數(shù)節(jié)點
- 當一部分節(jié)點故障或隔離后,只要有一半以上節(jié)點存活,其中至少有一個節(jié)點包含最新的日志
- Raft 協(xié)議總是選擇包含最新日志的節(jié)點當作 Leader
- 綜上所述,符合約束,則不會發(fā)生數(shù)據(jù)丟失
PD 的高可用特性

- Leader 節(jié)點提供所有服務(wù),F(xiàn)ollower 為 standby
- 依賴于內(nèi)嵌 etcd 實現(xiàn) leader 選舉
- 一致性的要求
- 分配嚴格單調(diào)遞增的 timestamp
- 同一時刻只能有一個 leader
CAP 與 TiDB

TiDB 數(shù)據(jù)庫的高可用特性
- TiDB 數(shù)據(jù)庫提供強—致性。
- 如不能保證強一致性,則拒絕服務(wù)。
- 在 PD 和 TiKV 至少存活半數(shù)以上副本情況下,容忍一定限度內(nèi)的節(jié)點宕機或隔離。
- PD 和 TiKV 可以自動故障轉(zhuǎn)移至存活的大多數(shù)副本處。
- TiDB Server 不保證所有節(jié)點同時提供服務(wù)。
- 故障解決會伴隨有服務(wù)的降級。
TiDB 數(shù)據(jù)庫常用高可用架構(gòu)
高可用架構(gòu)設(shè)計中考慮的問題
- 網(wǎng)絡(luò)延遲
- Raft 協(xié)議要求寫入復(fù)制到最少2個節(jié)點。(三副本)
- Leader 有可能與發(fā)起讀取的 TiDB Server 不在一個區(qū)域。
- 讀取要訪問 PD 獲取一次TSO,事務(wù)要獲取2次。
- Raft 協(xié)議本身
- Raft 協(xié)議要求寫入復(fù)制到最少2個節(jié)點。(三副本)
- 副本數(shù)最好為奇數(shù)。
- 副本的分布最好與 TiKV 節(jié)點的分布相結(jié)合。
- 其他
- 多活要求。
同城三中心架構(gòu)

- 特點∶
- 數(shù)據(jù)副本分布在 3 個數(shù)據(jù)中心或可用區(qū)
- 同城網(wǎng)絡(luò)延遲較小
- 多活特性
- RTO 較小,RPO 為 0
- 問題:
- 寫入與讀取延遲高

- 寫入與讀取延遲高
同城兩中心架構(gòu)



兩地三中心架構(gòu)

- 特點∶
- 可以保證任一數(shù)據(jù)中心失效后,服務(wù)可用不發(fā)生數(shù)據(jù)丟失
- 問題:
- 當兩中心失效后,異地災(zāi)備不存在大多數(shù)副本,服務(wù)不可用
- 異地災(zāi)備為異步復(fù)制,無法保證一致性恢復(fù)
- 網(wǎng)絡(luò)專線成本高
異步復(fù)制
- 使用 TiDB binlog 或者 TiCDC 組件進行異步復(fù)制
- 會丟失數(shù)據(jù)(RPO不為0)
- 有損恢復(fù)后,保證一致性
- 主集群或者從集群內(nèi)部具有高可用功能

集群升級方案

「喜歡這篇文章,您的關(guān)注和贊賞是給作者最好的鼓勵」
關(guān)注作者
【版權(quán)聲明】本文為墨天輪用戶原創(chuàng)內(nèi)容,轉(zhuǎn)載時必須標注文章的來源(墨天輪),文章鏈接,文章作者等基本信息,否則作者和墨天輪有權(quán)追究責(zé)任。如果您發(fā)現(xiàn)墨天輪中有涉嫌抄襲或者侵權(quán)的內(nèi)容,歡迎發(fā)送郵件至:contact@modb.pro進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,墨天輪將立刻刪除相關(guān)內(nèi)容。




