针对 1核1GB(1C1G) 这种极小配置的轻量级云服务器,部署 MySQL 的核心挑战在于内存极其紧张。MySQL 默认配置会预留大量内存给缓冲池和线程栈,直接安装官方原版 MySQL 极易导致 OOM(Out of Memory)崩溃。
✅ 最佳推荐:MariaDB 10.5 或 10.6
为什么选 MariaDB?
- 更省资源:MariaDB 是 MySQL 的分支,性能相当,但默认内存占用更低,优化更好。
- 稳定性高:在低配环境下表现优于 MySQL 8.0。
- 兼容性好:完全兼容 MySQL 协议,应用无需修改代码即可连接。
- 社区活跃:Debian/Ubuntu/CentOS 等主流系统源中均有良好支持。
⚠️ 不推荐 MySQL 8.0:其默认
innodb_buffer_pool_size较大,且加密、事务日志机制更重,1G 内存极易被耗尽。
❌ 不推荐 MySQL 5.7:虽比 8.0 轻,但仍不如 MariaDB 稳定,且已停止主流支持。
🛠️ 关键优化步骤(必须执行!)
即使使用 MariaDB,也必须手动调整配置,否则仍可能崩溃。以下是针对 1C1G 服务器的 /etc/my.cnf 或 /etc/mysql/mariadb.conf.d/50-server.cnf 最小化配置示例:
[mysqld]
# 基础设置
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
# 🔥 核心优化:限制内存使用
innodb_buffer_pool_size = 128M # 最大不超过物理内存的 25%~30%,1G 服务器建议 128M~256M
innodb_log_file_size = 48M # 减少日志文件大小以节省内存
innodb_flush_method = O_DIRECT # 避免双重缓存,提升 I/O 效率
# 线程与连接
max_connections = 50 # 根据实际需求调整,默认 151 太高
thread_stack = 192K # 减小线程栈大小,1G 内存下至关重要
join_buffer_size = 128K # 减小联合查询缓冲区
sort_buffer_size = 128K # 减小排序缓冲区
read_buffer_size = 128K # 减小读缓冲区
read_rnd_buffer_size = 128K # 减小随机读缓冲区
# 其他优化
query_cache_type = 0 # MySQL 5.7+/MariaDB 10.2+ 已弃用,设为 0
table_open_cache = 400 # 根据表数量调整,不宜过大
open_files_limit = 65535 # 允许打开更多文件
# 字符集
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
💡 额外建议
-
启用 Swap 分区(重要!)
虽然 Swap 会降低性能,但在 1G 内存服务器上,它是防止 OOM 崩溃的“最后一道防线”。建议创建 2GB Swap。sudo fallocate -l 2G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab -
监控内存使用
使用htop或free -m实时监控,确保 MySQL 进程未持续占用超过 800MB。 -
考虑替代方案(如果业务允许)
- SQLite:如果数据量小(< 10万行)、并发低(< 10 QPS),SQLite 是零配置、零内存占用的绝佳选择。
- MongoDB + WiredTiger:若为文档型数据,MongoDB 在低配下可通过调整
wiredTigerCacheSize控制内存,但复杂度高于 MySQL。
-
定期清理日志
开启 binlog 并设置过期时间:expire_logs_days = 7 max_binlog_size = 100M
✅ 总结
| 项目 | 推荐选择 |
|---|---|
| 数据库版本 | MariaDB 10.5 或 10.6 |
| 关键参数 | innodb_buffer_pool_size=128M, thread_stack=192K |
| 必备操作 | 启用 2GB Swap 分区 |
| 适用场景 | 小型网站、个人博客、测试环境、低并发应用 |
📌 最后提醒:1C1G 仅适合轻量级、低并发场景。若未来业务增长,建议升级至 2C4G 或以上配置,或迁移到云数据库 RDS。
轻量云Cloud