Debian 上 MySQL 慢,通常是配置、资源、存储或系统层面的问题,而不是 Debian 本身慢。下面按最常见原因 → 排查方法 → 解决建议给你一个系统清单。
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
Debian + MySQL 在以下场景会非常慢:
✅ 检查:
iostat -x 1
看 %util 是否接近 100%
✅ 建议:
innodb_flush_method = O_DIRECT内存不足 → MySQL 被 swap → 巨慢
✅ 检查:
free -h
swapon --show
✅ 建议:
swapinesssysctl vm.swappiness=10
这是开发层面最常见问题。
✅ 排查慢查询:
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
Debian 默认启用 AppArmor,可能影响 MySQL 文件访问。
✅ 检查:
aa-status | grep mysql
✅ 可选:
systemctl disable apparmor
(仅在你确认安全的情况下)
systemd有时 MySQL 启动慢是因为:
/var/lib/mysql 在慢存储上✅ 检查:
systemctl status mysql
journalctl -u mysql
Debian Stable 常带 MySQL 5.7 / 8.0 老小版本
✅ 建议:
# 1. 内存
free -h
# 2. 磁盘
iostat -x 1
# 3. MySQL 状态
mysqladmin status
mysql -e "SHOW PROCESSLIST;"
# 4. 慢查询
cat /var/log/mysql/slow.log
你可以贴出:
my.cnf 内容(脱敏)我可以直接帮你定位是哪一类慢,并给具体参数。