CentOS 7或Debian 10环境下,1核1G部署MySQL 5.7需要哪些关键配置调优?

针对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

四、部署后验证

  1. 检查配置生效

    SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
    SHOW STATUS LIKE 'Threads_connected';
  2. 监控工具

    # 实时监控
    top -p $(pgrep mysqld)
    # 或使用
    mysqladmin -u root -p extended-status

五、注意事项

  1. 备份配置:修改前备份原配置文件
  2. 逐步调整:每次修改1-2个参数,观察效果
  3. 监控指标
    • 内存使用率(确保<80%)
    • 交换分区使用(应为0或接近0)
    • 连接数使用率

六、针对不同场景的微调

  • 读多写少:可适当增加innodb_buffer_pool_size到300M
  • 写密集:保持innodb_log_file_size较小,增加innodb_log_buffer_size
  • 混合负载:保持上述平衡配置

七、安全建议

  1. 删除测试数据库和匿名用户
  2. 设置强密码并限制root远程登录
  3. 定期备份和日志轮转

此配置在1核1G环境下能确保MySQL稳定运行,避免内存溢出。根据实际负载情况,可进一步微调缓冲区大小和连接参数。

云服务器