MariaDB报错Plugin 'InnoDB' init function returned error.解决方案

本文详细介绍了遇到MariaDB服务启动失败的问题及解决过程。通过删除特定的日志文件解决了InnoDB初始化错误,包括ibdata1、ib_logfile0和ib_logfile1,并提供了具体的命令行操作步骤。

重新安装MariaDB后,服务一直启动不起来,查看日志有以下错误:

    InnoDB: No valid checkpoint found.
    InnoDB: If you are attempting downgrade from MySQL 5.7.9 or later,
    InnoDB: please refer to http://dev.mysql.com/doc/refman/5.6/en/upgrading-downgrading.html
    InnoDB: If this error appears when you are creating an InnoDB database,
    InnoDB: the problem may be that during an earlier attempt you managed
    InnoDB: to create the InnoDB data files, but log file creation failed.
    InnoDB: If that is the case, please refer to
    InnoDB: http://dev.mysql.com/doc/refman/5.6/en/error-creating-innodb.html
    170928 14:28:08 [ERROR] Plugin 'InnoDB' init function returned error.
    170928 14:28:08 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
    170928 14:28:08 [Note] Plugin 'FEEDBACK' is disabled.
    170928 14:28:08 [ERROR] Unknown/unsupported storage engine: InnoDB
    170928 14:28:08 [ERROR] Aborting

从网上找了大半天,都说把原来的日志文件给删了就行了。but where is 日志文件?,看到上面的提示,很清楚的说之前已经有文件了,顺着网站进去,发现也没有提供怎样删除。

后来,在一篇文章中讲到,删除日志文件的方法,看到他是在mysql目录下找到的,顺着这个思路找到我的mysql目录在/var/lib/mysql下,赶紧执行命令ls,发正是在它下面有日志文件 ,然后执行操作:

    [root@tserver mysql]# rm ibdata1  ib_logfile0  ib_logfile1 
    rm: remove regular file `ibdata1'? yes      
    rm: remove regular file `ib_logfile0'? yes
    rm: remove regular file `ib_logfile1'? yes

重启MariaDB服务就行了。

本来是Centos 7.3的系统 启动MariaDB的方式应该是

    systemctl start mariadb #启动服务

但是现在就变成这样的启动方式:

    service mysql start

不知道何解。。。。。。。。。。。

下一步继续执行命令

    mysql_secure_installation

这一步我在输入密码的时候还是原来的密码,输入密码一直Y就ok了。

  • 配置集群的时候发现没有wserp.cnf 在其他电脑上复制后无法识别,是因为没有权限,执行一下命令:

      chmod 777 /etc/my.cnf.d/wsrep.cnf

成功识别。

参考链接:http://www.linuxidc.com/Linux/2014-05/102229.htm

转载于:https://www.cnblogs.com/esileme/p/7606711.html

<think>首先,用户的问题是关于MariaDB的Aria插件初始化错误: "Aria plugin init error 'Could not get an exclusive lock' aria_log_control file in use"。用户提到错误消息是:"Can't lock aria control file '/opt/var/mysql/aria_log_control' for exclusive use, error: 11. Will retry for 30 seconds"。这看起来是MariaDB在启动时无法获取对aria_log_control文件的独占锁。 我的系统级指令要求: - 所有行内数学表达式使用$...$格式(但在这个上下文中,可能不涉及数学表达式)。 - 独立公式使用$$...$$格式并单独成段(同样,可能不适用)。 - LaTeX语法正确(确保在需要时使用)。 - 使用中文回答。 - 生成相关问题。 - 在回答中引用的段落末尾添加引用标识(例如[^1])。 - 回答结构清晰,帮助用户逐步解决问题。 - 保证回答真实可靠。 用户提供的引用是:"引用[1]:170729 11:11:04 [ERROR] mysqld: Can't lock aria control file '/opt/var/mysql/aria_log_control' for exclusive use, error: 11. Will retry for 30 seconds"。我需要将这个引用整合到回答中。 关键点: - 错误表明MariaDB无法获取对`aria_log_control`文件的独占锁。 - 文件路径是`/opt/var/mysql/aria_log_control`。 - 错误代码11(在Linux中,错误代码11通常表示"Resource temporarily unavailable",类似于EAGAIN)。 - MariaDB会重试30秒。 可能的原因: 1. **另一个MariaDB/MySQL实例正在运行**:如果另一个实例已经在使用该文件,就会导致锁冲突。 2. **文件系统问题**:文件可能被其他进程占用,或者文件系统权限问题。 3. **之前的崩溃**:如果MariaDB之前崩溃了,锁文件可能没有被正确释放。 4. **系统资源限制**:如文件描述符不足。 解决方法: 1. **检查是否有其他MariaDB实例运行**:使用命令如`ps aux | grep mysqld`或`systemctl status mariadb`来检查并停止任何额外的实例。 2. **确保文件路径正确**:确认`/opt/var/mysql/`目录存在,并且MariaDB有读写权限。 3. **清理锁文件**:如果确定没有其他实例运行,可以手动删除`aria_log_control`文件(但需谨慎,因为这可能导致数据损坏)。 4. **重启系统**:有时重启可以释放所有锁。 5. **检查日志**:查看MariaDB错误日志以获取更多线索。 6. **配置调整**:在MariaDB配置文件中检查Aria存储引擎的设置。 回答结构: - **逐步解决问题**:列出步骤,从简单到复杂。 - **引用错误消息**:在回答中自然引用错误消息。 - **生成相关问题**:在末尾添加相关问题。 - **使用中文**:整个回答用中文。 生成相关问题: 基于主题,相关问题可能包括: 1. 如何防止MariaDB Aria插件锁错误? 2. MariaDB启动失败的其他常见原因? 3. 如何优化Aria存储引擎性能? 确保回答真实可靠:基于数据库管理知识,MariaDB文档或常见问题。 最终回答大纲: 1. **介绍问题**:解释错误含义。 2. **可能原因**:列出常见原因。 3. **解决步骤**:逐步指导如何解决。 4. **预防措施**:如何避免类似问题。 5. **相关问题**:添加相关问题。</think>### MariaDB Aria插件初始化错误解决方法:无法获取aria_log_control文件的独占锁 您遇到的MariaDB错误提示“Aria plugin init error 'Could not get an exclusive lock' aria_log_control file in use”,表明MariaDB在启动时无法获取对`aria_log_control`文件的独占锁。这通常发生在文件被其他进程占用或系统资源冲突时,错误消息如您提供的引用所示:`170729 11:11:04 [ERROR] mysqld: Can't lock aria control file '/opt/var/mysql/aria_log_control' for exclusive use, error: 11. Will retry for 30 seconds`[^1]。错误代码11在Linux系统中表示“Resource temporarily unavailable”(资源暂时不可用),类似于EAGAIN错误。MariaDB会重试30秒,但如果失败,会导致服务启动失败。 这个问题可能由以下原因引起: - **另一个MariaDB/MySQL实例正在运行**:多个实例同时尝试访问同一个锁文件。 - **文件系统问题**:文件权限不足、文件损坏或文件被其他进程(如备份工具或监控软件)占用。 - **MariaDB崩溃后未清理**:如果服务异常终止,锁文件可能未被释放。 - **系统资源限制**:如文件描述符耗尽或磁盘空间不足。 - **路径配置错误**:`/opt/var/mysql/`目录可能不存在或MariaDB用户(如`mysql`)无读写权限。 下面我将逐步指导您解决此问题。**操作前请备份重要数据**,以避免意外数据丢失。推荐使用`root`或具有sudo权限的用户执行命令。 ### 逐步解决步骤 1. **检查并停止其他MariaDB实例** 首先,确认是否有额外的MariaDB进程在后台运行。这可能是最常见的原因。 - 使用以下命令检查进程: ```bash ps aux | grep mysqld ``` 如果输出显示多个`mysqld`进程,记录PID并停止它们。 - 停止MariaDB服务: ```bash sudo systemctl stop mariadb # 或 sudo service mariadb stop ``` 如果服务无法正常停止,强制结束进程: ```bash sudo pkill -9 mysqld ``` 2. **验证文件权限和路径** 确保`/opt/var/mysql/aria_log_control`文件存在,且MariaDB用户(通常为`mysql`)拥有读写权限。 - 检查文件所有权和权限: ```bash ls -l /opt/var/mysql/aria_log_control ``` 输出应类似:`-rw-rw---- 1 mysql mysql ...`(用户和组均为`mysql`)。 - 如果权限不正确,修复: ```bash sudo chown mysql:mysql /opt/var/mysql/aria_log_control sudo chmod 660 /opt/var/mysql/aria_log_control ``` - 确认目录存在: ```bash sudo mkdir -p /opt/var/mysql # 如果目录不存在则创建 ``` 3. **清理锁文件(谨慎操作)** 如果无其他实例运行,但锁文件仍被占用,手动删除它。**注意:这可能导致数据损坏,仅在其他步骤无效时使用。** - 首先,完全停止MariaDB: ```bash sudo systemctl stop mariadb sudo pkill -9 mysqld ``` - 删除锁文件: ```bash sudo rm -f /opt/var/mysql/aria_log_control ``` - 重启MariaDB,系统会自动重建文件: ```bash sudo systemctl start mariadb ``` 4. **检查系统资源和日志** - **查看错误日志**:MariaDB日志通常位于`/var/log/mysql/error.log`或`/var/log/mariadb/mariadb.log`。检查是否有更多线索: ```bash sudo tail -n 100 /var/log/mariadb/mariadb.log ``` 查找类似“Aria recovery failed”的消息,这可能指示文件损坏。 - **检查系统资源**: - 文件描述符限制:运行`ulimit -n`,确保值足够(推荐至少1024)。如果不足,编辑`/etc/security/limits.conf`。 - 磁盘空间:运行`df -h`,确保`/opt`分区有足够空间。 - **修复文件系统**:如果怀疑文件系统错误,运行: ```bash sudo fsck /dev/sdX # 替换为实际分区 ``` 5. **重启MariaDB并测试** 应用更改后重启服务: ```bash sudo systemctl restart mariadb ``` 验证状态: ```bash sudo systemctl status mariadb ``` 如果服务正常启动,运行简单测试: ```bash mysql -u root -p -e "SHOW ENGINE ARIA STATUS;" ``` ### 预防措施 为避免此问题再次发生: - **定期维护**:使用`mysqlcheck`工具检查和修复表:`mysqlcheck --all-databases --auto-repair`。 - **配置优化**:在MariaDB配置文件(如`/etc/mysql/my.cnf`)中,添加Aria引擎参数: ```ini [mysqld] aria_recover_options = FORCE,BACKUP ``` 这强制恢复损坏的Aria表。 - **监控资源**:设置cron任务定期检查磁盘空间和进程。 - **更新软件**:确保MariaDB版本最新(使用`sudo apt update && sudo apt upgrade mariadb-server`)。 如果以上步骤无效,考虑升级MariaDB或检查硬件问题。更多细节可参考MariaDB官方文档[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值