Debian Bullseye下MariaDB频繁重启求助(含InnoDB致命错误)
MariaDB频繁重启问题排查与解决建议
问题背景
服务器经Debian Stretch→Buster→Bullseye三次升级后,MariaDB(版本10.5.15-MariaDB-0+deb11u1-log)出现频繁重启现象(每小时6-10次),导致邮件服务因无法访问虚拟表而中断。
关键错误日志
系统服务日志
执行命令查看服务状态日志:
cat /var/log/syslog | grep "mariadb.service"
返回内容:
Aug 19 10:34:45 srv systemd[1]: mariadb.service: Main process exited, code=killed, status=6/ABRT Aug 19 10:34:45 srv systemd[1]: mariadb.service: Failed with result 'signal'. Aug 19 10:34:50 srv systemd[1]: mariadb.service: Scheduled restart job, restart counter is at 401.
InnoDB致命错误日志
Aug 19 10:34:45 srv mariadbd[22091]: 2022-08-19 10:34:45 11917 [ERROR] [FATAL] InnoDB: Page old data size 15870 new data size 8280, page old max ins size 36 new max ins size 7626 Aug 19 10:34:45 srv mariadbd[22091]: 220819 10:34:45 [ERROR] mysqld got signal 6 ; Aug 19 10:34:45 srv mariadbd[22091]: This could be because you hit a bug. It is also possible that this binary Aug 19 10:34:45 srv mariadbd[22091]: or one of the libraries it was linked against is corrupt, improperly built, Aug 19 10:34:45 srv mariadbd[22091]: or misconfigured. This error can also be caused by malfunctioning hardware. Aug 19 10:34:45 srv mariadbd[22091]: We will try our best to scrape up some info that will hopefully help Aug 19 10:34:45 srv mariadbd[22091]: diagnose the problem, but since we have already crashed, Aug 19 10:34:45 srv mariadbd[22091]: something is definitely wrong and this may fail. Aug 19 10:34:45 srv mariadbd[22091]: Server version: 10.5.15-MariaDB-0+deb11u1-log Aug 19 10:34:45 srv mariadbd[22091]: key_buffer_size=792723456 Aug 19 10:34:45 srv mariadbd[22091]: read_buffer_size=131072 Aug 19 10:34:45 srv mariadbd[22091]: max_used_connections=15 Aug 19 10:34:45 srv mariadbd[22091]: max_threads=2002 Aug 19 10:34:45 srv mariadbd[22091]: thread_count=12
翻译后核心信息:
2022-08-19 10:34:45 11917 [错误] [致命] InnoDB:页面旧数据大小15870,新数据大小8280;页面旧最大插入大小36,新最大插入大小7626
220819 10:34:45 [错误] mysqld收到信号6;
这可能是触发了程序bug,也可能是二进制文件或依赖库损坏、编译不当、配置错误,或是硬件故障导致。
我们会尽力收集诊断信息,但由于服务已崩溃,部分信息可能无法获取。
服务器版本:10.5.15-MariaDB-0+deb11u1-log
key_buffer_size=792723456
read_buffer_size=131072
max_used_connections=15
max_threads=2002
thread_count=12
解决建议
优先尝试InnoDB修复,暂不直接重装
强制InnoDB恢复
- 编辑MariaDB配置文件(通常为
/etc/mysql/mariadb.conf.d/50-server.cnf),在[mysqld]段落添加:innodb_force_recovery = 1 - 重启服务:
systemctl restart mariadb - 若仍崩溃,逐步将恢复级别提高到2、3、4(注意:级别4及以上可能导致数据丢失,仅作为最后尝试)
- 服务启动后立即全量备份数据库:
mysqldump --all-databases > all_databases_backup.sql
- 编辑MariaDB配置文件(通常为
检查文件系统与硬件
- 运行
fsck检查磁盘文件系统完整性(需先卸载对应分区或进入单用户模式) - 用
smartctl检查磁盘健康:smartctl -H /dev/sda(替换为实际磁盘设备) - 检测内存错误:运行
memtester或mcelog工具
- 运行
验证升级后的依赖与配置
- 检查依赖库是否完整:
ldd /usr/sbin/mariadbd | grep -i "not found" - 恢复默认配置对比测试:
mv /etc/mysql/mariadb.conf.d/50-server.cnf /etc/mysql/mariadb.conf.d/50-server.cnf.bak cp /usr/share/mysql/mariadb.conf.d/50-server.cnf /etc/mysql/mariadb.conf.d/ - 重启服务观察是否恢复正常
- 检查依赖库是否完整:
最终选项:彻底卸载重装(仅修复无效时使用)
备份所有数据
- 确保已完成全量数据库备份,同时备份配置文件:
cp -r /etc/mysql/ /root/mysql_config_backup/
- 确保已完成全量数据库备份,同时备份配置文件:
彻底清理相关包与文件
systemctl stop mariadb apt purge mariadb-server mariadb-client mariadb-common mysql-common apt autoremove --purge rm -rf /var/lib/mysql/ /var/log/mysql/ /etc/mysql/重新安装MariaDB
apt update apt install mariadb-server mariadb-client恢复数据与配置
- 导入数据库备份:
mysql < all_databases_backup.sql - 逐步恢复自定义配置(避免直接覆盖默认配置,防止再次引入问题)
- 导入数据库备份:
内容的提问来源于stack exchange,提问作者Kenny
相关产品推荐
相关产品推荐

