虚拟机搭建TiDB的完整实践指南
在企业级数据库选型中,TiDB因其分布式HTAP(混合事务/分析处理)特性备受关注,本文将以虚拟机环境为例,详细拆解TiDB集群的搭建流程,涵盖环境准备、软件部署、集群初始化及基础验证,帮助读者快速掌握核心操作步骤。

环境准备:虚拟机配置与系统初始化
在开始搭建前,需合理规划虚拟机资源配置,TiDB集群至少需要3台虚拟机构成最小可用集群(1个TiDB节点、3个TiKV节点、3个PD节点、1个监控节点),推荐配置如下:
- 操作系统:CentOS 7.6+ 或 Ubuntu 18.04+(本文以CentOS 7.9为例)
- 硬件资源:每台虚拟机分配CPU≥4核、内存≥8GB、磁盘≥100GB(建议SSD,TiKV对磁盘I/O要求较高)
- 网络配置:确保节点间网络互通,关闭防火墙或开放对应端口(TiDB:4000, TiKV:20160, PD:2379)
- 依赖安装:所有节点需安装Golang(TiDB依赖Go编译环境)、NTP服务(时间同步)及SSH免密登录。
初始化步骤:
- 更新系统并安装基础工具:
sudo yum update -y && sudo yum install -y wget curl telnet - 配置主机名与hosts文件:在每台节点上执行
hostnamectl set-hostname <节点名>,并在/etc/hosts中添加所有节点IP与主机名映射。 - 配置SSH免密登录:在管理节点生成SSH密钥后,通过
ssh-copy-id将公钥分发至各节点。
软件下载与目录规划
TiDB提供离线安装包与二进制包两种部署方式,本文以离线安装包为例(需提前下载至管理节点):
- 下载软件包:访问TiDB官网下载最新版本的tidb-community-server-{version}-linux-amd64.tar.gz(包含TiDB、TiKV、PD组件)及grafana-prometheus-{version}-linux-amd64.tar.gz(监控组件)。
- 创建目录结构:在所有节点上创建统一部署目录,如
/tidb/deploy,并解压安装包:sudo mkdir -p /tidb/deploy && tar -xzf tidb-community-server-*.tar.gz -C /tidb/deploy
- 配置环境变量:在
/etc/profile中添加TiDB二进制路径,如export PATH=$PATH:/tidb/deploy/bin,并执行source /etc/profile使配置生效。
集群组件部署:分步实施
PD(Placement Driver)部署
PD作为集群元数据管理组件,需优先部署,选择3台节点作为PD节点(如pd1、pd2、pd3):
- 创建数据目录:
sudo mkdir -p /tidb/pd/data && sudo chown -R tidb:tidb /tidb/pd - 启动PD服务:在每台PD节点执行以下命令(以pd1为例,需指定集群名称、节点IP及数据目录):
/tidb/deploy/bin/pd-server --name=pd1 --data-dir=/tidb/pd/data --peer-urls="http://<pd1_ip>:2380" --client-urls="http://<pd1_ip>:2379" --initial-cluster="pd1=http://<pd1_ip>:2380,pd2=http://<pd2_ip>:2380,pd3=http://<pd3_ip>:2380"
- 验证PD集群:在任意节点执行
curl http://<pd1_ip>:2379/pd/api/v1/cluster,返回集群状态信息即表示成功。
TiKV部署
TiKV负责数据存储,需至少3个节点(tikv1、tikv2、tikv3),且建议与PD节点部署在不同机器以避免资源竞争:
-
创建数据目录:
sudo mkdir -p /tidb/tikv/data && sudo chown -R tidb:tidb /tidb/tikv
-
配置TiKV:编辑
/tidb/deploy/conf/tikv.toml,设置数据目录、PD节点地址及集群名称:[storage] data-dir = "/tidb/tikv/data" [pd] endpoints = ["<pd1_ip>:2379", "<pd2_ip>:2379", "<pd3_ip>:2379"] [server] advertise-addr = "<tikv1_ip>:20160"
-
启动TiKV服务:
/tidb/deploy/bin/tikv-server --config=/tidb/deploy/conf/tikv.toml -
验证TiKV状态:通过PD API查看节点状态:
curl http://<pd1_ip>:2379/pd/api/v1/stores,确认TiKV节点处于”up”状态。
TiDB(SQL层)部署
TiDB负责SQL处理与事务管理,可部署在独立节点或与PD/TiKV混合部署(推荐独立节点):
-
创建数据目录:
sudo mkdir -p /tidb/tidb/data && sudo chown -R tidb:tidb /tidb/tidb -
配置TiDB:编辑
/tidb/deploy/conf/tidb.toml,设置监听地址、端口及PD节点地址:
[server] host = "0.0.0.0" port = 4000 status-port = 10080 [pd] endpoints = ["<pd1_ip>:2379", "<pd2_ip>:2379", "<pd3_ip>:2379"]
-
启动TiDB服务:
/tidb/deploy/bin/tidb-server --config=/tidb/deploy/conf/tidb.toml -
验证TiDB服务:使用
mysql -h <tidb_ip> -P 4000 -u root连接数据库,执行SELECT VERSION();确认服务正常。
监控组件部署与集群验证
Prometheus + Grafana监控
TiDB依赖Prometheus采集指标,Grafana可视化展示:
- 部署Prometheus:在独立节点解压grafana-prometheus包,配置
prometheus.yml添加TiDB、TiKV、PD的抓取目标,启动prometheus --config.file=/tidb/deploy/conf/prometheus.yml。 - 部署Grafana:安装Grafana后,导入官方提供的TiDB监控Dashboard(ID:7362),配置Prometheus数据源。
集群功能验证
- 创建数据库与表:通过MySQL客户端执行以下SQL:
CREATE DATABASE test_db; USE test_db; CREATE TABLE test_table (id INT PRIMARY KEY, name VARCHAR(20)); INSERT INTO test_table VALUES (1, 'TiDB Test'); SELECT * FROM test_table;
- 测试高可用:停止任意TiKV节点(
kill $(pgrep tikv-server)),观察集群是否自动完成数据迁移(通过PD API确认节点状态)。
常见问题与优化建议
- 部署失败排查:检查端口占用(
netstat -tulnp | grep <端口>)、防火墙规则及日志文件(/tidb/deploy/log/)。 - 性能优化:调整TiKV的
rocksdb.max-background-jobs参数以优化I/O,或为PD节点增加SSD提升元数据查询速度。 - 版本升级:建议通过TiUP工具进行滚动升级,避免服务中断。
通过以上步骤,即可在虚拟机环境中成功搭建一套功能完整的TiDB集群,实际生产环境中,还需结合业务需求调整配置参数,并定期进行数据备份与性能监控。


















