一、准备服务器
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 查看当前集群的整体配置,其中 global 和 server_configs 的全局配置也会在 scale-out.yaml 中生效。
1.2 执行扩容命令
tiup cluster scale-out scale-out.yaml
预期输出 Scaled cluster out successfully 信息,表示扩容操作成功。
1.3 检查集群状态
tiup cluster display
打开浏览器访问监控平台 http://192.168.0.226:3000,监控整个集群和新增节点的状态。
2.执行缩容操作,下线一个TiKV节点
tiup cluster scale-in --node 192.168.0.226:20160
其中 --node 参数为需要下线节点的 ID。
预期输出 Scaled cluster in successfully 信息,表示缩容操作成功。
3.检查集群状态
下线需要一定时间,下线节点的状态变为 Tombstone 就说明下线成功。
执行如下命令检查节点是否下线成功:
tiup cluster display
打开浏览器访问监控平台 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