文章目錄
- 前言
- 📢 1.TiDB 簡介
- 📢 2.TiDB 架構
- 📢 3.TiDB 部署
- ✨ 3.1 安裝包下載下傳
- ✨ 3.2 建立使用者
- ✨ 3.3 配置免密碼登入
- ✨ 3.4 建立tidb使用者ssh key
- ✨ 3.5 解壓安裝包安裝
- ✨ 3.6 配置初始化參數檔案
- ✨ 3.7 部署叢集
- ✨ 3.8 啟動叢集
- 📢 4.連接配接測試
- 📢 5. tiup cluster 指令
前言
最近客戶項目要求,基于Centos7的環境部署TiDB 6.3 單機環境,詳細的過程分享給大家
📢 1.TiDB 簡介
TiDB 是 PingCAP 公司自主設計、研發的開源分布式關系型資料庫,是一款同時支援線上事務處理與線上分析處理 (Hybrid Transactional and Analytical Processing, HTAP) 的融合型分布式資料庫産品,具備水準擴容或者縮容、金融級高可用、實時 HTAP、雲原生的分布式資料庫、相容 MySQL 5.7 協定和 MySQL 生态等重要特性。目标是為使用者提供一站式 OLTP (Online Transactional Processing)、OLAP (Online Analytical Processing)、HTAP 解決方案。TiDB 适合高可用、強一緻要求較高、資料規模較大等各種應用場景。
📢 2.TiDB 架構
與傳統的單機資料庫相比,TiDB 具有以下優勢:
1)純分布式架構,擁有良好的擴充性,支援彈性的擴縮容
2)支援 SQL,對外暴露 MySQL 的網絡協定,并相容大多數 MySQL 的文法,在大多數場景下可以直接替換 MySQL
3)預設支援高可用,在少數副本失效的情況下,資料庫本身能夠自動進行資料修複和故障轉移,對業務透明
4)支援 ACID 事務,對于一些有強一緻需求的場景友好,例如:銀行轉賬
5)具有豐富的工具鍊生态,覆寫資料遷移、同步、備份等多種場景
TiDB Server:SQL 層,對外暴露 MySQL 協定的連接配接 endpoint,負責接受用戶端的連接配接,執行 SQL 解析和優化,最終生成分布式執行計劃。TiDB 層本身是無狀态的,實踐中可以啟動多個 TiDB 執行個體,通過負載均衡元件(如 LVS、HAProxy 或 F5)對外提供統一的接入位址,用戶端的連接配接可以均勻地分攤在多個 TiDB 執行個體上以達到負載均衡的效果。TiDB Server 本身并不存儲資料,隻是解析 SQL,将實際的資料讀取請求轉發給底層的存儲節點 TiKV(或 TiFlash)。
PD (Placement Driver) Server:整個 TiDB 叢集的元資訊管理子產品,負責存儲每個 TiKV 節點實時的資料分布情況和叢集的整體拓撲結構,提供 TiDB Dashboard 管控界面,并為分布式事務配置設定事務 ID。PD 不僅存儲元資訊,同時還會根據 TiKV 節點實時上報的資料分布狀态,下發資料排程指令給具體的 TiKV 節點,可以說是整個叢集的“大腦”。此外,PD 本身也是由至少 3 個節點構成,擁有高可用的能力。建議部署奇數個 PD 節點。
存儲節點
1)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 中的資料都會自動維護多副本(預設為三副本),天然支援高可用和自動故障轉移。
2)TiFlash:TiFlash 是一類特殊的存儲節點。和普通 TiKV 節點不一樣的是,在 TiFlash 内部,資料是以列式的形式進行存儲,主要的功能是為分析型的場景加速。
📢 3.TiDB 部署
✨ 3.1 安裝包下載下傳
幫助文檔:https://docs.pingcap.com/zh/ 社群版位址:https://cn.pingcap.com/product-community
✨ 3.2 建立使用者
#建立使用者
[root@jeames ~]# adduser tidb
#設定密碼
[root@jeames ~]# passwd tidb
✨ 3.3 配置免密碼登入
編輯/etc/sudoers檔案,文末加入:
tidb ALL=(ALL) NOPASSWD:ALL
如果想要控制某個使用者(或某個組使用者)隻能執行root權限中的一部分指令,
或者允許某些使用者使用sudo時不需要輸入密碼,一般修改/etc/sudoers檔案
cat >> /etc/sudoers << "EOF"
tidb ALL=(ALL) NOPASSWD:ALL
EOF
✨ 3.4 建立tidb使用者ssh key
切換使用者
[root@jeames ~]# su - tidb
執行指令,一直按Enter鍵就行
[tidb@jeames ~]$ ssh-keygen -t rsa
✨ 3.5 解壓安裝包安裝
1.切換到tidb使用者,建立以下兩個目錄
[tidb@jeames ~]$ mkdir tidb-deploy
[tidb@jeames ~]$ mkdir tidb-data
2.解壓Tidb server安裝包
[tidb@jeames ~]$ chmod +x tidb-community*
[tidb@jeames ~]$ tar -zxvf tidb-community-server-v6.3.0-linux-amd64.tar.gz
3.執行instal檔案
[tidb@jeames ~]$ sh /home/tidb/tidb-community-server-v6.3.0-linux-amd64/local_install.sh
根據完成後提示中的第一點,執行如下指令,具體指令根據提示中的來:
1. source /home/tidb/.bash_profile
2. Have a try: tiup playground
至此,TiDB安裝所需的元件已經安裝完成
✨ 3.6 配置初始化參數檔案
1)叢集初始化配置檔案需要手動編寫,在tidb使用者根目錄建立 YAML 格式配置檔案,
下面是我的配置檔案 topology.yaml
2)第二種方法;
執行如下指令,生成叢集初始化配置檔案:
tiup cluster template > topology.yaml
cat >> /home/tidb/topology.yaml << "EOF"
global:
user: "tidb"
ssh_port: 22
deploy_dir: "/home/tidb/tidb-deploy"
data_dir: "/home/tidb/tidb-data"
server_configs: {}
pd_servers:
- host: 192.168.1.54
tidb_servers:
- host: 192.168.1.54
tikv_servers:
- host: 192.168.1.54
monitoring_servers:
- host: 192.168.1.54
grafana_servers:
- host: 192.168.1.54
alertmanager_servers:
- host: 192.168.1.54
EOF
--以下為生産叢集部署指令
global:
user: "tidb"
ssh_port: 22
deploy_dir: "/tidb-deploy"
data_dir: "/tidb-data"
server_configs: {}
pd_servers:
- host: 10.0.1.4
- host: 10.0.1.5
- host: 10.0.1.6
tidb_servers:
- host: 10.0.1.7
- host: 10.0.1.8
- host: 10.0.1.9
tikv_servers:
- host: 10.0.1.1
- host: 10.0.1.2
- host: 10.0.1.3
monitoring_servers:
- host: 10.0.1.4
grafana_servers:
- host: 10.0.1.4
alertmanager_servers:
- host: 10.0.1.4
✨ 3.7 部署叢集
部署指令
[tidb@jeames ~]$ tiup cluster deploy tidb-test v6.3.0 ./topology.yaml --user tidb -p
Cluster
deployed successfully, you can start it with command:
tidb-test
tiup cluster start tidb-test --init
參數說明:
1) 通過 TiUP cluster 部署的叢集名稱為 tidb-test
2)部署版本為 v6.3.0,其他版本可以執行 tiup list tidb 擷取
[tidb@jeames ~]$ tiup list tidb
Available versions for tidb:
Version Installed Release Platforms
------- --------- ------- ---------
v6.3.0 YES 2022-09-30T11:00:18+08:00 linux/amd64
3)初始化配置檔案為 topology.yaml
4)--user tidb:通過 tidb 使用者登入到目标主機完成叢集部署,該使用者需要有 ssh 到目标機器的權限,并且在目标機器有 sudo 權限。也可以用其他有 ssh 和 sudo 權限的使用者完成部署。
5) [-i] 及 [-p]:非必選項,如果已經配置免密登陸目标機,則不需填寫。否則選擇其一即可,[-i] 為可登入到部署機 root 使用者(或 --user 指定的其他使用者)的私鑰,也可使用 [-p] 互動式輸入該使用者的密碼
如無意外,會出現successfully的提示資訊
指令 tiup cluster deploy 用于部署一個全新的叢集。
Enabling component pd
Enabling instance 192.168.1.54:2379
Enable instance 192.168.1.54:2379 success
Enabling component tikv
Enabling instance 192.168.1.54:20160
Enable instance 192.168.1.54:20160 success
Enabling component tidb
Enabling instance 192.168.1.54:4000
Enable instance 192.168.1.54:4000 success
Enabling component prometheus
Enabling instance 192.168.1.54:9090
Enable instance 192.168.1.54:9090 success
Enabling component grafana
Enabling instance 192.168.1.54:3000
Enable instance 192.168.1.54:3000 success
Enabling component alertmanager
Enabling instance 192.168.1.54:9093
Enable instance 192.168.1.54:9093 success
Enabling component node_exporter
Enabling instance 192.168.1.54
Enable 192.168.1.54 success
Enabling component blackbox_exporter
Enabling instance 192.168.1.54
Enable 192.168.1.54 success
Cluster `tidb-test` deployed successfully, you can start it with command: `tiup cluster start tidb-test --init`
✨ 3.8 啟動叢集
[tidb@jeames ~]$ tiup cluster start tidb-test --init
Started cluster `tidb-test` successfully
The root password of TiDB database has been changed.
The new password is: 'Z2h^q6tBV7058bn&=%'.
檢查叢集狀态,指令:tiup cluster display tidb-test
[tidb@jeames ~]$ tiup cluster display tidb-test
以上輸出的結果中,可以看到tidb的端口号是4000,pd運維端口是2379。我們通過Navicat這種工具連接配接資料庫是使用4000端口,預設密碼上面已經提示:
The new password is: ‘Z2h^q6tBV7058bn&=%’
📢 4.連接配接測試
幾個關鍵元件資訊:
1)Pd:中繼資料及控制排程元件
2)Tikv:存儲元件
3)Tidb:資料庫執行個體元件
4)Tiflash:閃存元件
Tidb雖然和mysql類似,但是它厲害在分布式,如果要使用mysql,資料庫變大後,要思考慮分庫分表、使用mycat等資料路由工具,Tidb設計從底層一開始分布式,類似hdfs的存儲架構,将分布式做成一種原生的架構。
因為TiDB核心是MySQL,是以直接用Navicat工具選擇連接配接MySQL就行:
使用Navicat登入進去後,可以看到目前最新版本的TiDB的MySQL核心是:5.7.25
📢 5. tiup cluster 指令
叢集部署成功後,可以通過 tiup cluster list 指令在叢集清單中檢視該叢集
[tidb@jeames ~]$ tiup cluster list
啟動叢集
叢集部署成功後,可以執行以下指令啟動該叢集
[tidb@jeames ~]$ tiup cluster start tidb-test
檢查叢集狀态
[tidb@jeames ~]$ tiup cluster display tidb-test