必须添加swap虚拟内存:低配服务器(≤2gb)编译mysql 8.0时cmake阶段需≥1.5gb空闲内存,仅靠调php或mysql运行时参数无效;应使用dd命令创建2gb swap文件并写入fstab,确保编译通过。

MySQL 8.0编译卡在“Generating configure”或直接OOM退出
宝塔面板在低内存(尤其是≤2GB)服务器上安装MySQL 8.0时,cmake阶段常因内存不足卡住,表现为终端长时间无响应、top显示cc1plus进程占满内存后被系统OOM killer干掉,日志里可能只看到Killed process而无具体错误。这不是配置问题,是物理内存硬限制导致的编译器崩溃。
为什么不能只靠调大PHP或MySQL参数解决
MySQL 8.0源码编译对内存是刚性需求:仅cmake阶段就需≥1.5GB空闲内存,链接阶段还会飙升。此时改my.cnf里的innodb_buffer_pool_size或宝塔面板的PHP内存限制完全无效——那些参数影响的是运行时,不是编译过程。你得先让二进制文件生成出来,才能谈后续配置。
添加SWAP前必须确认的三件事
执行前请逐条核对,漏一项都可能导致SWAP无效或系统更卡:
-
free -h确认当前无SWAP(输出中Swap行全为0) -
df -h /确认根分区剩余空间≥4GB(SWAP文件要写磁盘) -
cat /proc/sys/vm/swappiness值应为10或60(非0,否则内核拒绝使用SWAP)
用dd+mkswap快速建2GB可靠SWAP
别用fallocate——它在某些云盘(如腾讯轻量、阿里共享型)上创建的SWAP文件可能触发I/O错误导致MySQL编译仍失败。坚持用dd:
dd if=/dev/zero of=/swapfile bs=1G count=2 chmod 600 /swapfile mkswap /swapfile swapon /swapfile
加到开机启动(避免重启后失效):
echo '/swapfile none swap sw 0 0' >> /etc/fstab
验证是否生效:swapon --show应输出/swapfile和2g;再跑一次bt install mysql 8.0,编译速度会变慢但不再中断。
SWAP只是临时解法,真正长期稳定运行MySQL 8.0,建议把服务器升到4GB内存起步。2GB配SWAP能过编译,但日常查询稍复杂就容易触发频繁换页,响应延迟肉眼可感。











