TiDB 分布式数据库:入门与安装实践
适用读者:DBA、开发、数据平台工程师 目标:通过 TiUP 快速启动 TiDB 集群,理解组件与基本运维。
1. TiDB 概述
- 类型:开源分布式 NewSQL,兼容 MySQL 协议
- 组件:TiDB(SQL 层)、PD(调度)、TiKV(存储)、TiFlash(列存-HTAP)
- 亮点:弹性扩展、强一致、在线扩缩容、HTAP、MySQL 兼容
2. 快速体验(TiUP Playground)
要求:Linux/macOS,内存 ≥ 8GB
# 安装 TiUP(中国大陆建议加环境代理)
curl --proto '=https' -fsSL https://tiup.io/install.sh | sh
source ~/.tiup/bin/tiup
# 启动本地体验集群(v7.5.0 示例)
TiUP playground v7.5.0 --db 1 --pd 1 --kv 3 --tiflash 1
# 输出包含 TiDB 连接地址,默认 4000 端口
# 连接
mysql -h127.0.0.1 -P4000 -uroot --comments
3. 生产化部署(TiUP Cluster)
# 1) 安装 tiup cluster 组件
tiup update --self && tiup update cluster
# 2) 拓扑示例(topology.yaml)
cat > topology.yaml <<'YAML'
global:
user: tidb
ssh_port: 22
deploy_dir: /data/tidb-deploy
data_dir: /data/tidb-data
pd_servers:
- host: 10.0.1.10
- host: 10.0.1.11
- host: 10.0.1.12
tidb_servers:
- host: 10.0.1.20
- host: 10.0.1.21
tikv_servers:
- host: 10.0.1.30
- host: 10.0.1.31
- host: 10.0.1.32
tiflash_servers:
- host: 10.0.1.40
monitoring_servers:
- host: 10.0.1.50
grafana_servers:
- host: 10.0.1.51
alertmanager_servers:
- host: 10.0.1.52
YAML
# 3) 部署与启动
tiup cluster deploy prod v7.5.0 topology.yaml --user root -p
tiup cluster start prod
tiup cluster display prod
4. 基本操作与维护
-- 创建库表
CREATE DATABASE demo;
USE demo;
CREATE TABLE t1(id BIGINT PRIMARY KEY, name VARCHAR(50));
INSERT INTO t1 VALUES (1,'hello'),(2,'tidb');
SELECT * FROM t1;
-- 查看集群信息(在 SQL 中)
SHOW CONFIG;
SHOW PLACEMENT LABELS;
# 扩容一个 TiKV
tiup cluster scale-out prod scale.yaml
# 滚动升级
tiup cluster upgrade prod v7.6.0
# 备份恢复(BR)
BR backup full --pd http://10.0.1.10:2379 --storage s3://bucket/backup --s3.endpoint http://minio:9000
BR restore full --pd http://10.0.1.10:2379 --storage s3://bucket/backup
5. 常见问题
- SQL 兼容:MySQL 绝大部分语法兼容,但个别系统函数/变量不同
- 事务:悲观/乐观事务模式选择,长事务避免
- 写热点:通过 SHARD_ROW_ID_BITS/分区/Placement Rules 规避
- GC:GC 生命周期与大事务冲突,合理设置 tikv_gc_life_time
6. 最佳实践
1) 三副本;2) 使用 Placement Rules 管理多机房;3) 避免巨表单分区;4) 压测容量规划;5) 定期备份与演练;6) 监控与告警(Prometheus/Grafana);7) 版本跟随 LTS
参考: - TiDB 文档 https://docs.pingcap.com/ - TiUP https://tiup.io