外观
TiDB TiUP 部署
环境准备
1. 系统要求
| 组件 | 推荐配置 | 备注 |
|---|---|---|
| 操作系统 | CentOS 7.3+ / Red Hat Enterprise Linux 7.3+ / Ubuntu 16.04+ | 64位操作系统 |
| CPU | 8 核及以上 | 生产环境推荐 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
EOFTiUP 安装
1. 安装 TiUP
bash
# 安装 TiUP
bash <(curl https://tiup-mirrors.pingcap.com/install.sh)
# 初始化 TiUP 环境
source ~/.bash_profile
# 查看 TiUP 版本
tiup --version2. 安装 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.92. 检查部署环境
bash
# 检查部署环境
tiup cluster check <topology.yaml> --user <username> -p3. 开始部署
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 -p4. 启动集群
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-tidb2. 验证 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:201603. 扩容集群
创建扩容拓扑文件 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> -p4. 缩容集群
bash
# 缩容指定节点
tiup cluster scale-in <cluster-name> -N 10.0.1.10:201605. 升级集群
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 tikvQ4: 如何查看集群日志?
A4: 使用 TiUP 命令查看集群日志:
bash
# 查看 TiDB 日志
tiup cluster logs <cluster-name> -R tidb
# 查看指定节点的 TiKV 日志
tiup cluster logs <cluster-name> -N 10.0.1.6:20160Q5: 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>