TiDB集群部署及維護


一、准備服務器

1.准備三台服務器,配置如下

2.三塊固態硬盤分別做raid0

3.最小化安裝centos7.7系統,配置ip地址和DNS

 二、服務器初始化:包括安裝常用命令工具,修改系統時區,校對系統時間,關閉selinux,關閉firewalld,修改主機名,修改系統文件描述符,優化內核參數,優化數據盤掛載參數

1、安裝常用命令工具

yum install vim net-tools bash-completion wget unzip ntp bzip2 epel-release numactl  -y

2、修改系統時區,啟動ntp服務

timedatectl set-timezone Asia/Shanghai

ntpdate 192.168.0.205

vim /etc/ntp.conf

server 192.168.0.205

systemctl start ntpd
systemctl enable ntpd

3、關閉selinux

vim /etc/selinux/config

SELINUX=disabled

4、關閉防火牆

systemctl stop firewalld.service

systemctl disable firewalld.service

5、修改主機名

vim /etc/hostname

TiDB-01

6、修改系統文件描述符大小

vim /etc/security/limits.conf

最后添加:

* soft nofile 655360
* hard nofile 655360
* soft nproc 655360
* hard nproc 655360
* soft memlock unlimited
* hard memlock unlimited

7.優化內核參數

vim /etc/sysctl.conf

最后添加:

vm.max_map_count = 655360
net.core.rmem_max = 2097152
net.core.wmem_max = 2097152
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_max_syn_backlog = 8192
net.core.netdev_max_backlog = 10000
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

8.優化數據盤掛載參數,官方推薦 TiKV 部署目標機器的數據目錄使用 EXT4 文件系統格式,所以我們需要格式化兩塊數據盤

使用fdisk -l查看數據盤

Disk /dev/sdb: 1919.7 GB

Disk /dev/sdc: 1919.7 GB

創建分區表

parted -s -a optimal /dev/sdb mklabel gpt -- mkpart primary ext4 1 -1

parted -s -a optimal /dev/sdc mklabel gpt -- mkpart primary ext4 1 -1

 格式化文件系統

mkfs.ext4 /dev/sdb1

mkfs.ext4 /dev/sdc1

 查看數據盤分區 UUID

lsblk -f

 編輯 /etc/fstab 文件,添加掛載參數

UUID=dda54ded-acff-47c0-beb9-ea47351e11c8 /data1 ext4 defaults,nodelalloc,noatime 0 2
UUID=013c4145-bb40-4a7e-b467-41c43985dbfd /data2 ext4 defaults,nodelalloc,noatime 0 2

 掛載數據盤

mkdir /data1 /data2 && mount -a

執行以下命令,如果文件系統為 ext4,並且掛載參數中包含 nodelalloc,則表示已生效

  三、使用官方推薦的TiUP部署TiDB集群

1.在中控機上安裝TiUP組件,中控機可以是部署目標機器中的一台,我這里使用跳板機

在中控機上添加tidb用戶,設置tidb密碼

useradd tidb

 passwd tidb

切換到tidb用戶

su - tidb

2.在中控機上安裝TiUP組件

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

 3.設置 TiUP 環境變量

source .bash_profile

4.安裝 TiUP cluster 組件

tiup cluster

 5.驗證當前 TiUP cluster 版本信息

 四、配置初始化參數文件topology.yaml

拓撲信息

 vim topology.yaml

# # 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:
node_exporter_port: 9100
blackbox_exporter_port: 9115
deploy_dir: "/tidb-deploy/monitored-9100"
data_dir: "/tidb-data-monitored-9100"
log_dir: "/tidb-deploy/monitored-9100/log"

server_configs:
tikv:
readpool.unified.max-thread-count: 16
readpool.storage.use-unified-pool: true
readpool.coprocessor.use-unified-pool: true
storage.block-cache.capacity: "16GB"
pd:
replication.location-labels: ["host"]
replication.enable-placement-rules: true

pd_servers:
- host: 192.168.0.226
deploy_dir: "/data1/tidb-deploy/pd-2379"
data_dir: "/data1/tidb-data/pd-2379"
log_dir: "/data1/tidb-deploy/pd-2379/log"
- host: 192.168.0.227
deploy_dir: "/data1/tidb-deploy/pd-2379"
data_dir: "/data1/tidb-data/pd-2379"
log_dir: "/data1/tidb-deploy/pd-2379/log"
- host: 192.168.0.228
deploy_dir: "/data1/tidb-deploy/pd-2379"
data_dir: "/data1/tidb-data/pd-2379"
log_dir: "/data1/tidb-deploy/pd-2379/log"

tidb_servers:
- host: 192.168.0.226
- host: 192.168.0.227
- host: 192.168.0.228

tikv_servers:
- host: 192.168.0.226
port: 20160
status_port: 20180
deploy_dir: "/data1/tidb-deploy/tikv-20160"
data_dir: "/data1/tidb-data/tikv-20160"
log_dir: "/data1/tidb-deploy/tikv-20160/log"
numa_node: "0"
config:
server.labels: { host: "tikv1" }
- host: 192.168.0.226
port: 20161
status_port: 20181
deploy_dir: "/data2/tidb-deploy/tikv-20161"
data_dir: "/data2/tidb-data/tikv-20161"
log_dir: "/data2/tidb-deploy/tikv-20161/log"
numa_node: "1"
config:
server.labels: { host: "tikv1" }
- host: 192.168.0.227
port: 20160
status_port: 20180
deploy_dir: "/data1/tidb-deploy/tikv-20160"
data_dir: "/data1/tidb-data/tikv-20160"
log_dir: "/data1/tidb-deploy/tikv-20160/log"
numa_node: "0"
config:
server.labels: { host: "tikv2" }
- host: 192.168.0.227
port: 20161
status_port: 20181
deploy_dir: "/data2/tidb-deploy/tikv-20161"
data_dir: "/data2/tidb-data/tikv-20161"
log_dir: "/data2/tidb-deploy/tikv-20161/log"
numa_node: "1"
config:
server.labels: { host: "tikv2" }
- host: 192.168.0.228
port: 20160
status_port: 20180
deploy_dir: "/data1/tidb-deploy/tikv-20160"
data_dir: "/data1/tidb-data/tikv-20160"
log_dir: "/data1/tidb-deploy/tikv-20160/log"
numa_node: "0"
config:
server.labels: { host: "tikv3" }
- host: 192.168.0.228
port: 20161
status_port: 20181
deploy_dir: "/data2/tidb-deploy/tikv-20161"
data_dir: "/data2/tidb-data/tikv-20161"
log_dir: "/data2/tidb-deploy/tikv-20161/log"
numa_node: "1"
config:
server.labels: { host: "tikv3" }
monitoring_servers:
- host: 192.168.0.226
grafana_servers:
- host: 192.168.0.226
alertmanager_servers:
- host: 192.168.0.226

五、部署TiDB

1.查看 TiUP 支持管理的 TiDB 版本

tiup list tidb --refresh

 2.執行部署命令

tiup cluster deploy tidb-endata v4.0.0-rc.1 ./topology.yaml --user root -i /home/tidb/.ssh/id_rsa

  3.檢查 TiUP 管理的集群情況

tiup cluster list

 4.檢查部署的 TiDB 集群情況

tiup cluster display tidb-endata

  5.啟動集群

tiup cluster start tidb-endata

 6.通過 TiUP 檢查集群狀態

tiup cluster display tidb-endata

  六、通過 TiDB Dashboard 和 Grafana 檢查集群狀態

通過 {pd-leader-ip}:2379/dashboard 登錄 TiDB Dashboard,登錄用戶和口令為 TiDB 數據庫 root 用戶和口令,如果你修改過數據庫的 root 密碼,則以修改后的密碼為准,默認密碼為 空。

 查看 Grafana 監控 Overview 頁面檢查 TiDB 集群狀態

通過 {Grafana-ip}:3000 登錄 Grafana 監控,默認用戶名及密碼為 admin/admin

登錄數據庫執行簡單 DML、DDL 操作和查詢 SQL 語句

mysql -uroot -h192.168.0.79 -P4000 -p

 執行如下命令關閉 tidb-endata集群:

tiup cluster stop tidb-endata

七、使用 TiUP 擴容縮容 TiDB 集群

1.擴容TiDB節點,添加 TiKV 和 PD 節點和添加 TiDB 節點的步驟類似。

如果要添加一個 TiDB 節點,IP 地址為 192.168.0.229,可以按照如下步驟進行操作。

1.1 編寫擴容拓撲配置

在 scale-out.yaml 文件添加擴容拓撲配置:

vim scale-out.yaml

tidb_servers:
    - host: 192.168.0.229
      ssh_port: 22
      port: 4000
      status_port: 10080

 默認情況下,可以不填端口信息。但在單機多實例場景下,你需要分配不同的端口,如果有端口或目錄沖突,會在部署或擴容時提醒。

你可以使用 tiup cluster edit-config <cluster-name> 查看當前集群的整體配置,其中 global 和 server_configs 的全局配置也會在 scale-out.yaml 中生效。

1.2 執行擴容命令

tiup cluster scale-out <cluster-name> scale-out.yaml

預期輸出 Scaled cluster <cluster-name> out successfully 信息,表示擴容操作成功。

1.3 檢查集群狀態

tiup cluster display <cluster-name>

打開瀏覽器訪問監控平台 http://192.168.0.226:3000,監控整個集群和新增節點的狀態。

 2.執行縮容操作,下線一個TiKV節點

tiup cluster scale-in <cluster-name> --node 192.168.0.226:20160

其中 --node 參數為需要下線節點的 ID。
預期輸出 Scaled cluster <cluster-name> in successfully 信息,表示縮容操作成功。

3.檢查集群狀態

下線需要一定時間,下線節點的狀態變為 Tombstone 就說明下線成功。
執行如下命令檢查節點是否下線成功:

tiup cluster display <cluster-name>

打開瀏覽器訪問監控平台 http://192.168.0.226:3000,監控整個集群狀態

八、TiDB常用操作命令

1.修改root密碼

 SET PASSWORD FOR 'root'@'%' = 'xxxxxxx;

2.可以 kill DML 語句,首先使用 show processlist,找到對應 session 的 id,然后執行 kill tidb [session id]

3.可以 kill DDL 語句,首先使用 admin show ddl jobs,查找需要 kill 的 DDL job ID,然后執行 admin cancel ddl jobs 'job_id' [, 'job_id'] ...

4.創建索引

ALTER TABLE ods_mongo_baidu.SearchIndex ADD INDEX (statis_date);

 九、注意事項

使用TiUP部署后在目標服務器上會安裝監控插件,有兩個插件未加入開機自啟,導致服務器重啟后系統監控數據異常,需要加入開機自啟

systemctl enable blackbox_exporter-9115.service
systemctl enable node_exporter-9100.service


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM