TiDB 分布式 SQL 数据库教程

TiDB 是 PingCAP 开源的分布式 NewSQL 数据库,兼容 MySQL 协议,支持水平扩展和强一致性事务。TiDB 可以让你在不改变应用代码的情况下,将 MySQL 应用无缝迁移到分布式架构。本文将在搬瓦工 VPS 上使用 TiUP 工具部署 TiDB 并演示基本使用。

一、TiDB 架构概述

  • TiDB Server:SQL 层,负责解析 SQL、生成执行计划、与 TiKV 交互。无状态,可水平扩展。
  • TiKV:分布式 KV 存储引擎,数据自动分片(Region),每个 Region 使用 Raft 协议保证一致性。
  • PD(Placement Driver):集群调度器,管理 Region 的分布和负载均衡。

二、使用 TiUP 部署

2.1 安装 TiUP

curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
source ~/.bashrc
tiup --version

2.2 快速体验(Playground)

# 启动最小化集群(1 TiDB + 1 TiKV + 1 PD)
tiup playground v7.6.0 --tag mytest --db 1 --pd 1 --kv 1

# 搬瓦工低配方案优化内存参数
tiup playground v7.6.0 --tag mytest --db 1 --pd 1 --kv 1   --kv.config tiup_kv.toml   --db.config tiup_db.toml

创建 TiKV 配置文件 tiup_kv.toml

[rocksdb]
max-open-files = 256
[raftdb]
max-open-files = 256
[storage]
reserve-space = "0MB"
[storage.block-cache]
capacity = "256MB"

2.3 生产部署

创建拓扑配置文件 topology.yaml

global:
  user: "tidb"
  deploy_dir: "/tidb-deploy"
  data_dir: "/tidb-data"

pd_servers:
  - host: 192.168.1.10

tidb_servers:
  - host: 192.168.1.10

tikv_servers:
  - host: 192.168.1.10

monitoring_servers:
  - host: 192.168.1.10

grafana_servers:
  - host: 192.168.1.10
tiup cluster deploy mytidb v7.6.0 topology.yaml --user root
tiup cluster start mytidb
tiup cluster display mytidb

三、连接和使用

# 使用 MySQL 客户端连接
mysql -h 127.0.0.1 -P 4000 -u root

# 创建数据库和表(完全兼容 MySQL 语法)
CREATE DATABASE myapp;
USE myapp;

CREATE TABLE users (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) UNIQUE NOT NULL,
    email VARCHAR(100),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE orders (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    user_id BIGINT,
    amount DECIMAL(10, 2),
    status VARCHAR(20) DEFAULT 'pending',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    INDEX idx_user_id (user_id),
    INDEX idx_created_at (created_at)
);

INSERT INTO users (username, email) VALUES ('zhangwei', 'zhang@example.com');
INSERT INTO orders (user_id, amount) VALUES (1, 199.99);

四、TiDB 特有功能

# 查看 Region 分布
SELECT * FROM information_schema.tikv_region_status WHERE db_name = 'myapp' LIMIT 10;

# 自动 Region 分裂
# 当数据增长时 TiKV 会自动分裂 Region 并均衡到不同节点

# TiFlash 列式副本(HTAP 分析)
ALTER TABLE orders SET TIFLASH REPLICA 1;

# 强制使用 TiFlash 读取
SET @@tidb_isolation_read_engines = 'tiflash';
SELECT status, COUNT(*), SUM(amount) FROM orders GROUP BY status;

五、与 MySQL 的差异

  • 自增 ID 不保证连续(分布式环境下使用预分配段)。
  • 事务大小有限制(默认单事务 100MB)。
  • 部分 MySQL 特有语法不支持(如部分存储过程功能)。
  • 外键约束仅做语法兼容,不实际执行。

六、性能调优

# 查看慢查询
SELECT * FROM information_schema.slow_query WHERE query_time > 1 ORDER BY query_time DESC LIMIT 10;

# 执行计划分析
EXPLAIN ANALYZE SELECT * FROM orders WHERE user_id = 1 AND created_at > '2026-01-01';

# 收集统计信息
ANALYZE TABLE orders;

七、备份与恢复

# 使用 BR 工具备份
tiup br backup full --pd "192.168.1.10:2379" --storage "local:///data/backup"

# 恢复
tiup br restore full --pd "192.168.1.10:2379" --storage "local:///data/backup"

八、监控

# TiUP 部署会自动配置 Prometheus + Grafana
# Grafana 默认端口 3000,账号 admin/admin

# 查看集群状态
tiup cluster display mytidb

# 查看 TiDB 运行指标
curl http://localhost:10080/status

总结

TiDB 是将 MySQL 应用迁移到分布式架构的理想选择,MySQL 兼容性让迁移成本极低。在搬瓦工 VPS 上适合用于需要水平扩展的场景。如果你的需求更偏向分布式 PostgreSQL 兼容,可以参考 CockroachDB。选购搬瓦工 VPS 请查看 全部方案,使用优惠码 NODESEEK2026 享受 6.77% 折扣,通过 bwh81.net 进入官网。

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。