MySQL 数据库报错 Plugin ‘InnoDB‘ init function returned error 的解决办法

2023-05-16

目录

  • 场景一:服务器突然重启,未正常关闭 MySQL
  • 场景二:服务器正常关机关不掉,然后强制 kill 掉 MySQL 进程
  • 解决方案

环境:CentOS 7.xMySQL 5.7

其实造成这种问题的原因有很多种,但是不管是什么问题,最终的原因一般是 redo log 造成的问题。

为什么说是 redo log 造成的呢,因为 redo log 对应的文件就是两个 ib_logfile 开头的文件:ib_logfile0、ib_logfile1;下面的问题都是和 ib_logfile 有关。
MySQL 引擎的具体原理,这里暂不深究了,等后续再详细整理。

下面是实际遇到的造成 InnoDB 引擎不能启动的场景:

由于测试环境经常折腾,对于下面的场景而言,更多的是测试环境出现的问题;生产的话一般操作很谨慎,也不会频繁关机,所以还没有在生产上折腾过。

场景一:服务器突然重启,未正常关闭 MySQL

在测试环境中,服务器直接强制断电(Power Off),并没有手动的关闭 MySQL,再次启动的时候就会发生这样的问题。

2023-03-21T05:30:22.710453Z 0 [ERROR] InnoDB: Ignoring the redo log due to missing MLOG_CHECKPOINT 
	between the checkpoint 9156630714 and the end 9156630528.
2023-03-21T05:30:22.710511Z 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
2023-03-21T05:30:23.311477Z 0 [ERROR] Plugin 'InnoDB' init function returned error.
2023-03-21T05:30:23.311521Z 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2023-03-21T05:30:23.311534Z 0 [ERROR] Failed to initialize plugins.
2023-03-21T05:30:23.311542Z 0 [ERROR] Aborting

问题的主要原因:

InnoDB: Ignoring the redo log due to missing MLOG_CHECKPOINT  between the checkpoint 9156630714 and the end 9156630528.
# InnoDB:忽略重做日志,因为检查点 9156630714 和结束 9156630528 之间缺少 MLOG_CHECKPOINT。

场景二:服务器正常关机关不掉,然后强制 kill 掉 MySQL 进程

就说巧不巧吧,再测试环境中,上面是直接断电有问题,然而本想正常关机,结果也不行;MySQL 一直卡在那里,尝试 kill 还是无法停止,无奈只好 kill -9 (强制退出)掉 MySQL

服务器启动后,开始启动 MySQL,然后报错如下:

2023-03-21T05:30:22.710511Z InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes
2023-03-21T05:30:22.710511Z InnoDB: than specified in the .cnf file 0 104857600 bytes!
2023-03-21T05:30:22.710511Z 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
2023-03-21T05:30:23.311477Z 0 [ERROR] Plugin 'InnoDB' init function returned error.
2023-03-21T05:30:23.311521Z 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2023-03-21T05:30:23.311534Z 0 [ERROR] Failed to initialize plugins.
2023-03-21T05:30:23.311542Z 0 [ERROR] Aborting

主要原因:

InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 104857600 bytes!

# 看问题是因为 ib_logfile0 实际的大小 5242880 与 cnf 文件中指定的 104857600 不一致;
# 大概率是丢数据造成的。

解决方案

看错误是 redo log 有问题;如果不知道这个日志文件存放在哪里,可以全局搜索一下:

# 从根目录开始搜索 ib_logfile 开头的文件
find ./ -name ib_logfile* 

./var/lib/mysql/ib_logfile1
./var/lib/mysql/ib_logfile0


# 在 /var/lib/mysql 目录下;将文件改个名字备份一下
cd /var/lib/mysql
mv ib_logfile0 ib_logfile0.bak
mv ib_logfile1 ib_logfile1.bak


# 启动 mysql
systemctl start mysqld

【注】直接删除 ib_logfile 文件,可能会造成部分数据丢失,建议操作之前先备份一下;万一出问题还能进行一下还原。

个人博客:Roc’s Blog

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL 数据库报错 Plugin ‘InnoDB‘ init function returned error 的解决办法 的相关文章

随机推荐

  • docker下gitlab安装配置使用

    docker 安装gitlab以及使用 一 安装及配置 1 gitlab镜像拉取 gitlab ce为稳定版本 xff0c 后面不填写版本则默认pull最新latest版本 docker pull gitlab gitlab ce 拉取镜像
  • 解决VMware上字特别小的问题

    在安装了vmware tools后 xff0c 屏幕虽然变大了 xff0c 但是字还是特别小 解决方法如下 xff1a 1 找到虚拟机上设置按钮 2 选择设备按钮 3 调整分辨率 xff08 我的电脑一开始默认的分辨率特别高 xff0c 我
  • 每天修Linux系统---关于libjpeg.so.8 && 简单的安装opencv的方法

    问题如图 xff1a 为了修这个东西我真的是费尽心力 xff0c 天天念叨 xff0c 就差卸载opencv重装 重装之前试了一下结果世界都亮了哥 xff01 xff01 xff01 解决方案如图 xff1a cv2没有报错了 xff01
  • Ubuntu22.04应用程序启动时闪退

    Ubuntu22 04启动应用程序时闪退 xff0c 添加程序启动时参数解决 今天尝试在ubuntu安装QQ音乐 xff0c 安装后启动时弹出一下就闪退了 命令行启动程序 xff0c 报错 xff1a FATAL gpu data mana
  • CNN 不变性

    CNN的平移不变性 xff1a 由于全局共享权值和pool操作 xff08 明显的特征被保存下来 xff0c 与位置没有关系 xff1f xff09 CNN的尺度不变性 xff1a 没有或者说具有一定的不变性 xff08 尺度变化不大 xf
  • Docker(四):网络管理

    Docker网络管理 一 xff1a Docker网络介绍1 1 none 网络1 2 host 网络1 3 Container1 4 Bridge 二 xff1a 端口映射 一 xff1a Docker网络介绍 Docker使用了Linu
  • k8S之Centos离线安装

    文章目录 前言一 主要策略二 建立自主可控的仓库1 软件仓库2 镜像仓库 三 k8s安装步骤1 基础环境准备2 安装docker3 安装K8S组件4 初始化k8s主节点5 检查集群状态6 安装flannel网络插件7 添加worker节点
  • vue3实际开发中遇到的问题:setup遇到异步请求逻辑时结合async使用方法

    setup执行在 VUE实例的beforeCreate 与created 之前 函数抛出的逻辑内容包括数据和方法都已完成 setup引入的JS逻辑 span class token keyword export span span clas
  • socket TCP编程模型实例1

    功能需求 xff1a 将本地文件夹下的source文件通过TCP备份到远程服务器 运行环境 xff1a unbuntu 客户端代码 xff1a 1 include lt stdio h gt 2 include lt fcntl h gt
  • 【Python】paramiko模块安装报错的解决办法

    背景 xff1a 需要使用paramiko模块 xff0c 结果安装的时候就报错了 xff0c 折腾了很久 xff0c 决定记录 安装parmiko的步骤 xff1a 1 安装pycrypto xff1a 但是报错 xff0c 报错内容如下
  • SpringBoot 修改项目包名,启动项目提示:Error: Could not find or load main class xxx.xxx.xxxApplication

    近期要写一个架构相同的项目 xff0c 所以为了省事就将原有项目直接改了项目名以及项目的包名直接又是一套系统 xff0c 心里简直美滋滋 当一切就绪的时候 xff0c 开始运行项目 xff0c 然后控制台却报了一个错 xff1a Error
  • JDK 8 如何通过 LocalDate 计算两个日期相差的天数

    JDK 8 如何通过 LocalDate 计算两个日期相差的天数 1 获取总的日期间隔2 获取年月日单独的日期间隔3 注意事项 JDK 8 提供了新的日期类 LocalDate xff0c 通过 LocalDate 可以轻松的对日期进行操作
  • Docker 进入容器,并在容器内执行命令

    目录 1 语法 xff1a 1 1 OPTIONS 参数说明 xff1a 1 2 COMMAND 参数 xff1a 2 查看正在运行的容器3 使用 exec 进入容器4 推荐的配置 1 语法 xff1a docker exec OPTION
  • 可用的公开 RTSP/ RTMP 在线视频流资源地址

    最后更新时间 xff1a 2021年12月13日 xff08 不定期更新 xff09 最近在做海康视频的流媒体转码 xff0c 特收集几个可以访问的在线流媒体资源测试使用 xff1a RTSP rtsp wowzaec2demo strea
  • Centos 7 防火墙 firewalld 相关基础命令

    目录 1 安装 firewalld 防火墙2 firewalld 基本命令3 firewall cmd 基本命令 注 在 Centos7 下默认的防火墙变成了 firewalld xff0c 而不再是之前的 iptables xff0c 如
  • 在 MyBatis 中使用 <、<= 等特殊符号

    目录 1 直接Java 处理 xff08 不推荐 xff09 2 特殊符号转义3 硬核方法 xff1a xff1c CDATA xff1e 在实际的开发中 xff0c 经常会遇到一些场景 xff0c 比如查询小于某个时间 xff0c 或者是
  • 快速设置 Docker 的三种网络代理配置

    目录 Docker Client 代理访问远程的 Docker DaemonDocker Daemon 代理拉取或推送国外镜像Container 容器内部代理访问国外资源 通过代理访问网络是一个比较头疼的事情 xff0c 例如 xff1a
  • Ubuntu上配置GPU环境

    学习目标 xff1a Linux系统安装Anaconda3 xff1b Ubuntu上配置GPU显卡驱动 xff0c 安装显卡toolkit 创建虚拟环境 xff0c 安装深度学习框架 xff1b 掌握Linux系统下应用Anaconda3
  • Error:(6, 32) java: package com.sun.jndi.toolkit.dir does not exist

    目录 项目场景 这是复 废 现 话 解决方案 跳过复 废 现 话 项目环境 xff1a Maven JDK 11 xff08 其他版本的 JDK 也类似 xff09 MacOS Windows 下 IDEA 配置界面可能会不同 项目场景 这
  • MySQL 数据库报错 Plugin ‘InnoDB‘ init function returned error 的解决办法

    目录 场景一 xff1a 服务器突然重启 xff0c 未正常关闭 MySQL场景二 xff1a 服务器正常关机关不掉 xff0c 然后强制 kill 掉 MySQL 进程解决方案 环境 xff1a CentOS 7 x MySQL 5 7