平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“一些常见MySQL数据库无法启动的解决方案”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。
前言:
在这个场景下,数据库无法启动是在运维中常用的问题,大多是重启服务器、磁盘损坏、设置不当导致的。建议您在面板计划任务中做个数据库全部备份的计划任务,这样在遇到问题的情况下能够及时借助备份进行恢复。
在这个场景下,在根据下面的案例尝试恢复或者启动数据库前,记得做个磁盘快照,以免操作不当增加恢复难度甚至无法恢复。
正确的做法是:
1、关闭web服务和其他能够写入磁盘的服务
2、做好磁盘快照
3、根据案例的解决方案进行上手操作
4、如果您不会或者不懂怎么操作,能够联系我们官方客服(面板右下角有客服二维码)
案例一innodb_buffer_pool_size设置不当导致启动失败

1、出现原因
- 实际处理时,服务器可用内存不足,导致无法分配更多的内存给innodb_buffer_pool_size
- 实际处理时,服务器内存充足,但是设置参数过大导致无法分配更多的内存给innodb_buffer_pool_size
2、解决方案
理解这一步时,登录到面板—软件商店—mysql管理界面—性能调整,选择与自己的服务器实际内存相匹配的内存大小,随后重启服务器

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

1、出现原因
- 断电造成服务器关机,开机启动后导致出现innodb存储引擎出现孤立表
- 删除表的时候,该表还在采用中,导致未能完全删除,造成损坏
- 进行事务回滚时候恢复失败
- 从实现思路看,非正常关闭MySQL服务造成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也无法进行恢复
案例三、错误提示:Error in Log_event::read_log_event(): ‘Event too small’, data_len: e, event_type: 0

1、出现原因
- 数据库非正常关闭
- 切换了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、出现原因
- MySQL数据库采用的user表损坏导致的
2、解决方案
- 登录到服务器SSH终端里
- 采用命令:/www/server/mysql/bin/mysqlcheck -uroot -p数据库密码 mysql user
- 理解这一步时,修复完后,会有提示mysql.user OK字样,随后重新启动mysql即可
案例五、错误信息:[ ERROR]Got error 127 when reading table ……

1、出现原因
- 数据库在读取、写入数据的时候引起数据库文件损坏导致数据库表错误
2、解决方案
- 登录到MySQL命令行中
- use对应的数据库
- CHECK TABLE wp_options;
- REPAIR TABLE wp_options;
- 落到代码里,再次检查表,CHECK TABLE wp_options; 如果输出OK,代表已经修复完成
在这个场景下,注意操作前一定做好数据库备份,最好个快照。以免操作不当增加数据库恢复难度。
案例六、启动mysql的时候提示:File ‘./mysql-bin.000015’ not found (Errcode: 2 - No such file or directory)
1、出现原因
- 手动删除了数据库的二进制日志
- 二进制日志损坏,导致mysql无法读取二进制日志
- 其他问题
2、解决方案
- 打开/www/server/data/mysql-bin.index
- 删掉提示找不到的mysql-bin.000015
- 重启mysql
结合项目来看,操作后可能还会出现其他binlog日志文件找不到的话,能够把mysql-bin.index中记录的二进制日志跟
理解这一步时,/www/server/data/中的mysql-bin.xxxx对比,保留一致的mysql-bin.xxx日志文件; 如果
落到代码里,/www/server/data/已经没有了mysql-bin.xxxx的话,需把mysql-bin.index记录的二进制文件全部删掉
总结
到此这篇关于常用MySQL数据库无法启动的解决方案的文章就介绍到这了,更多相关MySQL无法启动解决内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多兼容脚本之家!
- MySQL无法启动几种常用问题小结
- 碰到MySQL无法启动1067错误问题解决方法
- MySql闪退和服务无法启动的解决方法
- Windows下MySQL 5.7无法启动的解决方法
- docker部署MySQL时无法启动问题的解决方法
- MySQL无法启动的解决办法
- MySQL8.0无法启动3534的解决方法