写点什么

使用 TiUP 安装部署 TiDB 集群实验流程

  • 2022 年 7 月 11 日
  • 本文字数:8503 字

    阅读完需:约 28 分钟

作者: 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 数据盘为例,具体操作步骤如下:


  1. 查看现有数据盘

  2. 创建分区

  3. 格式化文件系统

  4. 查看数据盘分区 UUID


本例中 nvme0n1p1 的 UUID 为 c51eb23b-195c-4061-92a9-3fad812cc12f


lsblk -f
复制代码


 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
复制代码


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

  2. 挂载数据盘

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

关闭 swap

echo "vm.swappiness = 0">> /etc/sysctl.confswapoff -a && swapon -asysctl -p
复制代码

关闭防火墙

  1. 关闭防火墙服务

  2. 关闭防火墙自启动

检查及安装 NTP 服务

centos7 rhel7 服务器有 chronyd 服务,会自动同步 ntp 信息,跳过本设置步骤

TiDB 是一套分布式数据库系统,需要节点间保证时间的同步,从而确保 ACID 模型的事务线性一致性


  1. 执行以下命令,如果输出 running 表示 NTP 服务正在运行:

  2. 执行 ntpstat 命令检测是否与 NTP 服务器同步:


  • 如果输出 synchronised to NTP server,表示正在与 NTP 服务器正常同步:

  • 以下情况表示 NTP 服务未正常同步:

  • 以下情况表示 NTP 服务未正常运行:

检查和配置操作系统优化参数

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


关闭透明大页(即 Transparent Huge Pages,缩写为 THP)。数据库的内存访问模式往往是稀疏的而非连续的。当高阶内存碎片化比较严重时,分配 THP 页面会出现较高的延迟。

将存储介质的 I/O 调度器设置为 noop。对于高速 SSD 存储介质,内核的 I/O 调度操作会导致性能损失。将调度器设置为 noop 后,内核不做任何操作,直接将 I/O 请求下发给硬件,以获取更好的性能。同时,noop 调度器也有较好的普适性。

为调整 CPU 频率的 cpufreq 模块选用 performance 模式。将 CPU 频率固定在其支持的最高运行频率上,不进行动态调节,可获取最佳的性能。


  1. 执行 tuned-adm list 命令查看当前操作系统的 tuned 策略。

  2. 得到类似下方结果:

  3. \==Current active profile: balanced== 表示当前操作系统的 tuned 策略使用 balanced,建议在当前策略的基础上添加操作系统优化配置。

  4. 获取磁盘唯一标识 ID_SERIAL


有多个盘需执行多次,下方以 sdb 为例

获取磁盘挂载信息使用 fdisk -ls


  • 执行命令:


  1. 创建新的 tuned 策略

  2. 填写如下内容:

  3. 应用新的 tuned 策略

  4. 执行以下命令验证透明大页的状态

  5. 执行以下命令验证数据目录所在磁盘的 I/O 调度器


磁盘也可能是 vd[bc],需自行用 fdisk -ls 确认


 cat /sys/block/sd[bc]/queue/scheduler
复制代码


结果应为:  [noop] deadline cfq [noop] deadline cfq
复制代码


  1. 执行以下命令查看 cpufreq 模块选用的节能策略

  2. 执行以下命令修改 sysctl 参数

  3. 执行以下命令配置用户的 limits.conf 文件

手动配置 SSH 互信及 sudo 免密码

  1. 以 root 用户依次登录到所有部署目标机器创建 tidb 用户并设置登录密码

  2. 执行以下命令,将 tidb ALL=(ALL) NOPASSWD: ALL 添加到文件末尾,即配置好 sudo 免密码

  3. 在中控机 == 切换到 tidb 用户 ==,生成 ssh-keygen 并将公钥复制到其他部署节点


10.0.1.1 为其他部署节点 ip,请自行替换,并依次将公钥复制到所有节点


 ssh-copy-id -i ~/.ssh/id_rsa.pub 10.0.1.1
复制代码


  1. 验证,以 ==tidb== 用户登录中控机,通过 ssh 的方式登录目标机器 IP。如果不需要输入密码并登录成功,即表示 SSH 互信配置成功 ; 如需要输入密码则表示没有配置成功,请自行排查原因

安装 numactl 工具

本段主要介绍如果安装 NUMA 工具。在生产环境中,因为硬件机器配置往往高于需求,为了更合理规划资源,会考虑单机多实例部署 TiDB 或者 TiKV。NUMA 绑核工具的使用,主要为了防止 CPU 资源的争抢,引发性能衰退。


注意:

NUMA 绑核是用来隔离 CPU 资源的一种方法,适合高配置物理机环境部署多实例使用。

通过 tiup cluster deploy 完成部署操作,就可以通过 exec 命令来进行集群级别管理工作。


  • 方法 1:通过 TiUP 的 cluster 执行完 exec 命令来完成批量安装(推荐)


本方法需要先安装 tiup 组件,如使用本方法,请先跳转到下一步,安装完 tiup 后再回来执行本步


将 tidb-test 集群所有目标主机通过 sudo 权限执行安装命令


 tiup cluster exec tidb-test --sudo --command "yum -y install numactl"
复制代码


推荐使用第一种方法,不需要手动到各节点,只需要在中控机一条命令即可


  • 方法 2:登录到各节点进行安装(以 CentOS Linux release 7.7.1908 (Core) 为例)

部署 TiUP 组件

使用普通用户登录中控机,以 tidb 用户为例,后续安装 TiUP 及集群管理操作均通过该用户完成


  1. 安装 tiup 工具

  2. 设置环境变量


tiup 工具安装好以后会有如下提示:


/home/tidb/.bash_profile has been modified to add tiup to PATHopen a new terminal or source /home/tidb/.bash_profile to use it
复制代码


根据提示 source 生效环境变量即可:


source /home/tidb/.bash_profile
复制代码


确认 TiUP 工具是否安装:


which tiup
复制代码


得到如下结果即为安装成功:~/.tiup/bin/tiup
复制代码

部署 playground 单机测试环境

本步骤为单机,仅用于了解 tidb 的架构和简单使用

安装开发|测试|生产环境请跳过本步


执行安装命令:


tiup playground
复制代码


得到CLUSTER START SUCCESSFULLY的结果即表示安装成功,示例如下:


Waiting for tiflash instances ready127.0.0.1:3930 ... DoneCLUSTER 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/dashboardPD client endpoints: [127.0.0.1:2379]To view the Prometheus: http://127.0.0.1:9090To view the Grafana: http://127.0.0.1:3000tiflash quit: signal: killedLogging debug to /home/tidb/.tiup/data/SqQnv40/tiflash-0/log/tiflash.logLogging errors to /home/tidb/.tiup/data/SqQnv40/tiflash-0/log/tiflash_error.log
复制代码


此时需保留本窗口(不能退出),另开新窗口连接 tidb 实例,可按照安装完成后的提示实验所有功能


实验结束后结束掉部署窗口进程即可 (control + c)


登录方式:


默认无密码


tiup client  ormysql --host 127.0.0.1 --port 4000 -u root -p
复制代码

部署 TiDB 集群

本步骤均在中控机的 tidb 账号下操作

安装 TiUP cluster 组件

  1. 安装 TiUP cluster 组件


安装完成后会得到 tiup cluster 的相关命令提示


2. 如果已经安装,则更新 TiUP cluster 组件至最新版本:


 tiup update --self && tiup update cluster
复制代码


预期输出 “Update successfully!”


如需查看当前 cluster 版本,则执行如下语句

tiup --binary cluster

初始化集群拓扑文件

  1. 使用 tiup 工具生成拓扑文件


注意:

混合部署场景也可以使用 tiup cluster template –full > topology.yaml 生成的建议拓扑模板,跨机房部署场景可以使用 tiup cluster template –multi-dc > topology.yaml 生成的建议拓扑模板。


文件生成以后编辑对应节点信息即可,本步骤生成的为一个模板文档,建议直接复制第 2 步的信息来新建文档。


2. 编辑拓扑文档


vi topology.yaml
复制代码


填入以下内容


各节点信息请根据实际情况调整

本拓扑不包含 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.69tidb_servers:  - host: 172.24.74.67  - host: 172.24.74.68  - host: 172.24.74.69tikv_servers:  - host: 172.24.74.67  - host: 172.24.74.68 - host: 172.24.74.69 monitoring_servers:  - host: 172.24.74.67grafana_servers:  - host: 172.24.74.68alertmanager_servers:  - host: 172.24.74.68
复制代码

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

请保证所有 Fail 项目修复后再进行下一步操作


tiup cluster check ./topology.yaml --user tidbtiup cluster check ./topology.yaml --apply --user tidb
复制代码

安装集群

  1. 执行安装命令


通过 TiUP cluster 部署的集群名称为 tidb-test

可以通过执行 tiup list tidb 来查看 TiUP 支持的最新可用版本


tiup cluster deploy tidb-test v5.0.0 ./topology.yaml --user tidb
复制代码


预期日志结尾输出会有 Clustertidb-testdeployed successfully 关键词,表示部署成功


  1. 查看集群状态


可看到目前已安装的集群信息


tiup cluster list
复制代码


  1. 检查部署的 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-9093172.24.74.68:3000   grafana       172.24.74.68  3000         linux/x86_64  Down    -                                  /tidb/tidb-deploy/grafana-3000172.24.74.67:2379   pd            172.24.74.67  2379/2380    linux/x86_64  Down    /tidb/tidb-data/pd-2379            /tidb/tidb-deploy/pd-2379172.24.74.68:2379   pd            172.24.74.68  2379/2380    linux/x86_64  Down    /tidb/tidb-data/pd-2379            /tidb/tidb-deploy/pd-2379172.24.74.69:2379   pd            172.24.74.69  2379/2380    linux/x86_64  Down    /tidb/tidb-data/pd-2379            /tidb/tidb-deploy/pd-2379172.24.74.67:9090   prometheus    172.24.74.67  9090         linux/x86_64  Down    /tidb/tidb-data/prometheus-9090    /tidb/tidb-deploy/prometheus-9090172.24.74.67:4000   tidb          172.24.74.67  4000/10080   linux/x86_64  Down    -                                  /tidb/tidb-deploy/tidb-4000172.24.74.68:4000   tidb          172.24.74.68  4000/10080   linux/x86_64  Down    -                                  /tidb/tidb-deploy/tidb-4000172.24.74.69:4000   tidb          172.24.74.69  4000/10080   linux/x86_64  Down    -                                  /tidb/tidb-deploy/tidb-4000172.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-20160172.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-20160172.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-20160Total nodes: 12
复制代码


  1. 启动 tidb 集群


预期结果输出 Started cluster tidb-test successfully 标志启动成功


  1. 再次检查 tidb 集群状态


预期结果应所有节点都为Up状态


  1. 到本步骤即 tidb 集群已安装完成,现在可通过任意 tidb-server 节点连接数据库开始使用,如:


默认无密码,需首次进入后设置

扩容节点

扩容前请按照【准备工作】调试好新节点的各项配置

扩容 tidb,tikv,pd,ticdc 节点

  1. 在确保新增节点已完成基础环境配置后,开始在中控机编写扩容拓扑文件


文件名可自定义


填写如下内容:(这里包含了所有信息,需要新增哪种节点复制哪种节点信息即可)


# tidbtidb_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
# tikvtikv_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 # pdpd_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
#ticdccdc_servers:- host:172.24.74.71- host:172.24.74.69
复制代码


实验得知:仅 host 为必填项,其余参数均可继承全局参数

ticdc 节点在测试环境可 1 个节点,在生产环境应至少 2 个节点


  1. 执行扩容命令

  2. 扩容成功后查看集群状态,确保集群状态正常

扩容 tiflash 节点

tiflash 仅支持 tidb5.0+,如版本不匹配请先升级 tidb 集群


  1. 开启 pd 的 Placement Rules 功能(如已开启请忽略)


172.24.74.71:2379 是任意 pd 节点的 ip 和端口


  1. 在确保新增节点已完成基础环境配置后,开始在中控机编写扩容拓扑文件


文件名可自定义


填写如下内容:


tiflash_servers:- host:172.24.74.71
复制代码


在测试环境可 1 个节点,在生产环境应至少 2 个节点


  1. 执行扩容命令

  2. 扩容成功后查看集群状态,确保集群状态正常

缩容节点

缩容 tidb,tikv,pd,ticdc 节点

  1. 确认缩容节点的 id


得到集群信息


Starting component `cluster`: /home/tidb/.tiup/components/cluster/v1.7.0/tiup-cluster display tidb-testCluster type:       tidbCluster name:       tidb-testCluster version:    v5.0.0Deploy user:        tidbSSH type:           builtinDashboard URL:      http://172.24.74.68:2379/dashboardID                  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-9093172.24.74.71:8300   cdc           172.24.74.71  8300                             linux/x86_64  Up            /tidb/tidb-data/cdc-8300           /tidb/tidb-deploy/cdc-8300172.24.74.68:3000   grafana       172.24.74.68  3000                             linux/x86_64  Up            -                                  /tidb/tidb-deploy/grafana-3000172.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-2379172.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-2379172.24.74.69:2379   pd            172.24.74.69  2379/2380                        linux/x86_64  Up            /tidb/tidb-data/pd-2379            /tidb/tidb-deploy/pd-2379172.24.74.71:2379   pd            172.24.74.71  2379/2380                        linux/x86_64  Up            /tidb/tidb-data/pd-2379            /tidb/tidb-deploy/pd-2379172.24.74.67:9090   prometheus    172.24.74.67  9090                             linux/x86_64  Up            /tidb/tidb-data/prometheus-9090    /tidb/tidb-deploy/prometheus-9090172.24.74.67:4000   tidb          172.24.74.67  4000/10080                       linux/x86_64  Up            -                                  /tidb/tidb-deploy/tidb-4000172.24.74.68:4000   tidb          172.24.74.68  4000/10080                       linux/x86_64  Up            -                                  /tidb/tidb-deploy/tidb-4000172.24.74.69:4000   tidb          172.24.74.69  4000/10080                       linux/x86_64  Up            -                                  /tidb/tidb-deploy/tidb-4000172.24.74.71:4000   tidb          172.24.74.71  4000/10080                       linux/x86_64  Up            -                                  /tidb/tidb-deploy/tidb-4000172.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-9000172.24.74.67:20160  tikv          172.24.74.67  20160/20180                      linux/x86_64  Up            /tidb/tidb-data/tikv-20160         /tidb/tidb-deploy/tikv-20160172.24.74.68:20160  tikv          172.24.74.68  20160/20180                      linux/x86_64  Up            /tidb/tidb-data/tikv-20160         /tidb/tidb-deploy/tikv-20160172.24.74.69:20160  tikv          172.24.74.69  20160/20180                      linux/x86_64  Up            /tidb/tidb-data/tikv-20160         /tidb/tidb-deploy/tikv-20160172.24.74.71:20160  tikv          172.24.74.71  20160/20180                      linux/x86_64  Disconnected  /tidb/tidb-data/tikv-20160         /tidb/tidb-deploy/tikv-20160Total nodes: 17
复制代码


例如本次要缩容 ticdc 节点,获取到的 id 就是 172.24.74.71:8300


  1. 执行缩容命令

  2. 缩容完成后检查集群状态

缩容 tiflash 节点

  1. 进入 tidb 客户端,删除 tiflash 的副本 (副本数需小于剩余节点数)


tiflash 的同步需要手动指定,所以大部分情况只会同步需要的部分表,同步方法详见 tiflash 的部署

本次以 test.yyh 为例


  1. 查看 tiflash 副本删除进度,确认所有副本都删除成功(无信息即为全部成功)

  2. 所有副本删除完成后,退回操作系统,执行缩容命令


得到 id 后通过 id 执行缩容


 tiup cluster scale-in tidb-test --node 172.24.74.69:9000
复制代码


  1. 最后再查看集群状态,确保状态正常

升级 TiDB 集群(在线升级)

注意:

升级后版本无法回退,请慎重升级!

注意:

升级过程会对集群性能造成影响,请在最闲时操作!

注意:

在升级的过程中不要执行 DDL 请求,否则可能会出现行为未定义的问题。


  1. 升级 tiup

  2. 升级 tiup cluster

  3. 检查配置文件是否符合新版本要求


没有改过默认参数则不需要调整,可跳过本步骤

如 4.0 升级到 5.0, 有些自己设置的参数可能会有部分参数不支持新版本,详见官方文档


  1. 检查 region 状态,确保所有状态正常


如果全部正常将得到All regions are healthy.的结果

如有问题请先修复后再进行下一步操作


  1. 升级 tidb 集群


可通过tiup list tidb来查询可用版本


tiup cluster upgrade tidb-test v5.1.0
复制代码


  1. 升级完成后查询集群状态

清理 TiDB 集群(危险)

本步骤为高风险操作,需慎重

已开始运行的生产环境严禁使用


  • 清理数据

  • 清理日志

  • 全部清理

销毁 TiDB 集群(危险)

本步骤为高风险操作,需慎重

已开始运行的生产环境严禁使用


tiup cluster destroy tidb-test
复制代码


发布于: 刚刚阅读数: 2
用户头像

TiDB 社区官网:https://tidb.net/ 2021.12.15 加入

TiDB 社区干货传送门是由 TiDB 社区中布道师组委会自发组织的 TiDB 社区优质内容对外宣布的栏目,旨在加深 TiDBer 之间的交流和学习。一起构建有爱、互助、共创共建的 TiDB 社区 https://tidb.net/

评论

发布
暂无评论
使用 TiUP 安装部署 TiDB 集群实验流程_版本升级_TiDB 社区干货传送门_InfoQ写作社区