温馨提示×

centos mysql怎样调优参数

小樊
45
2026-10-14 13:16:13
栏目: 云计算

在 CentOS 上调优 MySQL(通常指 MySQL / MariaDB)参数,一般分为系统层面和MySQL 配置层面。下面给你一份实战向、循序渐进的调优指南,适用于 CentOS 7/8、MySQL 5.7/8.0、MariaDB 10.x。


一、先确认环境和版本

cat /etc/redhat-release
mysql -V
# 或
mariadb -V

MySQL 配置文件位置一般是:

  • MySQL:/etc/my.cnf 或 /etc/my.cnf.d/*.cnf
  • MariaDB:/etc/my.cnf.d/server.cnf

二、系统层面调优(CentOS)

1. 关闭 swap(或降低使用)

swapoff -a

永久关闭:注释 /etc/fstab 中 swap 行

2. 文件描述符限制

ulimit -n 65535

永久生效:

vim /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535

3. 内核参数(/etc/sysctl.conf)

net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
vm.swappiness = 1
sysctl -p

三、MySQL 核心参数调优(最常用)

1. 内存相关(最重要)

innodb_buffer_pool_size(占物理内存 60%~70%)

innodb_buffer_pool_size = 4G

innodb_log_file_size

innodb_log_file_size = 512M

key_buffer_size(MyISAM 用,InnoDB 可小)

key_buffer_size = 64M

2. 连接与线程

max_connections = 500
thread_cache_size = 100

查看当前连接:

SHOW STATUS LIKE 'Threads_%';

3. 查询缓存(MySQL 8 已移除)

MySQL 5.7:

query_cache_type = 0
query_cache_size = 0

高并发下建议关闭


4. InnoDB 调优

innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
innodb_file_per_table = 1

若要求强一致性(金融),trx_commit=1


5. 慢查询日志(必开)

slow_query_log = 1
slow_query_log_file = /var/log/mysql-slow.log
long_query_time = 1

分析:

mysqldumpslow -s t /var/log/mysql-slow.log

四、示例:4G 内存服务器 my.cnf

[mysqld]
innodb_buffer_pool_size = 2G
innodb_log_file_size = 256M
max_connections = 300
thread_cache_size = 50
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
slow_query_log = 1
long_query_time = 1

修改后重启:

systemctl restart mysqld

五、性能检查命令

SHOW GLOBAL STATUS;
SHOW ENGINE INNODB STATUS;
SHOW PROCESSLIST;

工具推荐:

  • mysqltuner.pl
  • pt-query-digest
  • prometheus + grafana

六、常见坑

❌ buffer pool 设太大导致 OOM
❌ 开了 swap 导致 MySQL 卡死
❌ max_connections 过高拖垮 CPU
❌ 忽略慢查询日志


如果你能告诉我:

  • CentOS 版本
  • MySQL / MariaDB 版本
  • 内存大小
  • 应用类型(Web / 电商 / 日志)

我可以帮你直接给出一份定制 my.cnf。

0 踩