天天看點

猿創征文|TiDB單機部署最佳實踐

文章目錄

  • ​​前言​​
  • ​​📢 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 适合高可用、強一緻要求較高、資料規模較大等各種應用場景。
猿創征文|TiDB單機部署最佳實踐

📢 2.TiDB 架構

與傳統的單機資料庫相比,TiDB 具有以下優勢:

1)純分布式架構,擁有良好的擴充性,支援彈性的擴縮容

2)支援 SQL,對外暴露 MySQL 的網絡協定,并相容大多數 MySQL 的文法,在大多數場景下可以直接替換 MySQL

3)預設支援高可用,在少數副本失效的情況下,資料庫本身能夠自動進行資料修複和故障轉移,對業務透明

4)支援 ACID 事務,對于一些有強一緻需求的場景友好,例如:銀行轉賬

5)具有豐富的工具鍊生态,覆寫資料遷移、同步、備份等多種場景

猿創征文|TiDB單機部署最佳實踐

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​​

猿創征文|TiDB單機部署最佳實踐

✨ 3.2 建立使用者

#建立使用者
[root@jeames ~]# adduser tidb
#設定密碼
[root@jeames ~]# passwd tidb      
猿創征文|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      
猿創征文|TiDB單機部署最佳實踐

✨ 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安裝所需的元件已經安裝完成

猿創征文|TiDB單機部署最佳實踐
猿創征文|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      
猿創征文|TiDB單機部署最佳實踐

✨ 3.7 部署叢集

部署指令

[tidb@jeames ~]$ tiup cluster deploy tidb-test v6.3.0 ./topology.yaml --user tidb -p

Cluster ​​

​tidb-test​

​​ deployed successfully, you can start it with command: ​

​tiup cluster start tidb-test --init​

猿創征文|TiDB單機部署最佳實踐
參數說明:

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&=%'.      
猿創征文|TiDB單機部署最佳實踐

檢查叢集狀态,指令:tiup cluster display tidb-test

[tidb@jeames ~]$ tiup cluster display tidb-test

猿創征文|TiDB單機部署最佳實踐

以上輸出的結果中,可以看到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

猿創征文|TiDB單機部署最佳實踐
猿創征文|TiDB單機部署最佳實踐

📢 5. tiup cluster 指令

叢集部署成功後,可以通過 tiup cluster list 指令在叢集清單中檢視該叢集

[tidb@jeames ~]$ tiup cluster list

猿創征文|TiDB單機部署最佳實踐

啟動叢集

叢集部署成功後,可以執行以下指令啟動該叢集

[tidb@jeames ~]$ tiup cluster start tidb-test

檢查叢集狀态

[tidb@jeames ~]$ tiup cluster display tidb-test