TiDB整體架構以及在Mac系統上快速安裝部署TiDB
文章目錄
整體架構和三個核心組件
TiDB集羣主要包括三個核心組件:
-
TiKV Server
負責存儲數據。是一個分佈式的對外提供事務的Key-Value存儲引擎。
-
存儲事務的基本單位是Region,每個region負責存儲一個Key Range: [StartKey, EndKey) 的數據,每個 TiKV 節點會負責多個 Region。
-
TiKV 使用Raft 協議做複製,保持數據的一致性和容災。副本以 Region 爲單位進行管理,不同節點上的多個 Region 構成一個 Raft Group,互爲副本。數據在多個 TiKV 之間的負載均衡由 PD 調度,調度的基本單位也是Region。
-
-
TiDB Server
負責接收 SQL 請求,處理 SQL 相關的邏輯,並通過 PD 找到存儲計算所需數據的 TiKV 地址,與 TiKV 交 互獲取數據,最終返回結果。
- TiDB Server 是無狀態的,其本身並不存儲數據,只負責計算,可以無限水平擴 展;
- 可以通過負載均衡組件(如 LVS、HAProxy 或 F5)對外提供統一的接入地址。
-
PD Server
-
Placement Driver (簡稱 PD) 是整個集羣的管理模塊,其主要工作有三個:
- 一是存儲集羣的元信息(某個 Key 存儲 在哪個 TiKV 節點);
- 二是對 TiKV 集羣進行調度和負載均衡(如數據的遷移、Raft group leader 的遷移等);
- 三是分配全局唯一且遞增的事務 ID。
-
PD 通過 Raft 協議保證數據的安全性。Raft 的 leader server 負責處理所有操作,其餘的 PD server 僅用於保證高可 用。建議部署奇數個 PD 節點。
-
兩大核心特性
-
無限水平擴展
包含兩方面:
-
計算能力
TiDB Server 負責處理 SQL 請求,隨着業務的增長,可以簡單的添加 TiDB Server 節點,提高整體的處理能力,提供更高的吞吐。
-
存儲能力
TiKV 負責存儲數據,隨着數據量的增長,可以部署更多的 TiKV Server 節點解決數據 Scale 的問題。PD 會在 TiKV 節點 之間以 Region 爲單位做調度,將部分數據遷移到新加的節點上。
-> 部署策略:早期可以部署少量的服務實例,隨着業務增長,按需添加TiKV或TiDB實例。
-
-
高可用
指TiDB/TiKV/PD 這三個組件都能容忍部分實例失效,不影響整個集羣的可用性。
部署
TiDB 可以部署在本地和雲平臺上,支持公有云、私有云和混合雲。常見的TiDB集羣部署方式:
-
使用Ansible部署:如果用於生產環境,須使用Ansible部署TiDB集羣。
-
使用Ansible離線部署:如果部署環境無法訪問網絡,可使用Ansible進行離線部署。
-
使用DockerCompose部署:如果你只是想測試TiDB、體驗TiDB的特性,或者用於開發環境,可以使用
Docker Compose 在本地快速部署 TiDB 集羣。該部署方式不適用於生產環境。
-
使用Docker部署:你可以使用Docker部署TiDB集羣,但該部署方式不適用於生產環境。
快速上手_使用DockerCompose部署
在Mac系統上快速安裝TiDB
可以根據官網教程安裝TiDB,有兩種可選環境:Production(生產環境)和 Development(開發環境),這裏我們選擇開發環境。
Homebrew install instructions (Recommended):
-
Install Homebrew
-
Install TiDB
brew tap pingcap/brew
brew install tidb-server
-
Start TiDB
tidb-server
-
If you would like to connect a MySQL client to TiDB
brew install mysql-client
mysql -h 127.0.0.1 -P4000 -uroot
使用 Docker Compose 快速構建 TiDB 集羣
新手在學習階段想要體驗TiDB特性,快速構建一個開發環境,可以在單機上通過 Docker Compose 快速一鍵部署一套 TiDB 測試集羣。Docker Compose 可以通過一個YAML 文件定義多個容器的應用服務,然後一鍵啓動或停止。
準備環境
• Docker(17.06.0及以上版本)
• DockerCompose
• Git
快速部署
-
下載tidb-docker-compose
git clone https://github.com/pingcap/tidb-docker-compose.git
-
創建並啓動集羣
cd tidb-docker-compose && docker-compose pull # Get the latest Docker images docker-compose up -d
-
訪問集羣
mysql -h 127.0.0.1 -P 4000 -u root
訪問集羣監控頁面:
訪問集羣 Grafana 監控頁面:http://localhost:3000 ,點擊左下角的登陸圖標:
登陸,默認用戶名和密碼均爲 admin。
即可查看整個集羣的狀態:
接下來按照自己需求查看整個集羣概況(Overview),或者查看各個組件的狀態即可。