TiUP 是 TiDB 4.0 版本引入的集群运维工具,TiUP cluster 是 TiUP 提供的使用 Golang 编写的集群管理组件,通过 TiUP cluster 组件就可以进行日常的运维工作,包括部署、启动、关闭、销毁、弹性扩缩容、升级 TiDB 集群;管理 TiDB 集群参数。

目前 TiUP 可以支持部署 TiDB、TiFlash、TiDB Binlog、TiCDC,以及监控系统。

一 实验环境

本文实验环境如下:

这里将Tiup,监控,grafana,告警灯都部署在PD上。

这里只是模拟在开发环境安装tidb,因此未配置PD,TiDB等组件的高可用。

二 前提准备

2.1 软硬件要求

2.1.1 Linux 操作系统版本要求

2.1.2 软件配置要求

2.1.3 服务器建议配置

2.1.3.1 开发及测试环境

2.1.3.2 生产环境

2.1.4 网络要求

TiDB 作为开源分布式 NewSQL 数据库,其正常运行需要网络环境提供如下的网络端口配置要求,管理员可根据实际环境中 TiDB 组件部署的方案,在网络侧和主机侧开放相关端口:

组件

默认端口

说明

TiDB

4000

应用及 DBA 工具访问通信端口

TiDB

10080

TiDB 状态信息上报通信端口

TiKV

20160

TiKV 通信端口

TiKV

20180

TiKV 状态信息上报通信端口

PD

2379

提供 TiDB 和 PD 通信端口

PD

2380

PD 集群节点间通信端口

TiFlash

9000

TiFlash TCP 服务端口

TiFlash

8123

TiFlash HTTP 服务端口

TiFlash

3930

TiFlash RAFT 服务和 Coprocessor 服务端口

TiFlash

20170

TiFlash Proxy 服务端口

TiFlash

20292

Prometheus 拉取 TiFlash Proxy metrics 端口

TiFlash

8234

Prometheus 拉取 TiFlash metrics 端口

Pump

8250

Pump 通信端口

Drainer

8249

Drainer 通信端口

CDC

8300

CDC 通信接口

Prometheus

9090

Prometheus 服务通信端口

Node_exporter

9100

TiDB 集群每个节点的系统信息上报通信端口

Blackbox_exporter

9115

Blackbox_exporter 通信端口,用于 TiDB 集群端口监控

Grafana

3000

Web 监控服务对外服务和客户端(浏览器)访问端口

Alertmanager

9093

告警 web 服务端口

Alertmanager

9094

告警通信端口

2.2 环境与系统配置

2.2.1 主机名

要求各服务器的主机名必须是唯一的,不能重复。

2.2.2 服务器的root密码

要求各服务器的root密码必须一样,且允许root用户能被直连及远程连接服务器。

2.2.3 确保能创建用户

后面安装tidb时会自动创建一个用户名为tidb的用户,因此需要确保能正常创建用户。

① 查看下列文件的属性,确保没有输出i属性

lsattr /etc/passwd

lsattr /etc/group

lsattr /etc/shadow

lsattr /etc/gshadow

如果有输出包含i的内容,如:

----ia---------- /etc/passwd

需要取消i属性:

chattr +ia /etc/passwd

chattr +ia /etc/group

chattr +ia /etc/shadow

chattr +ia /etc/gshadow

② 如果操作系统有限制,不让普通用户远程连接,需要修改/etc/ssh/sshd_config 文件,在AllowUsers 后添加tidb,示例:

AllowUsers  root tidb

#重启ssh

service sshd restart

2.2.4 在TiKV部署目标机器上添加数据盘EXT4文件系统挂载参数

生产环境部署,建议使用 EXT4 类型文件系统的 NVME 类型的 SSD 磁盘存储 TiKV 数据文件。这个配置方案为最佳实施方案,其可靠性、安全性、稳定性已经在大量线上场景中得到证实。

使用 root 用户登录目标机器,将部署目标机器数据盘格式化成 ext4 文件系统,挂载时添加 nodelalloc 和 noatime 挂载参数。nodelalloc 是必选参数,否则 TiUP 安装时检测无法通过;noatime 是可选建议参数。

以 /dev/nvme0n1 数据盘为例,具体操作步骤如下:

1.查看数据盘

fdisk -l

Disk /dev/sdb: 100 GB

2.创建分区

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

3.格式化文件系统

mkfs.ext4 /dev/sdb1

4.查看数据盘分区 UUID。

[root@TiKV-01 ~]# lsblk  -f

NAME    FSTYPE      LABEL UUID                                   MOUNTPOINT

sda

├─sda1          xfs               277245ad-186f-48b2-875c-e6a6bd0a5f15   /boot

├─sda2          LVM2_member       Ybd6tt-EU1m-S8uR-yWyd-HcVM-9sQf-Jpivlc

│ ├─centos-root xfs               f48033ba-6022-4789-be8e-36e96b0f5772   /

│ └─centos-swap swap              3ee6432f-45d2-44c6-97dd-0607b15150b4   [SWAP]

└─sda3          LVM2_member       diClbq-qgiT-xadx-yNkG-iI9q-HSN3-w279Q3

└─centos-root xfs               f48033ba-6022-4789-be8e-36e96b0f5772   /

sdb

└─sdb1          ext4              3ebc8d3d-4e63-4deb-ada4-c9ff91c1c710

本例中 sdb1 的 UUID 为 3ebc8d3d-4e63-4deb-ada4-c9ff91c1c710。

5.编辑 /etc/fstab 文件,添加 nodelalloc 挂载参数。

vi /etc/fstab

UUID=3ebc8d3d-4e63-4deb-ada4-c9ff91c1c710 /data ext4 defaults,nodelalloc,noatime 0 2

  1. 挂载数据盘

mkdir /data && \

mount -a

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

mount -t ext4

/dev/sdb1 on /data type ext4 (rw,noatime,nodelalloc,data=ordered)

2.2.5 检测及关闭系统swap

TiDB 运行需要有足够的内存,并且不建议使用 swap 作为内存不足的缓冲,这会降低性能。因此建议永久关闭系统 swap,并且不要使用 swapoff -a 方式关闭,否则重启机器后该操作会失效。

建议执行以下命令关闭系统 swap:

echo "vm.swappiness = 0">> /etc/sysctl.conf

swapoff -a

sysctl -p

2.2.6 检测及关闭目标部署机器的防火墙

因为在 TiDB 集群中,需要将节点间的访问端口打通才可以保证读写请求、数据心跳等信息的正常的传输。在普遍线上场景中,数据库到业务服务和数据库节点的网络联通都是在安全域内完成数据交互。如果没有特殊安全的要求,建议将目标节点的防火墙进行关闭。否则建议按照端口使用规则,将端口信息配置到防火墙服务的白名单中。

systemctl stop firewalld

systemctl disable firewalld

2.2.7 检测及安装NTP服务

TiDB 是一套分布式数据库系统,需要节点间保证时间的同步,从而确保 ACID 模型的事务线性一致性。目前解决授时的普遍方案是采用 NTP 服务,可以通过互联网中的 pool.ntp.org 授时服务来保证节点的时间同步,也可以使用离线环境自己搭建的 NTP 服务来解决授时。

配置ntp时钟同步可参考配置ntp时钟同步(tar包方式安装ntp)_雅冰石的专栏-CSDN博客_ntp tar包安装
若已有服务端环境,则只需在客户端安装下ntp,并执行下‘2.3 配置客户端’即可。

2.2.8 配置操作系统优化参数

在生产系统的 TiDB 中,建议对操作系统进行如下的配置优化:

  • 关闭透明大页(即 Transparent Huge Pages,缩写为 THP)。
  • 将存储介质的 I/O 调度器设置为 noop。
  • 为调整 CPU 频率的 cpufreq 模块选用 performance 模式。

2.2.8.1 使用tuned配置系统优化参数

2.2.8.1.1 查看磁盘的唯一标识ID_SERIAL

udevadm info --name=/dev/sdb | grep ID_SERIAL

E: ID_SERIAL=36d0946606d79f90025f3e09a0c1f9e81

E: ID_SERIAL_SHORT=6d0946606d79f90025f3e09a0c1f9e81

--注意

如果多个磁盘都分配了数据目录,需要多次执行以上命令,记录所有磁盘各自的唯一标识。

2.2.8.1.2 创建新的tuned策略

mkdir /etc/tuned/balanced-tidb-optimal/

vi /etc/tuned/balanced-tidb-optimal/tuned.conf

[main]

include=balanced

[cpu]

governor=performance

[vm]

transparent_hugepages=never

[disk]

devices_udev_regex=(ID_SERIAL=36d0946606d79f90025f3e09a0c1fc035)|(ID_SERIAL=36d0946606d79f90025f3e09a0c1f9e81)

elevator=noop

2.2.8.1.3 应用新调整的配置文件

tuned-adm profile balanced-tidb-optimal

2.2.8.1.4 验证

① 验证透明大页的状态。

cat /sys/kernel/mm/transparent_hugepage/enabled

always madvise [never]

② 验证数据目录所在磁盘的 I/O 调度器。

cat /sys/block/sd[bc]/queue/scheduler

[noop] deadline cfq

[noop] deadline cfq

③ 查看 cpufreq 模块选用的节能策略。

cpupower frequency-info --policy

analyzing CPU 0:

current policy: frequency should be within 1.20 GHz and 3.10 GHz.

The governor "performance" may decide which speed to use within this range.

如果是虚拟机或者云主机,则不需要调整,命令输出通常为 Unable to determine current policy。

2.2.8.2 修改sysctl参数

echo "fs.file-max = 1000000">> /etc/sysctl.conf

echo "net.core.somaxconn = 32768">> /etc/sysctl.conf

echo "net.ipv4.tcp_tw_recycle = 0">> /etc/sysctl.conf

echo "net.ipv4.tcp_syncookies = 0">> /etc/sysctl.conf

echo "vm.overcommit_memory = 1">> /etc/sysctl.conf

sysctl -p

2.2.8.3 配置用户的 limits.conf 文件

cat << EOF >>/etc/security/limits.conf

tidb           soft    nofile          1000000

tidb           hard    nofile          1000000

tidb           soft    stack          32768

tidb           hard    stack          32768

EOF

2.2.9 安装numactl工具

在在线环境中,由于硬件配置通常高于要求,为了更好地规划硬件资源,可以在一台机器上部署多个 TiDB 或 TiKV 实例。在这种情况下,您可以使用 NUMA 工具来防止可能导致性能下降的 CPU 资源竞争。

yum -y install numactl

三 安装与启动

这里在PD服务器上使用TiUP部署TiDB 集群。

3.1 安装tiup

cd /usr/local

mkdir tidb

将离线包上传到中控机/usr/local/tidb下,执行以下命令安装 TiUP 组件:

tar xzvf tidb-community-server-v5.2.2-linux-amd64.tar.gz

sh tidb-community-server-v5.2.2-linux-amd64/local_install.sh

source /root/.bash_profile

输入tiup --help能看到数据库参数,表示安装成功。

3.2 在tiup服务器上安装sshpass

yum install sshpass -y

输入sshpass --help进行验证

3.3 初始化集群拓扑文件

vi /usr/local/tidb/topology.yaml

新增:

global:user: "tidb"ssh_port: 22deploy_dir: "/tidb-deploy"data_dir: "/tidb-data"
monitored:node_exporter_port: 9100blackbox_exporter_port: 9115
server_configs: tidb:max-server-connections: 0log.slow-threshold: 300binlog.enable: falsebinlog.ignore-error: falsetikv:    readpool.storage.use-unified-pool: falsereadpool.coprocessor.use-unified-pool: truepd:schedule.leader-schedule-limit: 4schedule.region-schedule-limit: 2048schedule.replica-schedule-limit: 64tiflash: profiles.default.max_memory_usage: 0profiles.default.max_memory_usage_for_all_queries: 0
pd_servers:- host: 192.168.119.202
tidb_servers:- host: 192.168.119.200
tikv_servers:- host: 192.168.119.203deploy_dir: "/data/tidb-deploy/tikv-20160"data_dir: "/data/tidb-data/tikv-20160"log_dir: "/data/tidb-deploy/tikv-20160/log"- host: 192.168.119.204deploy_dir: "/data/tidb-deploy/tikv-20160"data_dir: "/data/tidb-data/tikv-20160"log_dir: "/data/tidb-deploy/tikv-20160/log"- host: 192.168.119.208deploy_dir: "/data/tidb-deploy/tikv-20160"data_dir: "/data/tidb-data/tikv-20160"log_dir: "/data/tidb-deploy/tikv-20160/log"
tiflash_servers: - host: 192.168.119.211
cdc_servers:- host: 192.168.119.209
monitoring_servers:- host: 192.168.119.202
grafana_servers:- host: 192.168.119.202
alertmanager_servers:- host: 192.168.119.202

/*

参数含义可参考通过 TiUP 部署 TiDB 集群的拓扑文件配置 | PingCAP Docs

log.slow-threshold: 300

单位是毫秒,当查询大于这个值,就会当做是一个慢查询,输出到慢查询日志。

*/

3.4 部署tidb集群

#检查和自动修复集群存在的潜在风险

tiup cluster check /usr/local/tidb/topology.yaml --apply --user root -p

#部署tidb集群

tiup cluster deploy MyTiDB v5.2.2 /usr/local/tidb/topology.yaml --user root -p

这里的MyTiDB是可自定义的集群名称

#查看tiup管理的集群情况

[root@PD ~]# tiup cluster list

Starting component `cluster`: /root/.tiup/components/cluster/v1.6.1/tiup-cluster list

Name    User  Version  Path                                         PrivateKey

----    ----  -------  ----                                         ----------

MyTiDB  tidb  v5.2.2   /root/.tiup/storage/cluster/clusters/MyTiDB  /root/.tiup/storage/cluster/clusters/MyTiDB/ssh/id_rsa

3.5 启动集群

tiup cluster start MyTiDB

3.6 验证集群状态

3.6.1 通过tiup检查集群状态

tiup cluster display MyTiDB

各节点 Status 状态信息为 Up 说明集群状态正常。

3.6.2 通过TiDB Dashboard 检查 TiDB 集群状态

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

示例:

四 连接tidb数据库

mysql -u root -h ${tidb_server_host_IP_address} -P 4000

#查看版本

MySQL [(none)]> select tidb_version()\G;

*************************** 1. row ***************************

tidb_version(): Release Version: v5.2.2

Edition: Community

Git Commit Hash: da1c21fd45a4ea5900ac16d2f4a248143f378d18

Git Branch: heads/refs/tags/v5.2.2

UTC Build Time: 2021-10-20 06:08:33

GoVersion: go1.16.4

Race Enabled: false

TiKV Min Version: v3.0.0-60965b006877ca7234adaced7890d7b029ed1306

Check Table Before Drop: false

1 row in set (0.003 sec)

#查看 TiKV store 状态、store_id、存储情况以及启动时间

MySQL [baidd]> select STORE_ID,ADDRESS,STORE_STATE,STORE_STATE_NAME,CAPACITY,AVAILABLE,UPTIME from INFORMATION_SCHEMA.TIKV_STORE_STATUS;

+----------+-----------------------+-------------+------------------+----------+-----------+---------------------+

| STORE_ID | ADDRESS               | STORE_STATE | STORE_STATE_NAME | CAPACITY | AVAILABLE | UPTIME              |

+----------+-----------------------+-------------+------------------+----------+-----------+---------------------+

|        1 | 192.168.119.208:20160 |           0 | Up               | 98.3GiB  | 87.75GiB  | 20h15m13.673247642s |

|        7 | 192.168.119.204:20160 |           0 | Up               | 98.3GiB  | 87.75GiB  | 20h12m58.318900937s |

|        2 | 192.168.119.203:20160 |           0 | Up               | 98.3GiB  | 87.75GiB  | 20h14m52.293411352s |

|      106 | 192.168.119.211:3930  |           0 | Up               | 94.98GiB | 94.98GiB  | 20h14m50.074671562s |

+----------+-----------------------+-------------+------------------+----------+-----------+---------------------+

--本篇文章主要参考了

TiDB 简介 | PingCAP Docs

在开发环境使用 TiUP安装TiDB集群相关推荐

  1. 在线安装TIDB集群

    在线安装TIDB集群  在线安装TiDB集群 服务器准备 说明:TiDB8需要能够连接外网,以便下载各类安装包 TiDB4非必须,但最好是有一台,因为后续测试Mysql数据同步或者进行性能比较时,都要 ...

  2. 通过 TiUP 部署 TiDB 集群的拓扑文件配置

    通过 TiUP 部署或扩容 TiDB 集群时,需要提供一份拓扑文件(示例)来描述集群拓扑. 同样,修改集群配置也是通过编辑拓扑文件来实现的,区别在于修改配置时仅允许修改部分字段.本文档介绍拓扑文件的各 ...

  3. Centos7配置TiDB集群

    一:各模块属性 模块名称 状态 建议实例数 功能 负载均衡组件 TiDB 无状态 2 接收SQL请求,处理SQL相关逻辑,并通过PB找到存储数据的TiKV地址 LVS.HAProxy.F5 PB 集群 ...

  4. 从零部署TiDB集群

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | yangyidba 来源 | 公众号「yang ...

  5. 在华为 Kylin V10 SP1操作系统,HUAWEI,Kunpeng 920 CPU(4Cores)单机上模拟部署生产环境TiDB集群...

    作者:陈麒 原文来源: https://tidb.net/blog/0cacc3df TiDB 集群部署 在单机上模拟部署生产环境集群 适用场景:希望用单台 Linux 服务器,体验 TiDB 最小的 ...

  6. tidb集群安装部署

    tidb集群安装部署 部署架构图 一.安装tiup curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/inst ...

  7. Ambari在离线环境中安装Hadoop集群

    2019独角兽企业重金招聘Python工程师标准>>> http://www.hackbase.com/article-973-1.html (WJW)Ambari在离线环境中安装H ...

  8. Centos7 安装Docker(v2021 version 20.10.5) 并通过docker-compose运行TiDB集群

    Centos7 安装Docker(v2021 version 20.10.5) 卸载docker旧版 注意:新系统不用卸载 yum remove docker \docker-client \dock ...

  9. Ubuntu安装MPICH3集群计算环境

    本文是在Ubuntu15.10麒麟版中安装过程的实录. 准备工作: 1.设置root用户密码(命令:sudo passwd root) 2.正确设置各个节点IP(各个节点应该使用静态IP) 3.正确设 ...

最新文章

  1. php扇形分布图,PHP制作3D扇形统计图以及对图片进行缩放操作实例
  2. linux软件包管理详解
  3. RuntimeError: ‘cryptography‘ package is required for sha256_password or caching_sha2_password auth m
  4. Linux 与 Unix 到底有什么不同?
  5. 音频光端机简单故障处理
  6. C++网络编程快速入门(三):阻塞与非阻塞式调用网络通信函数
  7. 【Siddhi】Siddhi 组件架构
  8. 检查java_如何检查Java版本?
  9. (转)EOSIO开发(四)- nodeos、keosd与cleos
  10. TinkPad E40 CentOS 6.5 无线网卡驱动 RTL8191SEvB 安装
  11. TensorFlow学习笔记之 PReLU激活函数原理和代码
  12. 2021春招美团算法笔试题
  13. 睡眠伤害计算机硬件吗,电脑高手告诉您,电脑不关机只睡眠到底伤不伤硬盘?...
  14. python docx 图片_详解用 python-docx 创建浮动图片
  15. 在苹果手机上实现虹膜识别(通过改装实现)
  16. react结合rust编写wasm图像处理
  17. Tuner及工作原理介绍
  18. idea打不开eclipse项目的问题
  19. org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask
  20. tiny4412 裸机程序 九、串口排查驱动原因及字符图片显示【转】

热门文章

  1. element-ui 使用自定义复选框
  2. (学习笔记) SPI通信协议
  3. Powershell免杀系列(二)
  4. FL Studio音频混音教程
  5. 概率论笔记—一维随机变量及其分布
  6. LTE学习:PHICH(二)
  7. 精简压缩优化 Docker 镜像几百MB
  8. c语言中的用户标识符是什么,C语言中用户标识符是什么?
  9. 国密算法SM2实现 vue+C#
  10. image “pyimage2“ doesn‘t exist