断电后MariaDB Server无法启动的故障排查请求
故障原因与解决方法
核心故障原因
- 缺失插件/存储引擎库文件:断电前你的MariaDB启用了多个可选插件(
auth_gssapi.so、cracklib_password_check.so)和存储引擎(Connect、OQGraph、RocksDB、TokuDB),但当前系统中这些组件的共享库文件丢失或损坏,导致启动时无法加载。 - 事务恢复流程受阻:MariaDB崩溃后依赖
tc.log(事务协调日志)完成未提交事务的恢复,恢复要求所有崩溃时启用的引擎必须正常加载,否则恢复失败,直接终止启动。
数据是否丢失?
从错误日志中InnoDB的初始化信息来看:
- InnoDB已完成缓冲池初始化,日志序列号(
log sequence number 2938465608)正常,说明InnoDB核心数据文件(共享表空间、独立表文件)未损坏。 - 你的核心数据大概率没有丢失,只是恢复流程因插件缺失被卡住。
解决步骤
方法1:安装缺失的插件包(优先推荐)
针对Debian/Ubuntu系统,执行以下命令安装对应插件:
sudo apt update sudo apt install mariadb-plugin-connect mariadb-plugin-cracklib-password-check mariadb-plugin-oqgraph mariadb-plugin-rocksdb mariadb-plugin-tokudb mariadb-plugin-auth-gssapi
安装完成后,重启MariaDB服务:
sudo systemctl restart mariadb
方法2:强制跳过事务恢复(无法安装插件时使用)
- 停止残留的MariaDB进程:
sudo systemctl stop mariadb sudo pkill mysqld
- 备份事务协调日志(防止操作失误):
sudo cp /var/lib/mysql/tc.log /var/lib/mysql/tc.log.bak
- 删除原
tc.log文件:
sudo rm /var/lib/mysql/tc.log
- 使用启发式恢复启动服务:
sudo mysqld_safe --tc-heuristic-recover=commit
注:
commit会提交所有未完成的事务,rollback会回滚,优先选commit以减少数据损失。
- 启动成功后,立即全量备份数据:
mysqldump -u root -p --all-databases > full_backup.sql
- 禁用不需要的插件:编辑
/etc/mysql/my.cnf(或对应配置文件),找到类似plugin_load_add=ha_connect.so的配置行,注释掉不需要的插件,避免后续启动再出现问题。
内容的提问来源于stack exchange,提问作者Ali
相关产品推荐
相关产品推荐

