Skip to content

TiDB TiUP 部署

环境准备

1. 系统要求

组件推荐配置备注
操作系统CentOS 7.3+ / Red Hat Enterprise Linux 7.3+ / Ubuntu 16.04+64位操作系统
CPU8 核及以上生产环境推荐 16 核或更高
内存16 GB 及以上生产环境推荐 32 GB 或更高
磁盘SSD 500 GB 及以上生产环境推荐 NVMe SSD
文件系统ext4 或 xfs推荐使用 xfs

2. 网络要求

  • 所有节点之间网络互通
  • 开放必要端口:
    • TiDB:4000(客户端)、10080(状态)
    • TiKV:20160(客户端)、20180(状态)
    • PD:2379(客户端)、2380(集群内通信)
    • TiFlash:3930(客户端)、20170(状态)、9000(Raft)
    • TiCDC:8300(状态)
  • 关闭防火墙或配置防火墙规则

3. 系统配置优化

bash
# 关闭 SELinux
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

# 配置内核参数
cat << EOF >> /etc/sysctl.conf
fs.file-max = 1000000
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 10240
net.ipv4.ip_local_port_range = 10000 65535
net.core.somaxconn = 32768
vm.swappiness = 0
vm.overcommit_memory = 1
EOF
sysctl -p

# 配置 ulimit
cat << EOF >> /etc/security/limits.conf
* soft nofile 1000000
* hard nofile 1000000
* soft stack 8192
* hard stack 8192
EOF

TiUP 安装

1. 安装 TiUP

bash
# 安装 TiUP
bash <(curl https://tiup-mirrors.pingcap.com/install.sh)

# 初始化 TiUP 环境
source ~/.bash_profile

# 查看 TiUP 版本
tiup --version

2. 安装 TiUP 集群组件

bash
# 安装 TiUP 集群组件
tiup install cluster

# 查看 TiUP 集群版本
tiup cluster --version

集群部署

1. 创建部署拓扑文件

创建一个 YAML 格式的部署拓扑文件,例如 topology.yaml

yaml
global:
  user: "tidb"
  ssh_port: 22
  deploy_dir: "/tidb-deploy"
  data_dir: "/tidb-data"

server_configs:
  tidb:
    log.slow-threshold: 300
  tikv:
    raftstore.raftdb-path: "${data_dir}/tikv/raft"
  pd:
    replication.enable-placement-rules: true
    replication.location-labels: ["host"]

pd_servers:
  - host: 10.0.1.1
  - host: 10.0.1.2
  - host: 10.0.1.3

tidb_servers:
  - host: 10.0.1.4
  - host: 10.0.1.5

 tikv_servers:
  - host: 10.0.1.6
    config:
      server.labels: { host: "tikv1" }
  - host: 10.0.1.7
    config:
      server.labels: { host: "tikv2" }
  - host: 10.0.1.8
    config:
      server.labels: { host: "tikv3" }

tiflash_servers:
  - host: 10.0.1.9

2. 检查部署环境

bash
# 检查部署环境
tiup cluster check <topology.yaml> --user <username> -p

3. 开始部署

bash
# 部署集群
tiup cluster deploy <cluster-name> <tidb-version> <topology.yaml> --user <username> -p

# 示例:部署 v7.5.0 版本的集群
tiup cluster deploy my-tidb v7.5.0 topology.yaml --user root -p

4. 启动集群

bash
# 启动集群
tiup cluster start <cluster-name>

# 示例:启动名为 my-tidb 的集群
tiup cluster start my-tidb

集群验证

1. 检查集群状态

bash
# 检查集群状态
tiup cluster display <cluster-name>

# 示例:检查名为 my-tidb 的集群状态
tiup cluster display my-tidb

2. 验证 TiDB 服务

bash
# 连接 TiDB 服务
mysql -h <tidb-host> -P 4000 -u root

# 执行简单查询
SELECT version();

3. 验证集群功能

sql
-- 创建数据库
CREATE DATABASE test;

-- 使用数据库
USE test;

-- 创建表
CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20));

-- 插入数据
INSERT INTO t1 (name) VALUES ('test1'), ('test2'), ('test3');

-- 查询数据
SELECT * FROM t1;

集群管理

1. 停止集群

bash
# 停止集群
tiup cluster stop <cluster-name>

2. 重启集群

bash
# 重启集群
tiup cluster restart <cluster-name>

# 重启指定组件
tiup cluster restart <cluster-name> -R tikv

# 重启指定节点
tiup cluster restart <cluster-name> -N 10.0.1.6:20160

3. 扩容集群

创建扩容拓扑文件 scale-out.yaml

yaml
tikv_servers:
  - host: 10.0.1.10
    config:
      server.labels: { host: "tikv4" }

执行扩容:

bash
# 扩容集群
tiup cluster scale-out <cluster-name> scale-out.yaml --user <username> -p

4. 缩容集群

bash
# 缩容指定节点
tiup cluster scale-in <cluster-name> -N 10.0.1.10:20160

5. 升级集群

bash
# 升级集群
tiup cluster upgrade <cluster-name> <new-version>

# 示例:升级到 v7.6.0 版本
tiup cluster upgrade my-tidb v7.6.0

常见问题处理

1. 部署失败处理

  • 问题:部署过程中出现 SSH 连接失败 解决方法:检查 SSH 配置、用户名密码是否正确,确保目标节点的 SSH 服务正常运行

  • 问题:部署过程中出现权限不足 解决方法:确保使用具有 sudo 权限的用户进行部署

  • 问题:部署过程中出现端口被占用 解决方法:检查目标节点上的端口占用情况,修改配置文件中的端口配置

2. 集群启动失败

  • 问题:TiKV 节点启动失败,日志显示 "failed to open engine" 解决方法:检查数据目录权限,确保 tidb 用户对数据目录有读写权限

  • 问题:PD 节点启动失败,日志显示 "listen tcp 0.0.0.0:2379: bind: address already in use" 解决方法:检查 2379 端口是否被占用,修改配置文件中的端口配置

3. 集群状态异常

  • 问题:TiKV 节点状态显示 "Down" 解决方法:检查节点是否在线,网络是否正常,查看 TiKV 日志定位具体问题

  • 问题:PD 节点状态显示 "Tombstone" 解决方法:该节点已被移除,检查集群状态,必要时重新添加节点

最佳实践

1. 部署前准备

  • 规划集群拓扑:根据业务需求和数据规模,合理规划集群拓扑
  • 测试环境验证:在测试环境中验证部署流程和配置
  • 备份配置文件:备份部署拓扑文件和集群配置
  • 准备监控系统:部署 Prometheus + Grafana 监控系统

2. 部署过程

  • 使用非 root 用户:创建专用的 tidb 用户进行部署和管理
  • 合理设置数据目录:将数据目录和部署目录分离,避免磁盘空间不足
  • 配置位置标签:根据实际硬件拓扑配置位置标签,提高数据可靠性
  • 启用监控集成:部署时集成监控系统,便于后续运维

3. 部署后验证

  • 全面检查集群状态:检查所有组件的状态和日志
  • 测试核心功能:测试数据写入、读取、事务等核心功能
  • 压力测试:进行压力测试,验证集群性能
  • 备份恢复测试:测试备份恢复功能,确保数据安全

4. 日常管理

  • 定期备份数据:制定合理的备份策略
  • 监控集群状态:定期检查监控数据,发现潜在问题
  • 定期更新版本:及时应用补丁和升级到稳定版本
  • 文档化配置:记录集群配置和变更操作

常见问题(FAQ)

Q1: TiUP 支持部署哪些版本的 TiDB?

A1: TiUP 支持部署 TiDB 3.0 及以上版本,建议部署最新的稳定版本。

Q2: 如何选择合适的集群规模?

A2: 集群规模应根据业务需求和数据规模确定:

  • 测试环境:3 个 PD 节点 + 2 个 TiDB 节点 + 3 个 TiKV 节点
  • 生产环境:至少 3 个 PD 节点 + 2 个 TiDB 节点 + 3 个 TiKV 节点,根据数据规模和业务压力适当扩容

Q3: 如何修改集群配置?

A3: 使用 TiUP 命令修改集群配置:

bash
# 编辑配置
tiup cluster edit-config <cluster-name>

# 重新加载配置
tiup cluster reload <cluster-name> -R tikv

Q4: 如何查看集群日志?

A4: 使用 TiUP 命令查看集群日志:

bash
# 查看 TiDB 日志
tiup cluster logs <cluster-name> -R tidb

# 查看指定节点的 TiKV 日志
tiup cluster logs <cluster-name> -N 10.0.1.6:20160

Q5: TiUP 部署的集群支持高可用吗?

A5: 是的,TiUP 部署的集群默认支持高可用:

  • PD 集群基于 Raft 协议实现高可用
  • TiKV 集群基于 Raft 协议实现高可用
  • TiDB 节点支持负载均衡和自动故障转移

Q6: 如何迁移现有 TiDB 集群到 TiUP 管理?

A6: 可以使用 TiUP 的 import 命令将现有集群导入到 TiUP 管理:

bash
tiup cluster import <cluster-name> --from <old-cluster-dir>

Q7: TiUP 支持跨平台部署吗?

A7: TiUP 主要支持 Linux 平台,推荐在 CentOS 7.3+ 或 Ubuntu 16.04+ 上部署。

Q8: 如何卸载 TiUP 部署的集群?

A8: 使用 TiUP 命令卸载集群:

bash
# 卸载集群
tiup cluster destroy <cluster-name>