Tidb集群加mysql_TiDB集群部署及维护

一、准备服务器

1.准备三台服务器,配置如下

74776541d264dcba0a877a7206ab5881.png

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

Tidb集群加mysql_TiDB集群部署及维护_第1张图片

编辑 /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

Tidb集群加mysql_TiDB集群部署及维护_第2张图片

挂载数据盘

mkdir /data1 /data2 && mount -a

执行以下命令,如果文件系统为 ext4,并且挂载参数中包含 nodelalloc,则表示已生效

b6292e2322818473cf630d5fdaa547f7.png

三、使用官方推荐的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

Tidb集群加mysql_TiDB集群部署及维护_第3张图片

3.设置 TiUP 环境变量

source .bash_profile

4.安装 TiUP cluster 组件

tiup cluster

Tidb集群加mysql_TiDB集群部署及维护_第4张图片

5.验证当前 TiUP cluster 版本信息

d81f22e8b3ea8f052c20dfdd15e38929.png

四、配置初始化参数文件topology.yaml

拓扑信息

Tidb集群加mysql_TiDB集群部署及维护_第5张图片

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

Tidb集群加mysql_TiDB集群部署及维护_第6张图片

2.执行部署命令

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

Tidb集群加mysql_TiDB集群部署及维护_第7张图片

Tidb集群加mysql_TiDB集群部署及维护_第8张图片

3.检查 TiUP 管理的集群情况

tiup cluster list

301a7fae4acba672211b0c81fe23dac8.png

4.检查部署的 TiDB 集群情况

tiup cluster display tidb-endata

Tidb集群加mysql_TiDB集群部署及维护_第9张图片

5.启动集群

tiup cluster start tidb-endata

Tidb集群加mysql_TiDB集群部署及维护_第10张图片

6.通过 TiUP 检查集群状态

tiup cluster display tidb-endata

Tidb集群加mysql_TiDB集群部署及维护_第11张图片

六、通过 TiDB Dashboard 和 Grafana 检查集群状态

通过 {pd-leader-ip}:2379/dashboard 登录 TiDB Dashboard,登录用户和口令为 TiDB 数据库 root 用户和口令,如果你修改过数据库的 root 密码,则以修改后的密码为准,默认密码为 空。

Tidb集群加mysql_TiDB集群部署及维护_第12张图片

查看 Grafana 监控 Overview 页面检查 TiDB 集群状态

通过 {Grafana-ip}:3000 登录 Grafana 监控,默认用户名及密码为 admin/admin

Tidb集群加mysql_TiDB集群部署及维护_第13张图片

登录数据库执行简单 DML、DDL 操作和查询 SQL 语句

mysql -uroot -h192.168.0.79 -P4000 -p

Tidb集群加mysql_TiDB集群部署及维护_第14张图片

执行如下命令关闭 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

Tidb集群加mysql_TiDB集群部署及维护_第15张图片

默认情况下,可以不填端口信息。但在单机多实例场景下,你需要分配不同的端口,如果有端口或目录冲突,会在部署或扩容时提醒。

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

Tidb集群加mysql_TiDB集群部署及维护_第16张图片

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

你可能感兴趣的:(Tidb集群加mysql)