You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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修复,暂不直接重装

  1. 强制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
  2. 检查文件系统与硬件

    • 运行fsck检查磁盘文件系统完整性(需先卸载对应分区或进入单用户模式)
    • 用smartctl检查磁盘健康:smartctl -H /dev/sda(替换为实际磁盘设备)
    • 检测内存错误:运行memtester或mcelog工具
  3. 验证升级后的依赖与配置

    • 检查依赖库是否完整: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/
      
    • 重启服务观察是否恢复正常

最终选项:彻底卸载重装(仅修复无效时使用)

  1. 备份所有数据

    • 确保已完成全量数据库备份,同时备份配置文件:cp -r /etc/mysql/ /root/mysql_config_backup/
  2. 彻底清理相关包与文件

    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/
    
  3. 重新安装MariaDB

    apt update
    apt install mariadb-server mariadb-client
    
  4. 恢复数据与配置

    • 导入数据库备份:mysql < all_databases_backup.sql
    • 逐步恢复自定义配置(避免直接覆盖默认配置,防止再次引入问题)

内容的提问来源于stack exchange,提问作者Kenny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 05:36:07