参加了社区的免费考试活动,为了配合303课程学习,于是想搭建套tidb测试集群,奈何办公笔记本电脑资源太低了,于是搞了一套最简测试集群练手学习
cpu:双核4线程低压u
内存:4GB DDR4
硬盘:nvme ssd 20GB ext4
os:vmware 17内的debian13(无UI),官方推荐用rhel,不想折腾换系统,生产环境请按官方要求
swap:2GB 生产环境要求关闭swap,奈何该测试环境4GB内存实在太少,保留2GB的swap防止OOM
在2核CPU、4GB内存、20GB SSD的Linux环境下,可以部署TiDB的轻量功能测试环境(即tiup playground),但无法运行完整的分布式集群(即tiup cluster)模式
一、可行性前提与限制条件 部署方式选择:必须使用TiDB官方提供的tiup playground单机测试模式,该模式会自动启动精简版组件,而非标准多节点分布式集群。 硬件适配性:该配置远低于官方文档中开发测试环境的最低要求(TiDB单组件8核+16GB内存),仅能满足基础功能验证需求,无法支撑性能相关测试。 磁盘空间约束:20GB SSD仅能满足系统基础占用+TiDB精简组件的日志、元数据存储,无法导入大量测试数据,也不能开启TiFlash等扩展组件。 二、具体部署优化要点 组件精简配置 启动时指定最小实例数:tiup playground --db 1 --pd 1 --kv 1,仅启动单实例的TiDB、PD、TiKV,避免多组件抢占资源。 禁用非必要组件:不部署TiFlash、TiCDC、监控面板等额外服务,进一步降低资源占用。 支持验证MySQL协议兼容性、基础SQL语法、简单事务操作等核心功能。 绝对不能用于性能压测、分布式特性验证(如多副本同步、水平扩容),否则会出现严重卡顿甚至组件崩溃。
三、 核心启动命令
安装基础依赖
apt update && sudo apt install -y curl wget sshpass numactl
安装 TiUP(如果尚未安装):
curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
写入环境变量
source ~/.bash_profile
终端执行以下命令。该命令仅启动最核心的三个组件(1个PD、1个TiKV、1个TiDB),并禁用了高资源消耗的监控和 TiFlash。
tiup playground v6.5.12 --db 1 --pd 1 --kv 1 --tiflash 0 --without-monitor --host 0.0.0.0
命令参数解析:
v6.5.12:指定一个较新且稳定的版本(也可替换为 v7.5.0等,建议避免使用太新的版本以节省资源需求)。 --db 1 --pd 1 --kv 1:强制只启动 1 个实例,避免多进程抢占 CPU。 --tiflash 0:关键步骤,明确不启动 TiFlash 列存引擎(TiFlash 至少需要 2-4GB 内存,必须关闭)。 --without-monitor:关键步骤,不启动 Prometheus 和 Grafana 监控组件(监控组件通常会占用 1-2GB 内存,必须关闭)。
--host 0.0.0.0:默认只监听 127.0.0.1。 如果需要从其他机器连接,需添加 --host 0.0.0.0 参数,并确保防火墙开放 4000 端口
--tag:如果希望持久化数据,需要在启动集群时添加 TiUP 的 --tag 参数,指定 tag 以保留数据--tag ${tag_name}。带 Tag,停止集群后,数据会保留在 ~/.tiup/data/<tag_name> 目录下
注意:无法使用 tiup client 连接带有 --tag 的 TiDB Playground 集群,由于 tiup client 本身不支持通过命令行参数直接指定 tag,故无法识别手动指定的 tag。
另外因为TiDB Dashboard是pd内置的组件,需求极低,实测30--40MB内存足矣,所以建议保留,可满足基础监控功能。
验证连接 新开一个终端窗口,使用 MySQL 客户端连接测试: mysql -h 127.0.0.1 -P 4000 -u root
销毁实例和卸载
tiup clean --all = 清空数据(删库),保留程序(组件)。 tiup uninstall = 删除程序(组件)。
卸载特定版本的组件
tiup uninstall tidb:v6.5.12 tiup uninstall tikv:v6.5.12 tiup uninstall pd:v6.5.12
四、 总结 能跑吗? 能,实测内存共占用3GB左右,还有1GB可用,但该环境仅限于功能验证(建表、增删改查、事务测试)。 不能做什么? 严禁进行压力测试、大数据量导入(超过几百万行)、分布式特性测试(如扩缩容、故障切换)。 核心技巧: 必须加 --tiflash 0 和 --without-monitor,这是 4GB 内存环境下成功的关键。如果是4C8G30GB以上的配置,建议还是使用tiup cluster模拟部署生产环境集群,功能更全面,可以更好的满足学习和测试需要。