当前位置: 首页 > news >正文

常见MySQL数据库无法启动的解决方案

前言:
数据库无法启动是在运维中常见的问题,大多是重启服务器、磁盘损坏、配置不当导致的。建议您在面板计划任务中做个数据库全部备份的计划任务,这样在遇到问题的情况下可以及时通过备份进行恢复。
在根据下面的案例尝试恢复或者启动数据库前,记得做个磁盘快照,以免操作不当增加恢复难度甚至无法恢复。
正确的做法是:
1、关闭web服务和其他可以写入磁盘的服务
2、做好磁盘快照
3、根据案例的解决方案进行上手操作
4、如果您不会或者不懂怎么操作,可以联系我们官方客服(面板右下角有客服二维码)

案例一innodb_buffer_pool_size配置不当导致启动失败

在这里插入图片描述

1、出现原因

  1. 服务器可用内存不足,导致无法分配更多的内存给innodb_buffer_pool_size
  2. 服务器内存充足,但是配置参数过大导致无法分配更多的内存给innodb_buffer_pool_size

2、解决方案

登录到面板—软件商店—mysql管理界面—性能调整,选择与自己的服务器实际内存相匹配的内存大小,然后重启服务器
在这里插入图片描述

案例二、错误提示:InnoDB:Could not find a valid tablespace file for…

在这里插入图片描述

1、出现原因

  1. 断电造成服务器关机,开机启动后导致出现innodb存储引擎出现孤立表
  2. 删除表的时候,该表还在使用中,导致未能完全删除,造成损坏
  3. 进行事务回滚时候恢复失败
  4. 非正常关闭MySQL服务造成MySQL物理文件损坏,导致MySQL无法读取物理文件
  5. 其他问题导致

2、解决方案:

1、官方文档

https://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html
https://dev.mysql.com/doc/refman/8.0/en/forcing-innodb-recovery.html

2、论坛针对性的教程

https://www.bt.cn/bbs/thread-87521-1-1.html

注意:操作前一定要做个快照或者磁盘备份,避免操作不当导致专业的DBA也无法进行恢复

案例三、错误提示:Error in Log_event::read_log_event(): ‘Event too small’, data_len: e, event_type: 0

1、出现原因

  1. 数据库非正常关闭
  2. 切换了MySQL版本导致无法解析mysql的二进制日志

2、解决方案:

1、官方文档

https://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html
https://dev.mysql.com/doc/refman/8.0/en/forcing-innodb-recovery.html

2、论坛针对性的教程

https://www.bt.cn/bbs/thread-87521-1-1.html

注意,操作前一定要做个快照或者磁盘备份,避免操作不当导致专业的DBA也无法进行恢复

案例四、 错误提示:/bin/mysqld: Table ‘./mysql/user’ is marked as crashed and should be repaired

在这里插入图片描述

1、出现原因

  1. MySQL数据库使用的user表损坏导致的

2、解决方案

  1. 登录到服务器SSH终端里
  2. 使用命令:/www/server/mysql/bin/mysqlcheck -uroot -p数据库密码 mysql user
  3. 修复完后,会有提示mysql.user OK字样,然后重新启动mysql即可

案例五、错误信息:[ ERROR]Got error 127 when reading table …

在这里插入图片描述

1、出现原因

  1. 数据库在读取、写入数据的时候引起数据库文件损坏导致数据库表错误

2、解决方案

  1. 登录到MySQL命令行中
  2. use对应的数据库
  3. CHECK TABLE wp_options;
  4. REPAIR TABLE wp_options;
  5. 再次检查表,CHECK TABLE wp_options; 如果输出OK,代表已经修复完成

注意操作前一定做好数据库备份,最好个快照。以免操作不当增加数据库恢复难度。

案例六 、启动mysql的时候提示:File ‘./mysql-bin.000015’ not found (Errcode: 2 - No such file or directory)

1、出现原因

  1. 手动删除了数据库的二进制日志
  2. 二进制日志损坏,导致mysql无法读取二进制日志
  3. 其他问题

2、解决方案

  1. 打开/www/server/data/mysql-bin.index
  2. 删掉提示找不到的mysql-bin.000015
  3. 重启mysql

操作后可能还会出现其他binlog日志文件找不到的话,可以把mysql-bin.index中记录的二进制日志跟
/www/server/data/中的mysql-bin.xxxx对比,保留一致的mysql-bin.xxx日志文件; 如果
/www/server/data/已经没有了mysql-bin.xxxx的话,需要把mysql-bin.index记录的二进制文件全部删掉

相关文章:

  • 使用Ubuntu虚拟机离线部署RKE2高可用集群
  • 汇编运算符和表达式
  • 如何将Mysql数据库的表导出并导入到另外的架构
  • 单例模式python实现
  • Linux CentOS 8(firewalld的配置与管理)
  • vue如何使用路由拦截器
  • centos格式化硬盘/u盘的分区为NTFS格式
  • 【Linux】虚拟机安装Linux、客户端工具,MobaXterm的使用,Linux常用命令
  • centos7 install postgres-15
  • Day13力扣打卡
  • 如何在Puppeteer中设置User-Agent来绕过京东的反爬虫机制?
  • 2023-10-21 美团2024秋招后端开发岗笔试题
  • 前端跨域相关
  • C语言重点突破(四)自定义类型详解
  • 泛积木-低代码 使用攻略
  • php的引用
  • python3.6+scrapy+mysql 爬虫实战
  • centos安装java运行环境jdk+tomcat
  • es6(二):字符串的扩展
  • k8s如何管理Pod
  • laravel 用artisan创建自己的模板
  • mysql 数据库四种事务隔离级别
  • mysql常用命令汇总
  • Next.js之基础概念(二)
  • ReactNative开发常用的三方模块
  • WePY 在小程序性能调优上做出的探究
  • 百度地图API标注+时间轴组件
  • 高度不固定时垂直居中
  • 记一次删除Git记录中的大文件的过程
  • 技术胖1-4季视频复习— (看视频笔记)
  • 那些被忽略的 JavaScript 数组方法细节
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 想写好前端,先练好内功
  • 主流的CSS水平和垂直居中技术大全
  • ​Spring Boot 分片上传文件
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • #Linux(make工具和makefile文件以及makefile语法)
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #Lua:Lua调用C++生成的DLL库
  • $.ajax,axios,fetch三种ajax请求的区别
  • (十五)使用Nexus创建Maven私服
  • (四)c52学习之旅-流水LED灯
  • (算法)N皇后问题
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (转)Linux下编译安装log4cxx
  • (转)ObjectiveC 深浅拷贝学习
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • **PHP分步表单提交思路(分页表单提交)
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池
  • .NET版Word处理控件Aspose.words功能演示:在ASP.NET MVC中创建MS Word编辑器
  • .NET值类型变量“活”在哪?
  • @synthesize和@dynamic分别有什么作用?
  • [ASP.NET MVC]Ajax与CustomErrors的尴尬