针对1核1G低配环境部署MySQL 5.7,需重点优化内存和并发配置。以下是关键配置调优建议:
一、核心配置文件位置
- CentOS 7:
/etc/my.cnf - Debian 10:
/etc/mysql/my.cnf或/etc/mysql/mysql.conf.d/mysqld.cnf
二、必须调整的关键参数
[mysqld]
# 基础配置
innodb_buffer_pool_size = 256M # 关键!设为物理内存的20-25%
innodb_log_file_size = 64M # 减少日志文件大小
innodb_log_buffer_size = 8M # 日志缓冲区
# 连接和线程优化
max_connections = 50 # 限制连接数,避免内存耗尽
thread_cache_size = 4 # 线程缓存
table_open_cache = 256 # 表缓存
# 查询缓存(MySQL 5.7默认禁用,建议保持)
query_cache_type = 0 # 完全禁用查询缓存
# InnoDB优化
innodb_flush_log_at_trx_commit = 2 # 平衡性能与安全(0-性能优先,1-安全优先,2-折中)
innodb_flush_method = O_DIRECT # 直接I/O,减少双缓冲
innodb_file_per_table = ON # 每个表独立表空间
# 临时表和排序
tmp_table_size = 32M
max_heap_table_size = 32M
sort_buffer_size = 2M # 每个连接排序缓冲区
join_buffer_size = 2M # 连接操作缓冲区
# 二进制日志(如不需要主从复制)
# skip-log-bin # 可禁用二进制日志节省IO
三、操作系统级优化
1. 内存管理
# 调整swappiness(减少交换)
echo 'vm.swappiness=10' >> /etc/sysctl.conf
sysctl -p
# 检查并限制内存使用
# 确保系统有足够内存供OS使用
2. 文件描述符限制
# 编辑 /etc/security/limits.conf
mysql soft nofile 65535
mysql hard nofile 65535
四、部署后验证
-
检查配置生效:
SHOW VARIABLES LIKE 'innodb_buffer_pool_size'; SHOW STATUS LIKE 'Threads_connected'; -
监控工具:
# 实时监控 top -p $(pgrep mysqld) # 或使用 mysqladmin -u root -p extended-status
五、注意事项
- 备份配置:修改前备份原配置文件
- 逐步调整:每次修改1-2个参数,观察效果
- 监控指标:
- 内存使用率(确保<80%)
- 交换分区使用(应为0或接近0)
- 连接数使用率
六、针对不同场景的微调
- 读多写少:可适当增加
innodb_buffer_pool_size到300M - 写密集:保持
innodb_log_file_size较小,增加innodb_log_buffer_size - 混合负载:保持上述平衡配置
七、安全建议
- 删除测试数据库和匿名用户
- 设置强密码并限制root远程登录
- 定期备份和日志轮转
此配置在1核1G环境下能确保MySQL稳定运行,避免内存溢出。根据实际负载情况,可进一步微调缓冲区大小和连接参数。
CLOUD技术笔记