本文档详细介绍TiDB单机测试环境的部署方法,包括环境准备、安装步骤、配置调整和验证测试等内容。风哥教程参考TiDB官方文档快速入门相关内容,适合开发人员和测试人员在本地搭建TiDB测试环境。更多视频教程www.fgedu.net.cn
Part01-基础概念与理论知识
1.1 单机测试环境概念
TiDB单机测试环境是指在单台服务器上部署完整的TiDB集群,包括TiDB、TiKV、PD等组件,用于开发、测试和学习目的。
- 特点:部署简单、资源占用少、适合快速上手
- 适用场景:开发测试、功能验证、学习研究
- 限制:性能有限、不适合生产环境
- 快速部署,几分钟内完成
- 资源需求低,适合个人电脑
- 完整的TiDB功能体验
- 便于学习和测试新特性
1.2 部署方法介绍
TiDB单机测试环境的部署方法主要有:
- TiUP Playground:官方推荐的快速部署工具
- Docker:容器化部署
- 源码编译:适合开发者
1.3 部署前准备
部署前需要准备:
- 操作系统:Linux、macOS或Windows(WSL)
- 硬件要求:至少4核CPU、8GB内存、50GB磁盘
- 网络要求:网络连接正常
- 依赖软件:SSH、curl等
Part02-生产环境规划与建议
2.1 环境要求
2.1.1 硬件要求
– CPU:至少4核
– 内存:至少8GB(推荐16GB)
– 存储:至少50GB可用空间
– 网络:本地网络
# 推荐配置风哥提示:
– CPU:8核
– 内存:16GB
– 存储:100GB SSD
– 网络:千兆网卡
2.1.2 软件要求
– 操作系统:
– Linux:CentOS 7.3+ / RHEL 7.3+ / Ubuntu 16.04+
– macOS:10.13+
– Windows:WSL 2
– 依赖软件:
– SSH
– curl
– tar
– sudo
# 网络要求
– 本地网络通畅
– 无防火墙限制(或开放必要端口)
2.2 资源规划
## 端口规划
– TiDB:4000(业务)、10080(状态)
– TiKV:20160(服务)、20180(状态)
– PD:2379(客户端)、2380(集群)
– TiFlash:3930(服务)、20292(状态)
## 目录规划
– 安装目录:/tidb/app
– 数据目录:/tidb/fgdata
– 日志目录:/tidb/log
## 资源限制
– CPU:限制为4-8核
– 内存:限制为8-16GB
– 存储:限制为50-100GB
2.3 网络配置
网络配置要点:
- 确保本地网络通畅
- 关闭防火墙或开放必要端口
- 配置主机名解析
- 测试网络连通性
Part03-生产环境项目实施方案
3.1 安装步骤
3.1.1 安装TiUP
$ curl –proto ‘=https’ –tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
# 重新加载环境变量
$ source ~/.bash_profile
# 验证TiUP安装
$ tiup –version
# 输出示例
TiUP Version: 1.15.0
Git Commit Hash: abcdef1234
Git Branch: release-1.15
Build Time: 2026-04-01 00:00:00 +0000
Go Version: go1.20.0
3.1.2 使用TiUP Playground部署
$ tiup playground
# 输出示例
Starting component `playground`:
> Checking if tiup-playground is installed…
> Installing tiup-playground v1.15.0…
> Starting playground…
> Playground Bootstrapped:
>
> tidb:
> host: 127.0.0.1
> port: 4000
> status: http://127.0.0.1:10080
>
> tikv:学习交流加群风哥QQ113257174
> host: 127.0.0.1
> port: 20160
> status: http://127.0.0.1:20180
>
> pd:
> host: 127.0.0.1
> port: 2379
> status: http://127.0.0.1:2380
>
> playground log: /home/tidb/.tiup/data/playground-12345/log
>
> MySQL client command: mysql -h 127.0.0.1 -P 4000 -u root
> TiDB Dashboard: http://127.0.0.1:2379/dashboard
3.1.3 自定义部署参数
$ tiup playground –host 0.0.0.0 –db 1 –pd 1 –kv 1 –tiflash 1 –db.port 4000 –pd.port 2379 –kv.port 20160 –tiflash.port 3930
# 说明:
# –host:绑定地址
# –db:TiDB节点数量
# –pd:PD节点数量
# –kv:TiKV节点数量
# –tiflash:TiFlash节点数量
# –db.port:TiDB端口
# –pd.port:PD端口
# –kv.port:TiKV端口
# –tiflash.port:TiFlash端口
# 启动指定版本
$ tiup playground v7.5.0
3.2 配置调整
3.2.1 查看配置文件
$ ls -la /home/tidb/.tiup/data/playground-*/
# 查看TiDB配置
$ cat /home/tidb/.tiup/data/playground-*/tidb-*/tidb.toml
# 查看TiKV配置
$ cat /home/tidb/.tiup/data/playground-*/tikv-*/tikv.toml
# 查看PD配置
$ cat /home/tidb/.tiup/data/playground-*/pd-*/pd.toml
3.2.2 调整配置参数
$ Ctrl+C
# 重新启动并调整参数
$ tiup playground –db.config “[performance]\nmax-procs = 4” –kv.config “[performance]\nmax-procs = 4”
# 配置说明:
# –db.config:TiDB配置
# –kv.config:TiKV配置
# –pd.config:PD配置
3.3 验证测试
3.3.1 连接测试
$ mysql -h 127.0.0.1 -P 4000 -u root
# 输出示例
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.7.25-TiDB-v7.5.0 TiDB Server (Apache License 2.0) Community Edition, MySQL 5.7 compatible
Copyright (c) 2000, 2026, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
mysql>
3.3.2 功能测试
mysql> CREATE DATABASE fgedudb;
Query OK, 1 row affected (0.01 sec)
# 使用数据库
mysql> USE fgedudb;
Database changed
# 创建表
mysql> CREATE TABLE fgedu_users (id INT PRIMARY KEY, name VARCHAR(50), age INT);
Query OK, 0 rows affected (0.03 sec)
# 插入数据
mysql> INSERT INTO fgedu_users VALUES (1, ‘张三’, 25), (2, ‘李四’, 30), (3, ‘王五’, 35);
Query OK, 3 rows affected (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 0
# 查询数据
mysql> SELECT * FROM fgedu_users;
+—-+——–+——+
| id | name | age |
+—-+——–+——+
| 1 | 张三 | 25 |
| 2 | 李四 | 30 |
| 3 | 王五 | 35 |
+—-+——–+——+
3 rows in set (0.00 sec)
# 更新数据
mysql> UPDATE fgedu_users SET age = 26 WHERE id = 1;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
# 删除数据
mysql> DELETE FROM fgedu_users WHERE id = 3;
Query OK, 1 row affected (0.01 sec)
# 再次查询
mysql> SELECT * FROM fgedu_users;
+—-+——–+——+
| id | name | age |
+—-+——–+——+
| 1 | 张三 | 26 |
| 2 | 李四 | 30 |
+—-+——–+——+
2 rows in set (0.00 sec)
Part04-生产案例与实战讲解
4.1 部署实战案例
4.1.1 在CentOS 7上部署
## 1. 系统准备
$ yum update -y
$ yum install -y curl tar
## 2. 安装TiUP
$ curl –proto ‘=https’ –tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
$ source ~/.bash_profile
## 3. 部署Playground
$ tiup playground
## 4. 验证部署
$ mysql -h 127.0.0.1 -P 4000 -u root -e “SELECT version();”
# 输出示例
+——————–+
| version() |
+——————–+
| 5.7.25-TiDB-v7.5.0 |
+——————–+
4.1.2 在Ubuntu上部署
## 1. 系统准备
$ apt update
$ apt install -y curl tar
## 2. 安装TiUP
$ curl –proto ‘=https’ –tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
$ source ~/.bashrc
## 3. 部署Playground
$ tiup playground
## 4. 验证部署
$ mysql -h 127.0.0.1 -P 4000 -u root -e “SHOW DATABASES;”
# 输出示例
+——————–+
| Database |
+——————–+
| INFORMATION_SCHEMA |
| METADATA |
| PERFORMANCE_SCHEMA |
| mysql |
| sys |
+——————–+
4.2 功能测试案例
4.2.1 事务测试
mysql> BEGIN;
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO fgedu_users VALUES (4, ‘赵六’, 40);
Query OK, 1 row affected (0.00 sec)
mysql> UPDATE fgedu_users SET age = 31 WHERE id = 2;
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM fgedu_users;
+—-+——–+——+
| id | name | age |
+—-+——–+——+
| 1 | 张三 | 26 |
| 2 | 李四 | 31 |
| 4 | 赵六 | 40 |
+—-+——–+——+
3 rows in set (0.00 sec)
mysql> COMMIT;
Query OK, 0 rows affected (0.01 sec)
# 验证提交
mysql> SELECT * FROM fgedu_users;
+—-+——–+——+
| id | name | age |
+—-+——–+——+
| 1 | 张三 | 26 |
| 2 | 李四 | 31 |
| 4 | 赵六 | 40 |
+—-+——–+——+
3 rows in set (0.00 sec)
4.2.2 索引测试
mysql> CREATE INDEX idx_age ON fgedu_users(age);
Query OK, 0 rows affected (0.03 sec)
mysql> EXPLAIN SELECT * FROM fgedu_users WHERE age > 30;
+————————+———-+———–+—————+——————————–+
| id | estRows | task | access object | operator info |
+————————+———-+———–+—————+——————————–+
| TableReader_7 | 2.00 | root | | data:Selection_6 |
| └─Selection_6 | 2.00 | cop[tikv] | | gt(fgedu_users.age, 30) |
| └─IndexScan_5 | 2.00 | cop[tikv] | table:fgedu_users, index:idx_age | keep order:false, stats:pseudo |
+————————+———-+———–+—————+——————————–+
3 rows in set (0.00 sec)
4.3 常见问题排查
4.3.1 端口冲突
## 问题现象
$ tiup playground
> Error: listen tcp 127.0.0.1:4000: bind: address already in use
## 解决方案
1. 查找占用端口的进程
$ lsof -i :4000
2. 停止占用端口的进程 3. 重新启动Playground
$ kill -9
$ tiup playground –db.port 4001
4.3.2 内存不足
## 问题现象
$ tiup playground
> Error: cannot allocate memory
## 解决方案
1. 检查系统内存
$ free -h
2. 减少节点数量或内存使用
$ tiup playground –db 1 –pd 1 –kv 1 –db.config “[performance]\nmax-procs = 2” –kv.config “[performance]\nmax-procs = 2”
3. 增加系统内存(如果可能)
Part05-风哥经验总结与分享
5.1 最佳实践
TiDB单机测试环境部署最佳实践:
- 使用TiUP Playground:官方推荐的快速部署工具
- 合理分配资源:根据系统资源调整部署参数
- 定期清理:测试完成后清理环境,避免资源浪费
- 版本管理:根据需要选择合适的TiDB版本
- 备份数据:重要测试数据及时备份
5.2 性能调优
## 1. 调整TiDB参数
$ tiup playground –db.config “[performance]\nmax-procs = 4\n[prepared-plan-cache]\nenable = true\ncapacity = 1000”
## 2. 调整TiKV参数
$ tiup playground –kv.config “[performance]\nmax-procs = 4\n[rocksdb]\nmax-open-files = 2048”
## 3. 调整PD参数
$ tiup playground –pd.config “[schedule]\nmax-snapshot-count = 1\nmax-pending-peer-count = 4”
## 4. 关闭不必要的组件
$ tiup playground –tiflash 0
5.3 使用场景
TiDB单机测试环境的使用场景:
- 开发测试:开发人员测试应用与TiDB的兼容性
- 功能验证:验证TiDB的新特性和功能
- 学习研究:学习TiDB的架构和原理
- POC测试:进行小规模的概念验证测试
- 培训教学:用于培训和教学目的
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
