【必須收藏】別再亂找TiDB 叢集部署教程了,這篇保姆級教程來幫你!!| 博學谷狂野架構師

語言: CN / TW / HK

TiDB 基礎使用

Database of Databases - TiDB

TiDB dashboard使用

TiDB Dashboard 是 TiDB 自 4.0 版本起提供的圖形化介面,可用於監控及診斷 TiDB 叢集。TiDB Dashboard 內置於 TiDB 的 PD 元件中,無需獨立部署。

image-20210309181206197

叢集概況

檢視叢集整體 QPS 數值、執行耗時、消耗資源最多的幾類 SQL 語句等概況資訊。

該頁面顯示了整個叢集的概況,包含以下資訊:

  • 整個叢集的 QPS
  • 整個叢集的查詢延遲
  • 最近一段時間內累計耗時最多的若干 SQL 語句
  • 最近一段時間內執行時間超過一定閾值的慢查詢
  • 各個例項的節點數和狀態
  • 監控及告警資訊
QPS

該區域顯示最近一小時整個叢集的每秒成功和失敗查詢數量

image-20210310134900484

注意:該功能僅在部署了 Prometheus 監控元件的叢集上可用,未部署監控元件的情況下會顯示為失敗。

延遲

該區域顯示最近一小時整個叢集中 99.9%、99% 和 90% 查詢的延遲:

image-20210310134921004

注意:該功能僅在部署了 Prometheus 監控元件的叢集上可用,未部署監控元件的情況下會顯示為失敗。

Top SQL 語句

該區域顯示最近一段時間內整個群集中累計耗時最長的 10 類 SQL 語句。查詢引數不一樣但結構一樣的 SQL 會歸為同一類 SQL 語句,在同一行中顯示

image-20210310135140342

注意:該功能僅在開啟了 SQL 語句分析功能的叢集上可用。

最近的慢查詢

該區域預設顯示最近 30 分鐘內整個叢集中最新的 10 條慢查詢

image-20210310135240284

預設情況下執行時間超過 300ms 的SQL 查詢即會被計為慢查詢並顯示在該表格中。

叢集資訊

該頁面上允許使用者檢視整個叢集中 TiDB、TiKV、PD、TiFlash 元件的執行狀態及其所在主機的執行狀態。

例項列表

例項列表列出了該叢集中 TiDB、TiKV、PD 和 TiFlash 元件所有例項的概況資訊。

image-20210310135617023

表格列解釋

表格包含以下列:

  • 地址:例項地址
  • 狀態:例項的執行狀態
  • 啟動時間:例項的啟動時間
  • 版本:例項版本號
  • 部署路徑:例項二進位制檔案所在目錄路徑
  • Git 雜湊值:例項二進位制對應的 Git 雜湊值
例項狀態解釋

例項的執行狀態有:

  • 線上 (Up):例項正常執行。
  • 離線 (Down) 或無法訪問 (Unreachable):例項未啟動或對應主機存在網路問題。
  • 已縮容下線 (Tombstone):例項上的資料已被完整遷出並縮容完畢。僅 TiKV 或 TiFlash 例項存在該狀態。
  • 下線中 (Offline):例項上的資料正在被遷出並縮容。僅 TiKV 或 TiFlash 例項存在該狀態。
  • 未知 (Unknown):未知的例項執行狀態。
主機列表

主機列表列出了該叢集中 TiDB、TiKV、PD 和 TiFlash 元件所有例項對應主機的執行情況。

image-20210310135820510

表格列解釋

表格包含以下列:

  • 地址:主機 IP 地址
  • CPU:主機 CPU 邏輯核心數
  • CPU 使用率:主機當前 1 秒的使用者態和核心態 CPU 使用率
  • 實體記憶體:主機總計的實體記憶體大小
  • 記憶體使用率:主機當前記憶體使用率
  • 部署磁碟:主機上執行例項所在磁碟的檔案系統和磁碟掛載路徑
  • 磁碟使用率:主機上執行例項所在磁碟的空間使用率
SQL語句分析

該頁面可以檢視所有 SQL 語句在叢集上執行情況,常用於分析總耗時或單次耗時執行耗時較長的 SQL 語句。

執行列表頁

在該頁面中,結構一致的 SQL 查詢(即使查詢引數不一致)都會被歸為同一個 SQL 語句,例如 SELECT * FROM employee WHERE id IN (1, 2, 3)select * from EMPLOYEE where ID in (4, 5) 都屬於同一 SQL 語句 select * from employee where id in (...)

image-20210310140600074

執行詳情頁面

在列表中點選任意一行可以進入該 SQL 語句的詳情頁檢視更詳細的資訊,這此資訊包括三大部分:

  • SQL 語句概況:包括 SQL 模板,SQL 模板 ID,當前檢視的時間範圍,執行計劃個數以及執行所在的資料庫(下圖區域 1)
  • 執行計劃列表:如果該 SQL 語句有多個執行計劃,則顯示該列表,可以選擇不同的執行計劃,在列表下方會顯示選中的執行計劃詳情;如果只有一個執行計劃,則該列表不顯示(下圖區域 2)
  • 執行計劃詳情:顯示選中的執行計劃的詳細資訊,具體見下一小節(下圖區域 3)

image-20210310140919328

慢查詢

該頁面上能檢索和檢視叢集中所有慢查詢。

預設情況下,執行時間超過 300ms 的 SQL 查詢就會被視為慢查詢,被記錄到慢查詢日誌中,並可通過本功能對記錄到的慢查詢進行查詢。可調整 tidb_slow_log_threshold SESSION 變數或 TiDB slow-threshold 引數調整慢查詢閾值。

若關閉了慢查詢日誌,則本功能不可用。慢查詢日誌預設開啟,可通過修改 TiDB 配置 enable-slow-log 開啟或禁用。

慢查詢列表頁

可按時間範圍、慢查詢語句關聯的資料庫、SQL 關鍵字、SQL 型別、顯示的慢查詢語句數量等條件過濾,篩選慢查詢句。如下所示,預設顯示 30 分鐘內最近 100 條慢查詢。

image-20210310141242904

檢視執行詳情

在列表中點選任意一行可以顯示該慢查詢的詳細執行資訊,包含:

  • SQL:慢查詢 SQL 文字(
  • 執行計劃:慢查詢的執行計劃
  • 其他分類好的 SQL 執行資訊

image-20210310141345490

點選展開 (Expand) 連結可以展開相應項的完整內容,點選複製 (Copy) 連結可以複製完整內容到剪貼簿。

叢集診斷頁面

叢集診斷是在指定的時間範圍內,對叢集可能存在的問題進行診斷,並將診斷結果和一些叢集相關的負載監控資訊彙總成一個診斷報告。診斷報告是網頁形式,通過瀏覽器儲存後可離線瀏覽和傳閱。

生成診斷報告

如果想對一個時間範圍內的叢集進行診斷,檢視叢集的負載等情況,可以使用以下步驟來生成一段時間範圍的診斷報告:

  1. 設定區間的開始時間
  2. 設定區間長度,例如 10 min 。
  3. 點選開始。

建議生成報告的時間範圍在 1 min ~ 60 min 內,目前不建議生成超過 1 小時範圍的報告。

image-20210310141645985

點選開始 (start) 後,會看到以下介面,生成進度 (progress) 是生成報告的進度條,生成報告完成後,點選檢視報告 (View Full Report) 即可。

image-20210310141816552

TIDB叢集部署

環境要求

作業系統建議配置

TiDB 作為一款開源分散式 NewSQL 資料庫,可以很好的部署和執行在 Intel 架構伺服器環境、ARM 架構的伺服器環境及主流虛擬化環境,並支援絕大多數的主流硬體網路。作為一款高效能資料庫系統,TiDB 支援主流的 Linux 作業系統環境。

Linux 作業系統平臺 版本
Red Hat Enterprise Linux 7.3 及以上
CentOS 7.3 及以上
Oracle Enterprise Linux 7.3 及以上
Ubuntu LTS 16.04 及以上

伺服器建議配置

TiDB 支援部署和執行在 Intel x86-64 架構的 64 位通用硬體伺服器平臺或者 ARM 架構的硬體伺服器平臺。對於開發,測試,及生產環境的伺服器硬體配置(不包含作業系統 OS 本身的佔用)有以下要求和建議:

開發及測試環境
元件 CPU 記憶體 本地儲存 網路 例項數量(最低要求)
TiDB 8 核+ 16 GB+ 無特殊要求 千兆網絡卡 1(可與 PD 同機器)
PD 4 核+ 8 GB+ SAS, 200 GB+ 千兆網絡卡 1(可與 TiDB 同機器)
TiKV 8 核+ 32 GB+ SSD, 200 GB+ 千兆網絡卡 3
TiFlash 32 核+ 64 GB+ SSD, 200 GB+ 千兆網絡卡 1
TiCDC 8 核+ 16 GB+ SAS, 200 GB+ 千兆網絡卡 1
生產環境
元件 CPU 記憶體 硬碟型別 網路 例項數量(最低要求)
TiDB 16 核+ 32 GB+ SAS 萬兆網絡卡(2 塊最佳) 2
PD 4核+ 8 GB+ SSD 萬兆網絡卡(2 塊最佳) 3
TiKV 16 核+ 32 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

環境準備

準備一臺部署主機,確保其軟體滿足需求:

  • 推薦安裝 CentOS 7.3 及以上版本
  • Linux 作業系統開放外網訪問,用於下載 TiDB 及相關軟體安裝包

最小規模的 TiDB 叢集拓撲

例項 個數 IP 配置
TiKV 3 192.168.64.146 避免埠和目錄衝突
TiDB 1 192.168.64.146 預設埠 全域性目錄配置
PD 1 192.168.64.146 預設埠 全域性目錄配置
TiFlash 1 192.168.64.146 預設埠 全域性目錄配置
Monitoring & Grafana 1 192.168.64.146 預設埠 全域性目錄配置

安裝TiUP

什麼是TiUP

從 TiDB 4.0 版本開始,TiUP 作為新的工具,承擔著包管理器的角色,管理著 TiDB 生態下眾多的元件,如 TiDB、PD、TiKV 等。使用者想要執行 TiDB 生態中任何元件時,只需要執行 TiUP 一行命令即可,相比以前,極大地降低了管理難度。

安裝TiUP元件

使用普通使用者登入中控機,以 tidb 使用者為例,後續安裝 TiUP 及叢集管理操作均通過該使用者完成

TiUP 安裝過程十分簡潔,無論是 Darwin 還是 Linux 作業系統,執行一行命令即可安裝成功:

COPYcurl --proto '=https' --tlsv1.2 -sSf http://tiup-mirrors.pingcap.com/install.sh | sh

該命令將 TiUP 安裝在 $HOME/.tiup 資料夾下,之後安裝的元件以及元件執行產生的資料也會放在該資料夾下。同時,它還會自動將 $HOME/.tiup/bin 加入到 Shell Profile 檔案的 PATH 環境變數中,這樣你就可以直接使用 TiUP 了。

image-20210308095820951

配置TiUP環境

重新宣告全域性環境變數

COPYsource .bash_profile
檢查TiUP 工具是否安裝
COPYwhich tiup

image-20210308100108540

安裝 cluster 元件
COPYtiup cluster

image-20210308100218193

升級cluster元件

如果機器已經安裝 TiUP cluster,需要更新軟體版本

COPYtiup update --self && tiup update cluster

預期輸出 “Update successfully!” 字樣。

image-20210308100305454

編輯部署檔案

請根據不同的叢集拓撲,編輯 TiUP 所需的叢集初始化配置檔案。

常見的部署場景
最小拓撲架構

最基本的叢集拓撲,包括 tidb-server、tikv-server、pd-server,適合 OLTP 業務。

增加 TiFlash 拓撲架構

包含最小拓撲的基礎上,同時部署 TiFlash。TiFlash 是列式的儲存引擎,已經逐步成為叢集拓撲的標配。適合 Real-Time HTAP 業務。

增加 TiCDC 拓撲架構

包含最小拓撲的基礎上,同時部署 TiCDC。TiCDC 是 4.0 版本開始支援的 TiDB 增量資料同步工具,支援多種下游 (TiDB/MySQL/MQ)。相比於 TiDB Binlog,TiCDC 有延遲更低、天然高可用等優點。在部署完成後,需要啟動 TiCDC,通過 cdc cli 建立同步任務。

增加 TiDB Binlog 拓撲架構

包含最小拓撲的基礎上,同時部署 TiDB Binlog。TiDB Binlog 是目前廣泛使用的增量同步元件,可提供準實時備份和同步功能。

增加 TiSpark 拓撲架構

包含最小拓撲的基礎上,同時部署 TiSpark 元件。TiSpark 是 PingCAP 為解決使用者複雜 OLAP 需求而推出的產品。TiUP cluster 元件對 TiSpark 的支援目前為實驗性特性。

混合部署拓撲架構

適用於單臺機器,混合部署多個例項的情況,也包括單機多例項,需要額外增加目錄、埠、資源配比、label 等配置。

單機極簡部署

部署主機軟體和環境要求:

  • 部署需要使用部署主機的 root 使用者及密碼
  • 部署主機關閉防火牆或者開放 TiDB 叢集的節點間所需埠
單機極簡拓撲
例項 IP 開放埠
grafana 192.168.64.152 3000
pd 192.168.64.152 2379/2380
prometheus 192.168.64.152 9090
tidb 192.168.64.152 4000/10080
tiflash 192.168.64.152 9000/8123/3930/20170/20292/8234
tikv 192.168.64.152 20160/20180
tikv 192.168.64.152 20161/20181
tikv 192.168.64.152 20162/20182
編輯配置檔案

按下面的配置模板,編輯配置檔案,命名為 topo.yaml

  • user: "tidb":表示通過 tidb 系統使用者(部署會自動建立)來做叢集的內部管理,預設使用 22 埠通過 ssh 登入目標機器
  • replication.enable-placement-rules:設定這個 PD 引數來確保 TiFlash 正常執行
  • host:設定為本部署主機的 IP
COPY# # Global variables are applied to all deployments and used as the default value of
# # the deployments if a specific deployment value is missing.
global:
 user: "tidb"
 ssh_port: 22
 deploy_dir: "/tidb-deploy"
 data_dir: "/tidb-data"

# # Monitored variables are applied to all the machines.
monitored:
 node_exporter_port: 9100
 blackbox_exporter_port: 9115

server_configs:
 tidb:
   log.slow-threshold: 300
 tikv:
   readpool.storage.use-unified-pool: false
   readpool.coprocessor.use-unified-pool: true
 pd:
   replication.enable-placement-rules: true
   replication.location-labels: ["host"]
 tiflash:
   logger.level: "info"

pd_servers:
 - host: 192.168.64.146

tidb_servers:
 - host: 192.168.64.146

tikv_servers:
 - host: 192.168.64.146
   port: 20160
   status_port: 20180
   config:
     server.labels: { host: "logic-host-1" }

 - host: 192.168.64.146
   port: 20161
   status_port: 20181
   config:
     server.labels: { host: "logic-host-2" }

 - host: 192.168.64.146
   port: 20162
   status_port: 20182
   config:
     server.labels: { host: "logic-host-3" }

tiflash_servers:
 - host: 192.168.64.146

monitoring_servers:
 - host: 192.168.64.146

grafana_servers:
 - host: 192.168.64.146

執行叢集部署命令

命令格式

COPYtiup cluster deploy <cluster-name> <tidb-version> ./topo.yaml --user root -p
引數解釋
  • 引數 <cluster-name> 表示設定叢集名稱
  • 引數 <tidb-version> 表示設定叢集版本,可以通過 tiup list tidb 命令來檢視當前支援部署的 TiDB 版本
  • 引數: --user root通過 root 使用者登入到目標主機完成叢集部署,該使用者需要有 ssh 到目標機器的許可權,並且在目標機器有 sudo 許可權。也可以用其他有 ssh 和 sudo 許可權的使用者完成部署。

檢查TiDB最新版本

可以通過執行 tiup list tidb 來檢視 TiUP 支援的版本

COPYtiup list tidb

經過執行發現 最新可用的TiDB版本是 v4.0.11

執行部署命令

COPYtiup cluster deploy tidb-cluster 4.0.11 ./topo.yaml --user root -p

下面輸入y繼續後輸入密碼進行安裝介面

image-20210308140623236

進入安裝介面,等待安裝即可

image-20210308102532412

如果出現deployed successfully表示部署成功,叢集名稱是tidb-cluster

image-20210308103047705

啟動叢集

COPYtiup cluster start tidb-cluster

image-20210308103329722

檢視節點狀態

COPYtiup cluster display tidb-cluster

所有節點都是Up狀態說明都已經啟動就緒了

image-20210309113426102

測試TiDB叢集

Mysql連線叢集

TiDB的連線埠預設是4000, 密碼是空,可用使用Mysql客戶端以及第三方工具進行連線

安裝MySql客戶端
COPYyum -y install mysql
MySql客戶端連線

訪問 TiDB 資料庫,密碼為空

COPYmysql -h 192.168.64.146 -P 4000 -u root

image-20210308104058321

第三方客戶端訪問Mysql

使用SQLyog訪問TiDB

建立TiDB連線

image-20210308104229510

連線後就可以操作資料庫了

image-20210308104434635

訪問Grafana監控

通過 http://{grafana-ip}:3000 訪問叢集 Grafana 監控頁面,預設使用者名稱和密碼均為 admin。

image-20210308104706041

訪問Dashboard

通過 http://{pd-ip}:2379/dashboard 訪問叢集 TiDB Dashboard監控頁面,預設使用者名稱為 root,密碼為空。

image-20210308104829297

檢視叢集列表

COPYtiup cluster list

image-20210308110936945

檢視叢集拓撲

COPYtiup cluster display tidb-cluster

image-20210308111048597

TiDB擴縮容

當前叢集部署拓撲

例項 IP 儲存路徑 部署路徑
grafana 192.168.64.152 3000 /tidb-deploy/grafana-3000
pd 192.168.64.152 2379/2380 /tidb-data/pd-2379 /tidb-deploy/pd-2379
prometheus 192.168.64.152 9090 /tidb-data/prometheus-9090 /tidb-deploy/prometheus-9090
tidb 192.168.64.152 4000/10080 /tidb-deploy/tidb-4000
tiflash 192.168.64.152 9000/8123/3930/20170/20292/8234 /tidb-data/tiflash-9000 /tidb-deploy/tiflash-9000
tikv 192.168.64.152 20160/20180 /tidb-data/tikv-20160 /tidb-deploy/tikv-20160
tikv 192.168.64.152 20161/20181 /tidb-data/tikv-20161 /tidb-deploy/tikv-20161
tikv 192.168.64.152 20162/20182 /tidb-data/tikv-20162 /tidb-deploy/tikv-20162

擴容TiKV節點

需要擴容一個TiKV節點

例項 IP 儲存路徑 部署路徑
tikv 192.168.64.152 20163/20183 /tidb-data/tikv-20163 /tidb-deploy/tikv-20163
編寫擴容指令碼

在 scale-out.yaml 檔案新增擴容拓撲配置

COPYvi scale-out.yaml
COPYtikv_servers:
  - host: 192.168.64.152
    ssh_port: 22
    port: 20163
    status_port: 20183
    deploy_dir: /tidb-deploy/tikv-20163
    data_dir: /tidb-data/tikv-20163
    config:
        server.labels:
            host: logic-host-4
執行擴容命令
命令格式
COPYtiup cluster scale-out <cluster-name> scale-out.yaml -p
  • cluster-name:TiDB叢集名稱
  • p:使用密碼方式登入當前機器
執行命令
COPYtiup cluster scale-out tidb-cluster scale-out.yaml -p

輸入命令後,確認輸入機器密碼

image-20210308152355455

出現successfully表示節點擴容成功

image-20210308152524912

驗證擴容資訊
檢視節點資訊
COPYtiup cluster display tidb-cluster

我們看到Tikv已經增加了一個節點

image-20210308152647801

通過dashboard檢視

也可以看到擴容的節點資訊

image-20210308152905774

縮容TiKV節點

檢視節點資訊
COPYtiup cluster display tidb-cluster

當前TiKV是4個節點

image-20210308152647801

執行縮容操作
縮容命令
COPYtiup cluster scale-in <cluster-name> --node 192.168.64.152:20163

引數解釋

  • cluster-name:叢集名稱
  • node:需要刪除的節點地址
執行命令
COPYtiup cluster scale-in tidb-cluster --node 192.168.64.152:20163

出現確認操作後,輸入y確認執行就可以執行縮容操作了

image-20210308153500262

驗證縮容資訊
檢視節點資訊
COPYtiup cluster display tidb-cluster

我們看到需要縮容的節點狀態是Tombstone說明已經下線,下線需要一定時間,下線節點的狀態變為 Tombstone 就說明下線成功

image-20210308153639934

通過dashboard檢視

也可以看到縮容的節點已經不存在了,說明縮容成功

image-20210308153901260

部落格內容遵循 署名-非商業性使用-相同方式共享 4.0 國際 (CC BY-NC-SA 4.0) 協議

本文永久連結是:http://www.baiyp.ren/TIDB%E9%9B%86%E7%BE%A4%E9%83%A8%E7%BD%B2.html

更新於:2021年5月27日

叢集部署

TIDB

本文由傳智教育博學谷狂野架構師教研團隊釋出。

如果本文對您有幫助,歡迎關注點贊;如果您有任何建議也可留言評論私信,您的支援是我堅持創作的動力。

轉載請註明出處!