tidb 基礎
tidb 簡介
TiDB 是 PingCAP 公司自主設計、研發的開源分布式關系型數據庫,是一款同時支持在線事務處理與在線分析處理 (Hybrid Transactional and Analytical Processing, HTAP) 的融合型分布式數據庫產品,具備水平擴容或者縮容、金融級高可用、實時 HTAP、云原生的分布式數據庫、兼容 MySQL 協議和 MySQL 生態等重要特性。目標是為用戶提供一站式 OLTP (Online Transactional Processing)、OLAP (Online Analytical Processing)、HTAP 解決方案。TiDB 適合高可用、強一致要求較高、數據規模較大等各種應用場景。
tidb 架構

tidb 組件說明
TiDB Server
SQL 層,對外暴露 MySQL 協議的連接 endpoint,負責接受客戶端的連接,執行 SQL 解析和優化,最終生成分布式執行計劃。TiDB 層本身是無狀態的,實踐中可以啟動多個 TiDB 實例,通過負載均衡組件(如 TiProxy、LVS、HAProxy、ProxySQL 或 F5)對外提供統一的接入地址,客戶端的連接可以均勻地分攤在多個 TiDB 實例上以達到負載均衡的效果。TiDB Server 本身并不存儲數據,只是解析 SQL,將實際的數據讀取請求轉發給底層的存儲節點 TiKV(或 TiFlash)。
PD
PD (Placement Driver) Server:整個 TiDB 集群的元信息管理模塊,負責存儲每個 TiKV 節點實時的數據分布情況和集群的整體拓撲結構,提供 TiDB Dashboard 管控界面,并為分布式事務分配事務 ID。PD 不僅存儲元信息,同時還會根據 TiKV 節點實時上報的數據分布狀態,下發數據調度命令給具體的 TiKV 節點,可以說是整個集群的“大腦”。此外,PD 本身也是由至少 3 個節點構成,擁有高可用的能力。建議部署奇數個 PD 節點。
TiKV Server
存儲節點,負責存儲數據,從外部看 TiKV 是一個分布式的提供事務的 Key-Value 存儲引擎。存儲數據的基本單位是 Region,每個 Region 負責存儲一個 Key Range(從 StartKey 到 EndKey 的左閉右開區間)的數據,每個 TiKV 節點會負責多個 Region。TiKV 的 API 在 KV 鍵值對層面提供對分布式事務的原生支持,默認提供了 SI (Snapshot Isolation) 的隔離級別,這也是 TiDB 在 SQL 層面支持分布式事務的核心。TiDB 的 SQL 層做完 SQL 解析后,會將 SQL 的執行計劃轉換為對 TiKV API 的實際調用。所以,數據都存儲在 TiKV 中。另外,TiKV 中的數據都會自動維護多副本(默認為三副本),天然支持高可用和自動故障轉移。
TiFlash
TiFlash 是一類特殊的存儲節點。和普通 TiKV 節點不一樣的是,在 TiFlash 內部,數據是以列式的形式進行存儲,主要的功能是為分析型的場景加速。
TiProxy
TiProxy 是 TiDB 的 L7 代理,可以平衡連接并遷移會話。

TiCDC
TiCDC 是一款 TiDB 增量數據同步工具,通過拉取上游 TiKV 的數據變更日志,TiCDC 可以將數據解析為有序的行級變更數據輸出到下游。
TiUP
TiUP 是在 TiDB v4.0 中引入的集群運維工具,提供了使用 Golang 編寫的集群管理組件 TiUP cluster。通過使用 TiUP cluster 組件,你可以輕松執行日常的數據庫運維操作,包括部署、啟動、關閉、銷毀、彈性擴縮容、升級 TiDB 集群,以及管理 TiDB 集群參數。
TiUP 還支持部署 TiDB、TiFlash、TiCDC 以及監控系統。
tidb 特性
一鍵水平擴縮容
得益于 TiDB 存儲計算分離的架構的設計,可按需對計算、存儲分別進行在線擴容或者縮容,擴容或者縮容過程中對應用運維人員透明。
金融級高可用
數據采用多副本存儲,數據副本通過 Multi-Raft 協議同步事務日志,多數派寫入成功事務才能提交,確保數據強一致性且少數副本發生故障時不影響數據的可用性。可按需配置副本地理位置、副本數量等策略,滿足不同容災級別的要求。
實時 HTAP
提供行存儲引擎 TiKV、列存儲引擎 TiFlash 兩款存儲引擎,TiFlash 通過 Multi-Raft Learner 協議實時從 TiKV 復制數據,確保行存儲引擎 TiKV 和列存儲引擎 TiFlash 之間的數據強一致。TiKV、TiFlash 可按需部署在不同的機器,解決 HTAP 資源隔離的問題。
云原生的分布式數據庫
專為云而設計的分布式數據庫,通過 TiDB Operator 可在公有云、私有云、混合云中實現部署工具化、自動化。
兼容 MySQL 協議和 MySQL 生態
兼容 MySQL 協議、MySQL 常用的功能、MySQL 生態,應用無需或者修改少量代碼即可從 MySQL 遷移到 TiDB。提供豐富的數據遷移工具幫助應用便捷完成數據遷移。
tidb 優勢
純分布式架構,擁有良好的擴展性,支持彈性的擴縮容
支持 SQL,對外暴露 MySQL 的網絡協議,并兼容大多數 MySQL 的語法,在大多數場景下可以直接替換 MySQL
默認支持高可用,在少數副本失效的情況下,數據庫本身能夠自動進行數據修復和故障轉移,對業務透明
支持 ACID 事務,對于一些有強一致需求的場景友好,例如:銀行轉賬
具有豐富的工具鏈生態,覆蓋數據遷移、同步、備份等多種場景
tidb 應用場景
金融行業場景
金融行業對數據一致性及高可靠、系統高可用、可擴展性、容災要求較高。傳統的解決方案的資源利用率低,維護成本高。TiDB 采用多副本 + Multi-Raft 協議的方式將數據調度到不同的機房、機架、機器,確保系統的 RTO <= 30s 及 RPO = 0。
海量數據及高并發的 OLTP 場景
傳統的單機數據庫無法滿足因數據爆炸性的增長對數據庫的容量要求。TiDB 是一種性價比高的解決方案,采用計算、存儲分離的架構,可對計算、存儲分別進行擴縮容,計算最大支持 512 節點,每個節點最大支持 1000 并發,集群容量最大支持 PB 級別。
實時 HTAP 場景
TiDB 適用于需要實時處理的大規模數據和高并發場景。TiDB 在 4.0 版本中引入列存儲引擎 TiFlash,結合行存儲引擎 TiKV 構建真正的 HTAP 數據庫,在增加少量存儲成本的情況下,可以在同一個系統中做聯機交易處理、實時數據分析,極大地節省企業的成本。
數據匯聚、二次加工處理的場景
TiDB 適用于將企業分散在各個系統的數據匯聚在同一個系統,并進行二次加工處理生成 T+0 或 T+1 的報表。與 Hadoop 相比,TiDB 要簡單得多,業務通過 ETL 工具或者 TiDB 的同步工具將數據同步到 TiDB,在 TiDB 中可通過 SQL 直接生成報表。
tidb 服務器配置要求
| 組件 | CPU | 內存 | 硬盤類型 | 網絡 | 實例數量(最低要求) |
|---|---|---|---|---|---|
| TiDB | 16 核+ | 48 GB+ | SSD | 萬兆網卡(2 塊最佳) | 2 |
| PD | 8 核+ | 16 GB+ | SSD | 萬兆網卡(2 塊最佳) | 3 |
| TiKV | 16 核+ | 64 GB+ | SSD | 萬兆網卡(2 塊最佳) | 3 |
| TiFlash | 48 核+ | 128 GB+ | 1 or more SSDs | 萬兆網卡(2 塊最佳) | 2 |
| TiCDC | 16 核+ | 64 GB+ | SSD | 萬兆網卡(2 塊最佳) | 2 |
| 監控 | 8 核+ | 16 GB+ | SAS | 千兆網卡 | 1 |
tidb 端口說明
| 組件 | 默認端口 | 說明 |
|---|---|---|
| TiDB | 4000 | 應用及 DBA 工具訪問通信端口 |
| TiDB | 10080 | TiDB 狀態信息上報通信端口 |
| TiKV | 20160 | TiKV 通信端口 |
| TiKV | 20180 | TiKV 狀態信息上報通信端口 |
| PD | 2379 | 提供 TiDB 和 PD 通信端口 |
| PD | 2380 | PD 集群節點間通信端口 |
| TiFlash | 9000 | TiFlash TCP 服務端口 |
| TiFlash | 3930 | TiFlash RAFT 服務和 Coprocessor 服務端口 |
| TiFlash | 20170 | TiFlash Proxy 服務端口 |
| TiFlash | 20292 | Prometheus 拉取 TiFlash Proxy metrics 端口 |
| TiFlash | 8234 | Prometheus 拉取 TiFlash metrics 端口 |
| CDC | 8300 | CDC 通信接口 |
| Monitoring | 9090 | Prometheus 服務通信端口 |
| Monitoring | 12020 | NgMonitoring 服務通信端口 |
| Node_exporter | 9100 | TiDB 集群每個節點的系統信息上報通信端口 |
| Blackbox_exporter | 9115 | Blackbox_exporter 通信端口,用于 TiDB 集群端口監控 |
| Grafana | 3000 | Web 監控服務對外服務和客戶端(瀏覽器)訪問端口 |
| Alertmanager | 9093 | 告警 web 服務端口 |
| Alertmanager | 9094 | 告警通信端口 |
tidb 磁盤空間要求
| 組件 | 磁盤空間要求 | 健康水位使用率 |
|---|---|---|
| TiDB |
|
低于 90% |
| PD | 數據盤和日志盤建議最少各預留 20 GB | 低于 90% |
| TiKV | 數據盤和日志盤建議最少各預留 100 GB | 低于 80% |
| TiFlash | 數據盤建議最少預留 100 GB,日志盤建議最少預留 30 GB | 低于 80% |
| TiUP |
|
不涉及 |
| Ngmonitoring |
|
不涉及 |
參考文檔
https://docs.pingcap.com/zh/tidb/stable/overview/

浙公網安備 33010602011771號