温馨提示×

为什么Debian MySQL很慢

小樊
35
2026-09-23 03:25:13
栏目: 云计算

Debian 上 MySQL 慢,通常是配置、资源、存储或系统层面的问题,而不是 Debian 本身慢。下面按最常见原因 → 排查方法 → 解决建议给你一个系统清单。


一、最常见原因(占 90% 情况)

1. 使用 MySQL 默认配置(没调优)

Debian 默认 my.cnf 非常保守,适合小机器,不适合生产。

典型问题:

  • innodb_buffer_pool_size 太小(默认可能只有 128M)
  • 没有开启查询缓存(老版本)
  • 连接数限制低

✅ 检查:

mysql -e "SHOW VARIABLES LIKE 'innodb_buffer_pool_size';"

✅ 建议(示例,8G 内存):

innodb_buffer_pool_size = 4G
max_connections = 200

2. 磁盘 I/O 慢(非常常见)

Debian + MySQL 在以下场景会非常慢:

  • 云服务器用 普通云盘 / 网络盘
  • 机械硬盘
  • 没用 SSD
  • 磁盘 IO 被其他进程占满

✅ 检查:

iostat -x 1

看 %util 是否接近 100%

✅ 建议:

  • 使用 SSD
  • 分离系统盘和数据盘
  • innodb_flush_method = O_DIRECT

3. swap 被频繁使用

内存不足 → MySQL 被 swap → 巨慢

✅ 检查:

free -h
swapon --show

✅ 建议:

  • 增加内存
  • 降低 swapiness
sysctl vm.swappiness=10

4. 表没有索引 / SQL 写得差

这是开发层面最常见问题。

✅ 排查慢查询:

SHOW VARIABLES LIKE 'slow_query_log';

开启慢查询日志:

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

5. Apparmor / SELinux 影响(Debian 上较少但存在)

Debian 默认启用 AppArmor,可能影响 MySQL 文件访问。

✅ 检查:

aa-status | grep mysql

✅ 可选:

systemctl disable apparmor

(仅在你确认安全的情况下)


二、Debian 特有注意点

1. Debian 默认用 systemd

有时 MySQL 启动慢是因为:

  • 数据目录权限不对
  • /var/lib/mysql 在慢存储上

✅ 检查:

systemctl status mysql
journalctl -u mysql

2. Debian 仓库 MySQL 版本较老

Debian Stable 常带 MySQL 5.7 / 8.0 老小版本

✅ 建议:

  • 使用 MySQL 官方 repo
  • 或改用 MariaDB(性能更好)

三、快速自测清单(你可以照着做)

# 1. 内存
free -h

# 2. 磁盘
iostat -x 1

# 3. MySQL 状态
mysqladmin status
mysql -e "SHOW PROCESSLIST;"

# 4. 慢查询
cat /var/log/mysql/slow.log

四、如果你愿意,我可以更精确帮你

你可以贴出:

  1. Debian 版本
  2. MySQL 版本
  3. 服务器配置(CPU / 内存 / 磁盘)
  4. 是 查询慢 还是 整体卡顿
  5. my.cnf 内容(脱敏)

我可以直接帮你定位是哪一类慢,并给具体参数。

0 踩