MySQL 配置在线修改指南

发布于 阅读 64未分类

MySQL 的配置优化是提升数据库性能的关键步骤之一。在生产环境中,为了避免重启服务对业务造成影响,动态调整配置显得尤为重要。本文将详细介绍如何在线修改 MySQL 的最大连接数和慢日志时间,并扩展相关配置内容,帮助您更好地管理和优化 MySQL 数据库。

1. ​慢查询日志配置

慢查询日志用于记录执行时间超过指定阈值的 SQL 语句,帮助定位性能瓶颈。

1.1 查看当前慢查询时间阈值

mysql

mysql
SHOW GLOBAL VARIABLES LIKE '%long_query_time%';
1.2 修改慢查询时间阈值

将慢查询时间阈值设置为 5 秒:

mysql

mysql
SET GLOBAL long_query_time = 5;
1.3 关闭慢查询日志

mysql

mysql
SET GLOBAL slow_query_log = OFF;
1.4 相关配置扩展
  • 慢查询日志文件路径:通过 slow_query_log_file 参数指定日志文件路径。
  • 记录未使用索引的查询:通过 log_queries_not_using_indexes 参数记录未使用索引的查询。

mysql

mysql
SET GLOBAL slow_query_log_file = '/var/log/mysql/slow.log';
SET GLOBAL log_queries_not_using_indexes = ON;

2. ​最大连接数配置

最大连接数决定了 MySQL 可以同时处理的客户端连接数。

2.1 查看当前最大连接数

mysql

mysql
SHOW GLOBAL VARIABLES LIKE 'max_connections';
2.2 修改最大连接数

将最大连接数设置为 20000:

mysql

mysql
SET GLOBAL max_connections = 20000;
2.3 查看历史使用最多的连接数

mysql

mysql
SHOW STATUS LIKE 'Max_used_connections';
2.4 相关配置扩展
  • 线程缓存大小:通过 thread_cache_size 参数缓存线程,减少线程创建和销毁的开销。
  • 连接超时时间:通过 wait_timeout 和 interactive_timeout 参数设置连接的超时时间。

mysql

mysql
SET GLOBAL thread_cache_size = 64;
SET GLOBAL wait_timeout = 600;
SET GLOBAL interactive_timeout = 600;

3. ​InnoDB 缓冲池配置

InnoDB 缓冲池是 MySQL 中用于缓存数据和索引的内存区域。

3.1 修改 InnoDB 缓冲池大小

将 InnoDB 缓冲池大小设置为 128G:

mysql

mysql
SET GLOBAL innodb_buffer_pool_size = 128 * 1024 * 1024 * 1024;
3.2 查看缓冲池大小

mysql

mysql
SELECT (@@innodb_buffer_pool_size / 1024 / 1024) AS buffer_pool_size_in_MB;
SELECT (@@innodb_buffer_pool_size / 1024 / 1024 / 1024) AS buffer_pool_size_in_GB;
3.3 相关配置扩展
  • InnoDB 日志文件大小:通过 innodb_log_file_size 参数设置日志文件大小。
  • InnoDB 日志刷新策略:通过 innodb_flush_log_at_trx_commit 参数控制日志刷新频率。

mysql

mysql
SET GLOBAL innodb_log_file_size = 512M;
SET GLOBAL innodb_flush_log_at_trx_commit = 2;

4. ​配置文件修改

为了确保配置在 MySQL 重启后仍然生效,建议在配置文件(如 my.cnf 或 my.ini)中进行修改。

4.1 修改配置文件

ini

ini
[mysqld]
max_connections = 20000
slow_query_log = ON
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 5
innodb_buffer_pool_size = 128G
thread_cache_size = 64
wait_timeout = 600
interactive_timeout = 600
innodb_log_file_size = 512M
innodb_flush_log_at_trx_commit = 2
4.2 重启 MySQL 服务

bash

Bash
sudo systemctl restart mysql

5. ​总结

通过合理配置 MySQL 的最大连接数、慢日志时间和 InnoDB 缓冲池大小,可以显著提升数据库的性能和稳定性。

评论 (0)
0 / 500
暂无评论,快来抢沙发~