TiDB单机部署全攻略:从环境准备到性能调优

一、TiDB单机部署的适用场景与优势

TiDB作为一款开源的分布式NewSQL数据库,其核心设计目标是兼容MySQL协议并支持水平扩展。然而,在开发测试、个人学习或小规模生产环境中,单机部署TiDB仍具有显著价值。单机部署的优势在于:降低硬件成本(仅需单台服务器)、简化运维复杂度(无需处理分布式协调问题)、快速验证功能(适合CI/CD流程中的数据库测试)。但需注意,单机部署无法体现TiDB的分布式特性(如自动分片、高可用),因此仅推荐在非关键业务或资源受限场景下使用。

二、环境准备与依赖安装

1. 硬件与系统要求

  • 硬件配置:建议至少8核CPU、32GB内存、200GB SSD存储(根据数据量调整)。
  • 操作系统:支持Linux(CentOS 7+/Ubuntu 18.04+),需关闭SELinux和防火墙(或开放相关端口)。
  • 依赖项:需安装wgetcurlnet-tools等基础工具,以及Numa库优化性能(可选)。

2. 下载与验证TiDB安装包

从TiDB官方GitHub仓库(https://github.com/pingcap/tidb/releases)下载最新稳定版安装包,或使用TiUP工具(TiDB官方集群管理工具)简化部署:

  1. # 安装TiUP(需root权限)
  2. curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
  3. source ~/.bashrc # 加载TiUP环境变量
  4. # 查看可用版本
  5. tiup list tidb
  6. # 下载指定版本(例如v6.5.0)
  7. tiup install tidb:v6.5.0

三、单机部署详细步骤

1. 使用TiUP快速部署

TiUP提供了playground模式,可一键启动单机版TiDB集群(包含TiDB Server、PD Server、TiKV):

  1. # 启动单机版(默认端口:TiDB 4000, PD 2379, TiKV 20160)
  2. tiup playground v6.5.0 --db 1 --pd 1 --kv 1
  3. # 自定义端口与目录
  4. tiup playground v6.5.0 \
  5. --db.port 4001 \
  6. --pd.port 2380 \
  7. --kv.port 20161 \
  8. --data-dir /data/tidb-single

启动后,可通过tiup status查看服务状态,或使用mysql -h 127.0.0.1 -P 4000 -u root连接测试。

2. 手动部署(进阶)

若需更精细控制,可手动安装各组件:

安装PD(Placement Driver)

  1. # 下载PD二进制包
  2. wget https://download.pingcap.org/tidb-v6.5.0-linux-amd64/pd-server
  3. chmod +x pd-server
  4. # 配置PD(单节点模式)
  5. cat > /etc/pd/config.toml <<EOF
  6. [log]
  7. level = "info"
  8. [pd]
  9. name = "pd-single"
  10. data-dir = "/data/pd"
  11. client-urls = "http://0.0.0.0:2379"
  12. peer-urls = "http://0.0.0.0:2380"
  13. EOF
  14. # 启动PD
  15. nohup ./pd-server --config=/etc/pd/config.toml > /var/log/pd.log 2>&1 &

安装TiKV

  1. # 下载TiKV
  2. wget https://download.pingcap.org/tidb-v6.5.0-linux-amd64/tikv-server
  3. chmod +x tikv-server
  4. # 配置TiKV(连接单节点PD)
  5. cat > /etc/tikv/config.toml <<EOF
  6. [log]
  7. level = "info"
  8. [server]
  9. addr = "0.0.0.0:20160"
  10. [storage]
  11. data-dir = "/data/tikv"
  12. [pd]
  13. endpoints = ["127.0.0.1:2379"]
  14. EOF
  15. # 启动TiKV
  16. nohup ./tikv-server --config=/etc/tikv/config.toml > /var/log/tikv.log 2>&1 &

安装TiDB Server

  1. # 下载TiDB
  2. wget https://download.pingcap.org/tidb-v6.5.0-linux-amd64/tidb-server
  3. chmod +x tidb-server
  4. # 配置TiDB(连接单节点PD)
  5. cat > /etc/tidb/config.toml <<EOF
  6. [log]
  7. level = "info"
  8. [tidb]
  9. store = "tikv"
  10. pd-addr = "127.0.0.1:2379"
  11. [socket]
  12. port = 4000
  13. EOF
  14. # 启动TiDB
  15. nohup ./tidb-server --config=/etc/tidb/config.toml > /var/log/tidb.log 2>&1 &

四、验证部署与基础操作

1. 连接测试

使用MySQL客户端连接TiDB:

  1. mysql -h 127.0.0.1 -P 4000 -u root -e "SELECT VERSION();"

预期输出:

  1. +---------------------+
  2. | VERSION() |
  3. +---------------------+
  4. | 6.5.0-TiDB-v6.5.0 |
  5. +---------------------+

2. 创建表与写入数据

  1. CREATE DATABASE test_db;
  2. USE test_db;
  3. CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50));
  4. INSERT INTO users VALUES (1, 'Alice'), (2, 'Bob');
  5. SELECT * FROM users;

五、性能调优与常见问题

1. 内存配置优化

/etc/tidb/config.toml中调整以下参数:

  1. [performance]
  2. max-procs = 8 # 设置为CPU核心数
  3. [mem-quota-query]
  4. normal = 1073741824 # 1GB查询内存限制

2. 日志与监控

  • 日志路径:各组件日志默认输出到启动目录,建议通过--log-file参数指定路径。
  • 监控集成:单机版可通过Prometheus+Grafana监控,需额外配置pushgateway或文件导出。

3. 常见问题

  • 端口冲突:确保4000(TiDB)、2379(PD)、20160(TiKV)未被占用。
  • 数据目录权限:运行用户需对/data/tidb*有读写权限。
  • 性能瓶颈:单机模式下TiKV可能成为瓶颈,建议通过--config调整rocksdb.max-background-jobs参数。

六、总结与扩展建议

TiDB单机部署适合快速验证功能或小规模场景,但生产环境仍需考虑分布式架构。对于资源有限的用户,可结合Kubernetes使用TiDB Operator实现弹性伸缩。未来可探索TiDB Lightning进行离线数据导入,或通过TiFlash扩展分析型查询能力。

通过本文的步骤,读者可完成TiDB单机版的完整部署,并基于实际需求进行调优。建议定期关注TiDB官方文档(https://docs.pingcap.com/)获取最新版本特性与最佳实践。