Debian 上 MySQL(或 MariaDB,Debian 默认常带 MariaDB)崩溃的原因很多,下面按常见程度和排查思路给你一个系统性的说明。
这是 Debian 服务器上 MySQL 崩溃的第一大原因。
表现:
systemctl status mysql 显示 killeddmesg 中有 Out of memory: Killed process检查:
dmesg | grep -i oom
free -h
解决:
innodb_buffer_pool_sizeMySQL 无法写日志或临时文件时会直接崩溃。
检查:
df -h
重点看:
/var/lib/mysql/tmp解决:
异常关机、断电、强制 kill 会导致 InnoDB 表空间损坏。
日志常见:
InnoDB: Database page corruption
InnoDB: Assertion failure
解决:
systemctl stop mysql
innodb_force_recovery = 1~6
(仅用于导出数据,不是长期方案)
如 my.cnf 中参数写错。
表现:
检查:
mysqld --verbose --help | head
journalctl -u mysql
/var/lib/mysql 权限被改坏。
检查:
ls -ld /var/lib/mysql
正确一般为:
drwx------ mysql mysql
修复:
chown -R mysql:mysql /var/lib/mysql
Debian 默认:
mysql → mariadb-server
崩溃日志在:
/var/log/mysql/error.log
journalctl -u mariadb
如果 MySQL 反复崩溃:
systemctl status mysql
可能看到:
start request repeated too quickly
Debian 默认启用 AppArmor。
表现:
检查:
aa-status
cat /var/log/syslog | grep apparmor
# 1. 看服务状态
systemctl status mysql
# 2. 看错误日志
journalctl -u mysql -n 100
cat /var/log/mysql/error.log
# 3. 看系统资源
free -h
df -h
dmesg | tail
# 4. 手动启动看报错
mysqld_safe --user=mysql
你可以直接贴出:
journalctl -u mysql 或 error.log 的报错我可以根据日志精准判断是哪一种崩溃。