作者: G7 尹裕皓原文来源:https://tidb.net/blog/c45d8413
【是否原创】是
【首发渠道】TiDB 社区
【正文】
本文档参考官方文档和官方视频,并结合实际自己部署实验中遇到的情况整理而来本文用于记录 TiDB 的部署
以前的标题不具有通用性,所以改一个名字,本文档适用于目前所有版本的 TiDB 集群安装 – 2022.6.27
准备工作
系统要求:
请提前确认系统版本是否符合要求
具体配置要求详见官方文档:https://www.bookstack.cn/read/tidb-5.0-zh/hardware-and-software-requirements.md
个人测试至少 3 个节点
测试开发服务器至少 4 个节点,如需 tiflash 和 ticdc 功能建议 6 个节点
生产至少需要 9 个节点,如需 tiflash 和 ticdc 功能则至少 13 个节点
挂载磁盘
本步骤的前提为有额外的磁盘可以挂载。生产库和有条件的测试库需按本步骤设置,没有额外磁盘的测试机则跳过本步
使用 root 用户登录目标机器,将部署目标机器数据盘格式化成 ext4 文件系统,挂载时添加 nodelalloc 和 noatime 挂载参数。nodelalloc 是必选参数,否则 TiUP 安装时检测无法通过;noatime 是可选建议参数。
注意:
使用 lsblk 命令查看分区的设备号:对于 nvme 磁盘,生成的分区设备号一般为 nvme0n1p1;对于普通磁盘(例如 /dev/sdb),生成的的分区设备号一般为 sdb1。
如果你的数据盘已经格式化成 ext4 并挂载了磁盘,可先执行 umount /dev/nvme0n1p1 命令卸载,从编辑 /etc/fstab 文件步骤开始执行,添加挂载参数重新挂载即可。
以 /dev/nvme0n1p1 数据盘为例,具体操作步骤如下:
查看现有数据盘
创建分区
格式化文件系统
查看数据盘分区 UUID
本例中 nvme0n1p1 的 UUID 为 c51eb23b-195c-4061-92a9-3fad812cc12f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 ext4 237b634b-a565-477b-8371-6dff0c41f5ab /boot
├─sda2 swap f414c5c0-f823-4bb1-8fdf-e531173a72ed
└─sda3 ext4 547909c1-398d-4696-94c6-03e43e317b60 /
sr0
nvme0n1
└─nvme0n1p1 ext4 c51eb23b-195c-4061-92a9-3fad812cc12f
复制代码
编辑 /etc/fstab 文件,添加 nodelalloc 挂载参数
挂载数据盘
执行以下命令,如果文件系统为 ext4,并且挂载参数中包含 nodelalloc,则表示已生效
关闭 swap
echo "vm.swappiness = 0">> /etc/sysctl.conf
swapoff -a && swapon -a
sysctl -p
复制代码
关闭防火墙
关闭防火墙服务
关闭防火墙自启动
检查及安装 NTP 服务
centos7 rhel7 服务器有 chronyd 服务,会自动同步 ntp 信息,跳过本设置步骤
TiDB 是一套分布式数据库系统,需要节点间保证时间的同步,从而确保 ACID 模型的事务线性一致性
执行以下命令,如果输出 running 表示 NTP 服务正在运行:
执行 ntpstat 命令检测是否与 NTP 服务器同步:
检查和配置操作系统优化参数
在生产系统的 TiDB 中,建议对操作系统进行如下的配置优化:
关闭透明大页(即 Transparent Huge Pages,缩写为 THP)。数据库的内存访问模式往往是稀疏的而非连续的。当高阶内存碎片化比较严重时,分配 THP 页面会出现较高的延迟。
将存储介质的 I/O 调度器设置为 noop。对于高速 SSD 存储介质,内核的 I/O 调度操作会导致性能损失。将调度器设置为 noop 后,内核不做任何操作,直接将 I/O 请求下发给硬件,以获取更好的性能。同时,noop 调度器也有较好的普适性。
为调整 CPU 频率的 cpufreq 模块选用 performance 模式。将 CPU 频率固定在其支持的最高运行频率上,不进行动态调节,可获取最佳的性能。
执行 tuned-adm list 命令查看当前操作系统的 tuned 策略。
得到类似下方结果:
\==Current active profile: balanced== 表示当前操作系统的 tuned 策略使用 balanced,建议在当前策略的基础上添加操作系统优化配置。
获取磁盘唯一标识 ID_SERIAL
有多个盘需执行多次,下方以 sdb 为例
获取磁盘挂载信息使用 fdisk -ls
创建新的 tuned 策略
填写如下内容:
应用新的 tuned 策略
执行以下命令验证透明大页的状态
执行以下命令验证数据目录所在磁盘的 I/O 调度器
磁盘也可能是 vd[bc],需自行用 fdisk -ls 确认
cat /sys/block/sd[bc]/queue/scheduler
复制代码
结果应为:
[noop] deadline cfq
[noop] deadline cfq
复制代码
执行以下命令查看 cpufreq 模块选用的节能策略
执行以下命令修改 sysctl 参数
执行以下命令配置用户的 limits.conf 文件
手动配置 SSH 互信及 sudo 免密码
以 root 用户依次登录到所有部署目标机器创建 tidb 用户并设置登录密码
执行以下命令,将 tidb ALL=(ALL) NOPASSWD: ALL 添加到文件末尾,即配置好 sudo 免密码
在中控机 == 切换到 tidb 用户 ==,生成 ssh-keygen 并将公钥复制到其他部署节点
10.0.1.1 为其他部署节点 ip,请自行替换,并依次将公钥复制到所有节点
ssh-copy-id -i ~/.ssh/id_rsa.pub 10.0.1.1
复制代码
验证,以 ==tidb== 用户登录中控机,通过 ssh 的方式登录目标机器 IP。如果不需要输入密码并登录成功,即表示 SSH 互信配置成功 ; 如需要输入密码则表示没有配置成功,请自行排查原因
安装 numactl 工具
本段主要介绍如果安装 NUMA 工具。在生产环境中,因为硬件机器配置往往高于需求,为了更合理规划资源,会考虑单机多实例部署 TiDB 或者 TiKV。NUMA 绑核工具的使用,主要为了防止 CPU 资源的争抢,引发性能衰退。
注意:
NUMA 绑核是用来隔离 CPU 资源的一种方法,适合高配置物理机环境部署多实例使用。
通过 tiup cluster deploy 完成部署操作,就可以通过 exec 命令来进行集群级别管理工作。
本方法需要先安装 tiup 组件,如使用本方法,请先跳转到下一步,安装完 tiup 后再回来执行本步
将 tidb-test 集群所有目标主机通过 sudo 权限执行安装命令
tiup cluster exec tidb-test --sudo --command "yum -y install numactl"
复制代码
推荐使用第一种方法,不需要手动到各节点,只需要在中控机一条命令即可
部署 TiUP 组件
使用普通用户登录中控机,以 tidb 用户为例,后续安装 TiUP 及集群管理操作均通过该用户完成
安装 tiup 工具
设置环境变量
tiup 工具安装好以后会有如下提示:
/home/tidb/.bash_profile has been modified to add tiup to PATH
open a new terminal or source /home/tidb/.bash_profile to use it
复制代码
根据提示 source 生效环境变量即可:
source /home/tidb/.bash_profile
复制代码
确认 TiUP 工具是否安装:
得到如下结果即为安装成功:
~/.tiup/bin/tiup
复制代码
部署 playground 单机测试环境
本步骤为单机,仅用于了解 tidb 的架构和简单使用
安装开发|测试|生产环境请跳过本步
执行安装命令:
得到CLUSTER START SUCCESSFULLY
的结果即表示安装成功,示例如下:
Waiting for tiflash instances ready
127.0.0.1:3930 ... Done
CLUSTER START SUCCESSFULLY, Enjoy it ^-^
To connect TiDB: mysql --comments --host 127.0.0.1 --port 4000 -u root -p (no password)
To view the dashboard: http://127.0.0.1:2379/dashboard
PD client endpoints: [127.0.0.1:2379]
To view the Prometheus: http://127.0.0.1:9090
To view the Grafana: http://127.0.0.1:3000
tiflash quit: signal: killed
Logging debug to /home/tidb/.tiup/data/SqQnv40/tiflash-0/log/tiflash.log
Logging errors to /home/tidb/.tiup/data/SqQnv40/tiflash-0/log/tiflash_error.log
复制代码
此时需保留本窗口(不能退出),另开新窗口连接 tidb 实例,可按照安装完成后的提示实验所有功能
实验结束后结束掉部署窗口进程即可 (control + c)
登录方式:
默认无密码
tiup client
or
mysql --host 127.0.0.1 --port 4000 -u root -p
复制代码
部署 TiDB 集群
本步骤均在中控机的 tidb 账号下操作
安装 TiUP cluster 组件
安装 TiUP cluster 组件
安装完成后会得到 tiup cluster 的相关命令提示
2. 如果已经安装,则更新 TiUP cluster 组件至最新版本:
tiup update --self && tiup update cluster
复制代码
预期输出 “Update successfully!”
如需查看当前 cluster 版本,则执行如下语句
tiup --binary cluster
初始化集群拓扑文件
使用 tiup 工具生成拓扑文件
注意:
混合部署场景也可以使用 tiup cluster template –full > topology.yaml 生成的建议拓扑模板,跨机房部署场景可以使用 tiup cluster template –multi-dc > topology.yaml 生成的建议拓扑模板。
文件生成以后编辑对应节点信息即可,本步骤生成的为一个模板文档,建议直接复制第 2 步的信息来新建文档。
2. 编辑拓扑文档
填入以下内容
各节点信息请根据实际情况调整
本拓扑不包含 tiflsh 和 ticdc,如需要请自行添加节点
global:
user: "tidb"
ssh_port: 22
deploy_dir: "/tidb/tidb-deploy"
data_dir: "/tidb/tidb-data"
pd_servers:
- host: 172.24.74.67
- host: 172.24.74.68
- host: 172.24.74.69
tidb_servers:
- host: 172.24.74.67
- host: 172.24.74.68
- host: 172.24.74.69
tikv_servers:
- host: 172.24.74.67
- host: 172.24.74.68
- host: 172.24.74.69
monitoring_servers:
- host: 172.24.74.67
grafana_servers:
- host: 172.24.74.68
alertmanager_servers:
- host: 172.24.74.68
复制代码
检查和自动修复集群存在的潜在风险
请保证所有 Fail 项目修复后再进行下一步操作
tiup cluster check ./topology.yaml --user tidb
tiup cluster check ./topology.yaml --apply --user tidb
复制代码
安装集群
执行安装命令
通过 TiUP cluster 部署的集群名称为 tidb-test
可以通过执行 tiup list tidb
来查看 TiUP 支持的最新可用版本
tiup cluster deploy tidb-test v5.0.0 ./topology.yaml --user tidb
复制代码
预期日志结尾输出会有 Cluster
tidb-testdeployed successfully
关键词,表示部署成功
查看集群状态
可看到目前已安装的集群信息
检查部署的 TiDB 集群情况
确认所有节点,目前的状态应该都是 Down 或者 N/A,类似下方信息
ID Role Host Ports OS/Arch Status Data Dir Deploy Dir
-- ---- ---- ----- ------- ------ -------- ----------
172.24.74.68:9093 alertmanager 172.24.74.68 9093/9094 linux/x86_64 Down /tidb/tidb-data/alertmanager-9093 /tidb/tidb-deploy/alertmanager-9093
172.24.74.68:3000 grafana 172.24.74.68 3000 linux/x86_64 Down - /tidb/tidb-deploy/grafana-3000
172.24.74.67:2379 pd 172.24.74.67 2379/2380 linux/x86_64 Down /tidb/tidb-data/pd-2379 /tidb/tidb-deploy/pd-2379
172.24.74.68:2379 pd 172.24.74.68 2379/2380 linux/x86_64 Down /tidb/tidb-data/pd-2379 /tidb/tidb-deploy/pd-2379
172.24.74.69:2379 pd 172.24.74.69 2379/2380 linux/x86_64 Down /tidb/tidb-data/pd-2379 /tidb/tidb-deploy/pd-2379
172.24.74.67:9090 prometheus 172.24.74.67 9090 linux/x86_64 Down /tidb/tidb-data/prometheus-9090 /tidb/tidb-deploy/prometheus-9090
172.24.74.67:4000 tidb 172.24.74.67 4000/10080 linux/x86_64 Down - /tidb/tidb-deploy/tidb-4000
172.24.74.68:4000 tidb 172.24.74.68 4000/10080 linux/x86_64 Down - /tidb/tidb-deploy/tidb-4000
172.24.74.69:4000 tidb 172.24.74.69 4000/10080 linux/x86_64 Down - /tidb/tidb-deploy/tidb-4000
172.24.74.67:20160 tikv 172.24.74.67 20160/20180 linux/x86_64 N/A /tidb/tidb-data/tikv-20160 /tidb/tidb-deploy/tikv-20160
172.24.74.68:20160 tikv 172.24.74.68 20160/20180 linux/x86_64 N/A /tidb/tidb-data/tikv-20160 /tidb/tidb-deploy/tikv-20160
172.24.74.69:20160 tikv 172.24.74.69 20160/20180 linux/x86_64 N/A /tidb/tidb-data/tikv-20160 /tidb/tidb-deploy/tikv-20160
Total nodes: 12
复制代码
启动 tidb 集群
预期结果输出 Started cluster tidb-test
successfully 标志启动成功
再次检查 tidb 集群状态
预期结果应所有节点都为Up
状态
到本步骤即 tidb 集群已安装完成,现在可通过任意 tidb-server 节点连接数据库开始使用,如:
默认无密码,需首次进入后设置
扩容节点
扩容前请按照【准备工作】调试好新节点的各项配置
扩容 tidb,tikv,pd,ticdc 节点
在确保新增节点已完成基础环境配置后,开始在中控机编写扩容拓扑文件
文件名可自定义
填写如下内容:(这里包含了所有信息,需要新增哪种节点复制哪种节点信息即可)
# tidb
tidb_servers:
- host: 172.24.74.71
ssh_port: 22
port: 4000
status_port: 10080
deploy_dir: /data/deploy/install/deploy/tidb-4000
log_dir: /data/deploy/install/log/tidb-4000
# tikv
tikv_servers:
- host:172.24.74.71
ssh_port:22
port:20160
status_port:20180
deploy_dir:/data/deploy/install/deploy/tikv-20160
data_dir:/data/deploy/install/data/tikv-20160
log_dir:/data/deploy/install/log/tikv-20160
# pd
pd_servers:
- host:172.24.74.71
ssh_port:22
name: pd-1
client_port:2379
peer_port:2380
deploy_dir:/data/deploy/install/deploy/pd-2379
data_dir:/data/deploy/install/data/pd-2379
log_dir:/data/deploy/install/log/pd-2379
#ticdc
cdc_servers:
- host:172.24.74.71
- host:172.24.74.69
复制代码
实验得知:仅 host 为必填项,其余参数均可继承全局参数
ticdc 节点在测试环境可 1 个节点,在生产环境应至少 2 个节点
执行扩容命令
扩容成功后查看集群状态,确保集群状态正常
扩容 tiflash 节点
tiflash 仅支持 tidb5.0+,如版本不匹配请先升级 tidb 集群
开启 pd 的 Placement Rules 功能(如已开启请忽略)
172.24.74.71:2379 是任意 pd 节点的 ip 和端口
在确保新增节点已完成基础环境配置后,开始在中控机编写扩容拓扑文件
文件名可自定义
填写如下内容:
tiflash_servers:
- host:172.24.74.71
复制代码
在测试环境可 1 个节点,在生产环境应至少 2 个节点
执行扩容命令
扩容成功后查看集群状态,确保集群状态正常
缩容节点
缩容 tidb,tikv,pd,ticdc 节点
确认缩容节点的 id
得到集群信息
Starting component `cluster`: /home/tidb/.tiup/components/cluster/v1.7.0/tiup-cluster display tidb-test
Cluster type: tidb
Cluster name: tidb-test
Cluster version: v5.0.0
Deploy user: tidb
SSH type: builtin
Dashboard URL: http://172.24.74.68:2379/dashboard
ID Role Host Ports OS/Arch Status Data Dir Deploy Dir
-- ---- ---- ----- ------- ------ -------- ----------
172.24.74.68:9093 alertmanager 172.24.74.68 9093/9094 linux/x86_64 Up /tidb/tidb-data/alertmanager-9093 /tidb/tidb-deploy/alertmanager-9093
172.24.74.71:8300 cdc 172.24.74.71 8300 linux/x86_64 Up /tidb/tidb-data/cdc-8300 /tidb/tidb-deploy/cdc-8300
172.24.74.68:3000 grafana 172.24.74.68 3000 linux/x86_64 Up - /tidb/tidb-deploy/grafana-3000
172.24.74.67:2379 pd 172.24.74.67 2379/2380 linux/x86_64 Up|L /tidb/tidb-data/pd-2379 /tidb/tidb-deploy/pd-2379
172.24.74.68:2379 pd 172.24.74.68 2379/2380 linux/x86_64 Up|UI /tidb/tidb-data/pd-2379 /tidb/tidb-deploy/pd-2379
172.24.74.69:2379 pd 172.24.74.69 2379/2380 linux/x86_64 Up /tidb/tidb-data/pd-2379 /tidb/tidb-deploy/pd-2379
172.24.74.71:2379 pd 172.24.74.71 2379/2380 linux/x86_64 Up /tidb/tidb-data/pd-2379 /tidb/tidb-deploy/pd-2379
172.24.74.67:9090 prometheus 172.24.74.67 9090 linux/x86_64 Up /tidb/tidb-data/prometheus-9090 /tidb/tidb-deploy/prometheus-9090
172.24.74.67:4000 tidb 172.24.74.67 4000/10080 linux/x86_64 Up - /tidb/tidb-deploy/tidb-4000
172.24.74.68:4000 tidb 172.24.74.68 4000/10080 linux/x86_64 Up - /tidb/tidb-deploy/tidb-4000
172.24.74.69:4000 tidb 172.24.74.69 4000/10080 linux/x86_64 Up - /tidb/tidb-deploy/tidb-4000
172.24.74.71:4000 tidb 172.24.74.71 4000/10080 linux/x86_64 Up - /tidb/tidb-deploy/tidb-4000
172.24.74.71:9000 tiflash 172.24.74.71 9000/8123/3930/20170/20292/8234 linux/x86_64 Down /tidb/tidb-data/tiflash-9000 /tidb/tidb-deploy/tiflash-9000
172.24.74.67:20160 tikv 172.24.74.67 20160/20180 linux/x86_64 Up /tidb/tidb-data/tikv-20160 /tidb/tidb-deploy/tikv-20160
172.24.74.68:20160 tikv 172.24.74.68 20160/20180 linux/x86_64 Up /tidb/tidb-data/tikv-20160 /tidb/tidb-deploy/tikv-20160
172.24.74.69:20160 tikv 172.24.74.69 20160/20180 linux/x86_64 Up /tidb/tidb-data/tikv-20160 /tidb/tidb-deploy/tikv-20160
172.24.74.71:20160 tikv 172.24.74.71 20160/20180 linux/x86_64 Disconnected /tidb/tidb-data/tikv-20160 /tidb/tidb-deploy/tikv-20160
Total nodes: 17
复制代码
例如本次要缩容 ticdc 节点,获取到的 id 就是 172.24.74.71:8300
执行缩容命令
缩容完成后检查集群状态
缩容 tiflash 节点
进入 tidb 客户端,删除 tiflash 的副本 (副本数需小于剩余节点数)
tiflash 的同步需要手动指定,所以大部分情况只会同步需要的部分表,同步方法详见 tiflash 的部署
本次以 test.yyh 为例
查看 tiflash 副本删除进度,确认所有副本都删除成功(无信息即为全部成功)
所有副本删除完成后,退回操作系统,执行缩容命令
得到 id 后通过 id 执行缩容
tiup cluster scale-in tidb-test --node 172.24.74.69:9000
复制代码
最后再查看集群状态,确保状态正常
升级 TiDB 集群(在线升级)
注意:
升级后版本无法回退,请慎重升级!
注意:
升级过程会对集群性能造成影响,请在最闲时操作!
注意:
在升级的过程中不要执行 DDL 请求,否则可能会出现行为未定义的问题。
升级 tiup
升级 tiup cluster
检查配置文件是否符合新版本要求
没有改过默认参数则不需要调整,可跳过本步骤
如 4.0 升级到 5.0, 有些自己设置的参数可能会有部分参数不支持新版本,详见官方文档
检查 region 状态,确保所有状态正常
如果全部正常将得到All regions are healthy.
的结果
如有问题请先修复后再进行下一步操作
升级 tidb 集群
可通过tiup list tidb
来查询可用版本
tiup cluster upgrade tidb-test v5.1.0
复制代码
升级完成后查询集群状态
清理 TiDB 集群(危险)
本步骤为高风险操作,需慎重
已开始运行的生产环境严禁使用
销毁 TiDB 集群(危险)
本步骤为高风险操作,需慎重
已开始运行的生产环境严禁使用
tiup cluster destroy tidb-test
复制代码
评论