CentOS 7生产环境MariaDB 10.2突然无法启动,报错及插件问题求助
嗨,咱们一步步来解决这个MariaDB崩溃的问题——因为是生产服务器,咱们优先做安全、不破坏数据的检查:
排查与修复步骤
1. 先获取完整的崩溃日志信息
崩溃日志是定位问题的核心,先拿到详细报错:
- 查看MariaDB的专属错误日志:
如果这个路径不存在,试试tail -n 100 /var/log/mariadb/mariadb.log/var/log/mysql/error.log;或者通过systemd日志查看更完整的启动失败记录:
这些日志会告诉你崩溃的具体诱因,比如是表损坏、内存不足、权限冲突还是配置错误。journalctl -xeu mariadb.service
2. 检查数据库目录的权限
MariaDB进程需要对数据目录和日志目录有完整的读写权限,先确认:
- 默认数据目录是
/var/lib/mysql/,执行以下命令检查权限:
确保目录和文件的所有者/组都是ls -ld /var/lib/mysql/ ls -l /var/lib/mysql/ | head -20mysql:mysql,如果权限不对,执行修复:chown -R mysql:mysql /var/lib/mysql/ chmod 700 /var/lib/mysql/
3. 排查系统资源是否不足
status=6/ABRT(异常终止)经常和内存不足有关,先检查:
- 查看当前内存使用情况:
free -h - 检查是否有OOM(内存耗尽)杀死进程的记录:
如果是内存不足,临时可以释放页缓存缓解:dmesg | grep -i oom
长期需要调整MariaDB的内存配置(比如sync && echo 3 > /proc/sys/vm/drop_cachesmy.cnf里的innodb_buffer_pool_size参数),或者考虑服务器扩容。
4. 检查并修复损坏的数据库表
运行一年的数据库,若曾遭遇异常断电或强制终止,可能出现表损坏:
- 先停止MariaDB的错误启动进程:
systemctl stop mariadb.service - 以安全模式启动MariaDB(跳过权限验证和网络,避免外部连接干扰):
mysqld_safe --skip-grant-tables --skip-networking & - 登录数据库控制台:
mysql -u root - 对每个业务数据库执行检查表命令,比如检查
mydb数据库里的user表:
如果输出提示表损坏,执行修复:USE mydb; CHECK TABLE user;REPAIR TABLE user;注意:MyISAM表修复相对简单,InnoDB表若损坏严重,可能需要依赖备份恢复,但先通过
CHECK TABLE确认损坏程度。 - 修复完成后,关闭安全模式进程,再尝试正常启动服务:
mysqladmin shutdown systemctl start mariadb.service
5. 关于Plugin 'FEEDBACK' is disabled.提示
这个提示不是导致崩溃的原因,只是说明配置里禁用了反馈插件。如果想去掉这个提示,可在/etc/my.cnf或/etc/my.cnf.d/server.cnf的[mysqld]段添加:
plugin-load-add=feedback.so
但建议先解决崩溃问题,这个提示可以暂时忽略。
6. 检查配置文件是否存在语法错误
如果近期修改过MariaDB的配置文件,可能存在语法错误导致启动失败:
- 检查配置文件语法有效性:
如果有配置错误,会在这里直接提示,修复后再重启服务。mysqld --help --verbose
7. 修复损坏的二进制文件(不丢失数据)
如果以上步骤都没解决,可以尝试修复MariaDB的二进制文件——这个操作不会删除你的数据库数据,只是重新安装程序文件:
- 先检查已安装的MariaDB包是否有文件损坏:
rpm -V mariadb-server mariadb - 如果有损坏标记,执行重装(仅替换程序文件,保留数据):
完成后再尝试启动服务。rpm --reinstall mariadb-server mariadb
内容的提问来源于stack exchange,提问作者GTS Joe
相关产品推荐
相关产品推荐

