TiUP 是 TiDB 4.0 版本引入的集群運維工具,TiUP cluster 是 TiUP 提供的使用 Golang 編寫的集群管理組件,通過 TiUP cluster 組件就可以進行日常的運維工作,包括部署、啟動、關閉、銷毀、彈性擴縮容、升級 TiDB 集群;管理 TiDB 集群參數。
下面使用TiUP工具在RHEL7.6系統上部署TiDB單機環境。
軟硬件環境需求
操作系統要求
Linux 操作系統平台 | 版本 |
---|---|
Red Hat Enterprise Linux | 7.3 及以上 |
CentOS | 7.3 及以上 |
Oracle Enterprise Linux | 7.3 及以上 |
Ubuntu LTS | 16.04 及以上 |
注意:TiDB 只支持 Red Hat 兼容內核 (RHCK) 的 Oracle Enterprise Linux,不支持 Oracle Enterprise Linux 提供的 Unbreakable Enterprise Kernel。
軟件環境要求配置
存儲及文件系統配置
- 建議使用 EXT4 類型文件系統的 NVME 類型的 SSD 磁盤存儲 TiKV 數據文件
- 掛載文件系統時添加
nodelalloc
和noatime
掛載參數。
I/O調度器
I/O 調度程序確定 I/O 操作何時在存儲設備上運行以及持續多長時間。對於SSD設備,推薦設置為 noop 模式。
echo noop > /sys/block/${SSD_DEV_NAME}/queue/scheduler
檢查及關閉swap
TiDB 運行需要有足夠的內存,並且不建議使用 swap 作為內存不足的緩沖,這會降低性能。
echo "vm.swappiness = 0">> /etc/sysctl.conf
swapoff -a && swapon -a
關閉防火牆
# 1. 檢查防火牆狀態
sudo firewall-cmd --state
sudo systemctl status firewalld.service
# 2. 關閉防火牆
sudo systemctl stop firewalld.service
sudo systemctl disable firewalld.service
# 3. 檢查確認
sudo systemctl status firewalld.service
sudo systemctl is-enable firewalld.service
檢查及配置NTP服務
TiDB 是一套分布式數據庫系統,需要節點間保證時間的同步,從而確保 ACID 模型的事務線性一致性。
# 1. 檢查狀態
sudo systemctl status ntpd.service
ntpstat
# 2. 安裝ntp服務
sudo yum -y install ntp ntpdate && \
sudo systemctl start ntpd.service && \
sudo systemctl enable ntpd.service
檢測和關閉透明大頁
對於數據庫應用,不推薦使用透明大頁(即 Transparent Huge Pages,縮寫為 THP),因為數據庫的內存訪問模式往往是稀疏的而非連續的。而且當高階內存碎片化比較嚴重時,分配 THP 頁面會出現較大的延遲。若開啟針對 THP 的直接內存規整功能,也會出現系統 CPU 使用率激增的現象,因此建議關閉透明大頁。
# 1. 查看透明大頁的開啟狀態 -- 如果返回 [always] madvise never 則表示處於啟用狀態
cat /sys/kernel/mm/transparent_hugepage/enabled
# 2. grubby 命令查看默認內核版本
grubby --default-kernel
# 3. 執行 grubby --update-kernel 命令修改內核配置
grubby --args="transparent_hugepage=never" --update-kernel /boot/vmlinuz-3.10.0-957.el7.x86_64
# 4. 執行 grubby --info 命令查看修改后的默認內核配置
grubby --info /boot/vmlinuz-3.10.0-957.el7.x86_64
# 5. 重啟
reboot
## 臨時修改當前的內核配置(立即生效)
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
配置 SSH 互信及 sudo 免密碼
推薦使用 TiUP 部署工具會自動配置 SSH 互信及免密登陸
創建 tidb
用戶並設置登錄密碼
useradd -m -d /home/tidb tidb
echo "tidb"|passwd --stdin tidb
配置sudo
visudo
# 添加下面一行
tidb ALL=(ALL) NOPASSWD: ALL
部署TiDB
參照 TiUP 最小拓撲,准備一個 YAML 文件進行部署 TiDB 單機環境。
拓撲結構
實例 | 個數 | IP | 配置 |
---|---|---|---|
TiKV | 3 | 192.168.10.181 | 避免端口和目錄沖突 |
TiDB | 1 | 192.168.10.181 | 默認端口 全局目錄配置 |
PD | 1 | 192.168.10.181 | 默認端口 全局目錄配置 |
Monitor | 1 | 192.168.10.181 | 默認端口 全局目錄配置 |
詳細過程
下載並安裝TiUP工具(聯網)
curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
安裝集群組件
tiup cluster
確認當前 TiUP cluster 版本信息
tiup --binary cluster
創建最小架構 yaml 文件
global:
user: "tidb"
ssh_port: 22
deploy_dir: "/tidb/app/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.10.181
tidb_servers:
- host: 192.168.10.181
tikv_servers:
- host: 192.168.10.181
port: 20160
status_port: 20180
config:
server.labels: { host: "logic-host-1" }
- host: 192.168.10.181
port: 20161
status_port: 20181
config:
server.labels: { host: "logic-host-2" }
- host: 192.168.10.181
port: 20162
status_port: 20182
config:
server.labels: { host: "logic-host-3" }
tiflash_servers:
- host: 192.168.10.181
monitoring_servers:
- host: 192.168.10.181
grafana_servers:
- host: 192.168.10.181
alertmanager_servers:
- host: 192.168.10.181
初始化集群
tiup cluster deploy tidb-cluster v4.0.9 ./topology.yaml --user root -p
預期日志結尾輸出會有 Deployed cluster tidb-cluster successfully
關鍵詞,表示部署成功。
啟動集群
# tiup cluster start <cluster-name>
tiup cluster start tidb-cluster
檢查集群狀態
# 輸出當前通過 TiUP cluster 管理的所有集群信息
tiup cluster list
# 檢查部署的 TiDB 集群情況, Status 狀態信息為 Up 說明集群狀態正常
tiup cluster display tidb-cluster
客戶端訪問TiDB集群
使用mysql客戶端(若已安裝 MySQL 客戶端)
mysql -h 192.168.10.181 -P 4000 -u root
默認端口為4000,root默認密碼為空.
web 界面訪問
-
Dashboard
PD默認安裝Dashboard,可以通過http://{pd-ip}:2379/dashboard
訪問集群的監控界面。[默認用戶名為 root,密碼為空] -
Grafana
通過http://{grafana-ip}:3000
訪問監控頁面。 [默認用戶名和密碼均為 admin]