TiDB 基礎使用 TiDB dashboard使用 TiDB Dashboard 是 TiDB 自 4.0 版本起提供的圖形化界面,可用於監控及診斷 TiDB 集群。TiDB Dashboard 內置於 TiDB 的 PD 組件中,無需獨立部署。 集群概況 查看集群整體 QPS 數值、執行耗時、消 ...
TiDB 基礎使用
TiDB dashboard使用
TiDB Dashboard 是 TiDB 自 4.0 版本起提供的圖形化界面,可用於監控及診斷 TiDB 集群。TiDB Dashboard 內置於 TiDB 的 PD 組件中,無需獨立部署。
集群概況
查看集群整體 QPS 數值、執行耗時、消耗資源最多的幾類 SQL 語句等概況信息。
該頁面顯示了整個集群的概況,包含以下信息:
- 整個集群的 QPS
- 整個集群的查詢延遲
- 最近一段時間內累計耗時最多的若幹 SQL 語句
- 最近一段時間內運行時間超過一定閾值的慢查詢
- 各個實例的節點數和狀態
- 監控及告警信息
QPS
該區域顯示最近一小時整個集群的每秒成功和失敗查詢數量
註意:該功能僅在部署了 Prometheus 監控組件的集群上可用,未部署監控組件的情況下會顯示為失敗。
延遲
該區域顯示最近一小時整個集群中 99.9%、99% 和 90% 查詢的延遲:
註意:該功能僅在部署了 Prometheus 監控組件的集群上可用,未部署監控組件的情況下會顯示為失敗。
Top SQL 語句
該區域顯示最近一段時間內整個群集中累計耗時最長的 10 類 SQL 語句。查詢參數不一樣但結構一樣的 SQL 會歸為同一類 SQL 語句,在同一行中顯示
註意:該功能僅在開啟了 SQL 語句分析功能的集群上可用。
最近的慢查詢
該區域預設顯示最近 30 分鐘內整個集群中最新的 10 條慢查詢
預設情況下運行時間超過 300ms 的SQL 查詢即會被計為慢查詢並顯示在該表格中。
集群信息
該頁面上允許用戶查看整個集群中 TiDB、TiKV、PD、TiFlash 組件的運行狀態及其所在主機的運行狀態。
實例列表
實例列表列出了該集群中 TiDB、TiKV、PD 和 TiFlash 組件所有實例的概況信息。
表格列解釋
表格包含以下列:
- 地址:實例地址
- 狀態:實例的運行狀態
- 啟動時間:實例的啟動時間
- 版本:實例版本號
- 部署路徑:實例二進位文件所在目錄路徑
- Git 哈希值:實例二進位對應的 Git 哈希值
實例狀態解釋
實例的運行狀態有:
- 線上 (Up):實例正常運行。
- 離線 (Down) 或無法訪問 (Unreachable):實例未啟動或對應主機存在網路問題。
- 已縮容下線 (Tombstone):實例上的數據已被完整遷出並縮容完畢。僅 TiKV 或 TiFlash 實例存在該狀態。
- 下線中 (Offline):實例上的數據正在被遷出並縮容。僅 TiKV 或 TiFlash 實例存在該狀態。
- 未知 (Unknown):未知的實例運行狀態。
主機列表
主機列表列出了該集群中 TiDB、TiKV、PD 和 TiFlash 組件所有實例對應主機的運行情況。
表格列解釋
表格包含以下列:
- 地址:主機 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 (...)
。
執行詳情頁面
在列表中點擊任意一行可以進入該 SQL 語句的詳情頁查看更詳細的信息,這此信息包括三大部分:
- SQL 語句概況:包括 SQL 模板,SQL 模板 ID,當前查看的時間範圍,執行計劃個數以及執行所在的資料庫(下圖區域 1)
- 執行計劃列表:如果該 SQL 語句有多個執行計劃,則顯示該列表,可以選擇不同的執行計劃,在列表下方會顯示選中的執行計劃詳情;如果只有一個執行計劃,則該列表不顯示(下圖區域 2)
- 執行計劃詳情:顯示選中的執行計劃的詳細信息,具體見下一小節(下圖區域 3)
慢查詢
該頁面上能檢索和查看集群中所有慢查詢。
預設情況下,執行時間超過 300ms 的 SQL 查詢就會被視為慢查詢,被記錄到慢查詢日誌中,並可通過本功能對記錄到的慢查詢進行查詢。可調整 tidb_slow_log_threshold
SESSION 變數或 TiDB slow-threshold
參數調整慢查詢閾值。
若關閉了慢查詢日誌,則本功能不可用。慢查詢日誌預設開啟,可通過修改 TiDB 配置 enable-slow-log
開啟或禁用。
慢查詢列表頁
可按時間範圍、慢查詢語句關聯的資料庫、SQL 關鍵字、SQL 類型、顯示的慢查詢語句數量等條件過濾,篩選慢查詢句。如下所示,預設顯示 30 分鐘內最近 100 條慢查詢。
查看執行詳情
在列表中點擊任意一行可以顯示該慢查詢的詳細執行信息,包含:
- SQL:慢查詢 SQL 文本(
- 執行計劃:慢查詢的執行計劃
- 其他分類好的 SQL 執行信息
點擊展開 (Expand) 鏈接可以展開相應項的完整內容,點擊複製 (Copy) 鏈接可以複製完整內容到剪貼板。
集群診斷頁面
集群診斷是在指定的時間範圍內,對集群可能存在的問題進行診斷,並將診斷結果和一些集群相關的負載監控信息彙總成一個診斷報告。診斷報告是網頁形式,通過瀏覽器保存後可離線瀏覽和傳閱。
生成診斷報告
如果想對一個時間範圍內的集群進行診斷,查看集群的負載等情況,可以使用以下步驟來生成一段時間範圍的診斷報告:
- 設置區間的開始時間
- 設置區間長度,例如 10 min 。
- 點擊開始。
建議生成報告的時間範圍在 1 min ~ 60 min 內,目前不建議生成超過 1 小時範圍的報告。
點擊開始 (start) 後,會看到以下界面,生成進度 (progress) 是生成報告的進度條,生成報告完成後,點擊查看報告 (View Full Report) 即可。
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 https://tiup-mirrors.pingcap.com/install.sh | sh
該命令將 TiUP 安裝在 $HOME/.tiup
文件夾下,之後安裝的組件以及組件運行產生的數據也會放在該文件夾下。同時,它還會自動將 $HOME/.tiup/bin
加入到 Shell Profile 文件的 PATH 環境變數中,這樣你就可以直接使用 TiUP 了。
配置TiUP環境
重新聲明全局環境變數
COPYsource .bash_profile
檢查TiUP 工具是否安裝
COPYwhich tiup
安裝 cluster 組件
COPYtiup cluster
升級cluster組件
如果機器已經安裝 TiUP cluster,需要更新軟體版本
COPYtiup update --self && tiup update cluster
預期輸出
“Update successfully!”
字樣。
編輯部署文件
請根據不同的集群拓撲,編輯 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
繼續後輸入密碼進行安裝界面
進入安裝界面,等待安裝即可
如果出現
deployed successfully
表示部署成功,集群名稱是tidb-cluster
啟動集群
COPYtiup cluster start tidb-cluster
查看節點狀態
COPYtiup cluster display tidb-cluster
所有節點都是Up狀態說明都已經啟動就緒了
測試TiDB集群
Mysql連接集群
TiDB的連接埠預設是4000, 密碼是空,可用使用Mysql客戶端以及第三方工具進行連接
安裝MySql客戶端
COPYyum -y install mysql
MySql客戶端連接
訪問 TiDB 資料庫,密碼為空
COPYmysql -h 192.168.64.146 -P 4000 -u root
第三方客戶端訪問Mysql
使用SQLyog訪問TiDB
創建TiDB連接
連接後就可以操作資料庫了
訪問Grafana監控
通過 http://{grafana-ip}:3000 訪問集群 Grafana 監控頁面,預設用戶名和密碼均為 admin。
訪問Dashboard
通過 http://{pd-ip}:2379/dashboard 訪問集群 TiDB Dashboard監控頁面,預設用戶名為 root,密碼為空。
查看集群列表
COPYtiup cluster list
查看集群拓撲
COPYtiup cluster display tidb-cluster
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
輸入命令後,確認輸入機器密碼
出現
successfully
表示節點擴容成功
驗證擴容信息
查看節點信息
COPYtiup cluster display tidb-cluster
我們看到Tikv已經增加了一個節點
通過dashboard查看
也可以看到擴容的節點信息
縮容TiKV節點
查看節點信息
COPYtiup cluster display tidb-cluster
當前TiKV是4個節點
執行縮容操作
縮容命令
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確認執行就可以執行縮容操作了
驗證縮容信息
查看節點信息
COPYtiup cluster display tidb-cluster
我們看到需要縮容的節點狀態是
Tombstone
說明已經下線,下線需要一定時間,下線節點的狀態變為Tombstone
就說明下線成功
通過dashboard查看
也可以看到縮容的節點已經不存在了,說明縮容成功
博客內容遵循 署名-非商業性使用-相同方式共用 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日
本文由
傳智教育博學谷狂野架構師
教研團隊發佈。如果本文對您有幫助,歡迎
關註
和點贊
;如果您有任何建議也可留言評論
或私信
,您的支持是我堅持創作的動力。轉載請註明出處!