属于大家的
VPS知识分享站

2 核 4G 跑 MySQL 够吗?配置、连接数与磁盘选型

先说结论:2 核 4G 能跑小站和轻量业务,但 MySQL 的 buffer pool 只能给 1 到 1.5G;4 核 8G 适合中型站点和并发不高的 API;8 核 16G 起才谈得上“数据库专用机”。比起 CPU,MySQL 更吃内存和磁盘 IOPS。

选配置前先算三笔账:数据量、并发连接、峰值 QPS。数据量决定 buffer pool,连接数决定内存上限,QPS 决定 CPU 和磁盘。

内存怎么分

MySQL 内存大头是 InnoDB buffer pool,通常给物理内存的 50% 到 70%。剩下的留给连接、排序、临时表、系统和其他进程。

  • 2G 内存:buffer pool 512M 到 1G,只适合小库
  • 4G 内存:buffer pool 1G 到 2G,小站够用
  • 8G 内存:buffer pool 4G 到 5G,中型业务
  • 16G 以上:按数据热区给,别把整机内存吃满
# my.cnf 示例(4G 内存)
innodb_buffer_pool_size = 1536M
max_connections = 100
innodb_log_file_size = 256M
slow_query_log = 1
long_query_time = 0.5
数据库 buffer pool 与连接槽位的内存示意
buffer pool 给物理内存的 50% 到 70%,连接数按内存算上限。

CPU 和连接数

MySQL 单条查询主要吃单核,复杂聚合和并发才会吃多核。2 核适合低并发,4 核是常见起点,8 核以上要配合连接池和慢查询治理。

max_connections 不是越大越好。每个连接都占内存,连接数打满后新请求会排队。应用侧用连接池,数据库侧按内存算上限。

磁盘比 CPU 更重要

数据库最怕随机 IO 慢。选本地 SSD 或高 IOPS 云盘,别用网络存储跑热库;binlog、redo log、数据文件分开或至少保证足够空间。磁盘满了,MySQL 可能直接停写。

配置对照表

场景 配置 说明
个人站、小工具 2 核 4G,80G SSD buffer pool 1G 左右,日PV 几千
中型站点、API 4 核 8G,160G SSD buffer pool 4G,连接池 100 以内
高并发、订单库 8 核 16G 起 独立数据盘、主从、监控齐全
分析/报表 另开从库 别在主库跑大查询

参数和慢查询

SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
SHOW STATUS LIKE 'Threads_connected';
SHOW FULL PROCESSLIST;
SHOW ENGINE INNODB STATUS;

先开慢查询日志,把超过 0.5 秒的 SQL 捞出来,补索引、拆查询、避免 N+1。大多数“数据库慢”不是配置问题,是 SQL 和索引问题。

慢查询卡在管道里,索引像一本书加速它
大多数数据库慢不是配置问题,是 SQL 和索引问题。

备份怎么做

  • 逻辑备份:mysqldump,适合小库和迁移
  • 物理备份:XtraBackup,适合大库和快速恢复
  • binlog:按时间点恢复,必须开
  • 备份放站外,定期做恢复演练
mysqldump --single-transaction --routines --triggers \
  -u root -p appdb > /backup/appdb-$(date +%F).sql
数据库备份库与恢复护盾
备份要放站外,binlog 打开,定期做恢复演练。

常见坑

  • buffer pool 设太大,系统 OOM
  • max_connections 设太高,内存被连接吃光
  • 没开慢查询,问题全靠猜
  • 数据盘和系统盘共用,日志写满系统盘
  • 只备份数据不备份 binlog,恢复不到时间点
  • 主库跑报表,业务被拖慢

连接池和并发

应用侧连接池不是越大越好。连接数超过数据库能处理的并发,只会增加上下文切换和锁等待。按“数据库核数 × 2 到 4”估算,再压测确认;连接池空闲回收也要开,避免占着连接不干活。

主从和读写分离

读多写少的业务可以加从库,把报表、列表、搜索放从库,主库只处理写入和强一致读。注意主从延迟:刚写完立刻读从库可能读不到,关键链路要强制走主库或做延迟判断。

监控指标

至少盯这几个:连接数、QPS、慢查询数、InnoDB 缓冲池命中率、磁盘使用率、主从延迟。缓冲池命中率长期低于 95%,说明内存不够或查询太散;磁盘使用率超过 80% 就要清理或扩容。

云数据库和自建怎么选

云数据库省运维,自动备份、主从、监控都现成,但价格高、参数受限;自建灵活、便宜,但要自己负责备份、升级和故障。小团队优先云数据库,有 DBA 或成本敏感再自建。

什么时候该分库分表

单表几千万行、查询开始明显变慢时,先做索引优化、归档历史数据、读写分离;这些都不够再考虑分库分表。分库分表会带来跨库查询、事务和运维复杂度,别为了“看起来专业”提前上。

还有一条经验:数据库机器不要兼职跑应用、备份和爬虫,资源争抢时最先出问题的是 IO。

如果业务还在增长,配置至少留 30% 余量,别等磁盘和连接数都贴着上限才扩容。

数据库的监控告警要接到人,不要只发邮件到没人看的邮箱。

配置是起点,持续观察和调整才是日常。

建议每月复盘一次,按实际负载调整配置,别让默认值一直跑下去。

常见问题 FAQ

Q1:2 核 4G 能跑 MySQL 吗?

能跑小站和轻量业务,buffer pool 给 1G 左右,连接数控制在 100 以内。数据量大或并发高就上 4 核 8G。

Q2:MySQL 需要独立服务器吗?

数据量大、并发高、合规要求高时建议独立。小站和应用同机可以,但要给数据库留足内存和磁盘。

Q3:CPU 高还是 IO 高?

看慢查询和 iostat。复杂查询吃 CPU,随机读多、buffer pool 不够吃 IO。

Q4:云数据库和自建怎么选?

不想运维、要自动备份和主从,选云数据库;要可控成本、自定义参数,自建更灵活。

Q5:要不要上主从?

读多写少、需要容灾和备份窗口时上主从;单机也能跑,但故障恢复时间长。

总结

MySQL 选配置,先看数据量和连接数,再给 buffer pool 留够内存,最后选高 IOPS 磁盘。2 核 4G 能起步,4 核 8G 更稳,8 核 16G 以上再谈专用。慢查询和备份,比堆配置更重要。

需要一台独立数据库机器做测试或从库,可以按小时开一台萤光云香港 CN2 VPS,先跑一轮真实数据。

相关推荐

赞(0)
未经允许不得转载:VPS知识分享站 » 2 核 4G 跑 MySQL 够吗?配置、连接数与磁盘选型