生产数据库突然停电导致数据库重启失败报ervice mysqld startRedirecting to /bin/systemctl start mysqld.service Job for mysqld.service failed because the control process exited with error code. See "systemctl sta tus mysqld.service"and "journalctl -xe" for details.

1.首先看到这个报错是提示你需要去看mysql日志或者输入journalctl -xe查看报错问题

windows的mysql重启后库消失_mysql

直接输入journalctl -xe查看详情,还可以查看mysql日志

如果是下面错误,特别注意查看返回的错误码(status=1/FAILURE)

windows的mysql重启后库消失_数据_02

mysqld.service: Main process exited, code=exited, status=1/failure    这个错误信息是MySQL服务启动失败的提示。其中,code=exited表示进程已经退出,status=1表示进程退出时返回了错误码1,/FAILURE表示进程启动失败。

如果你是因为服务器断电报下面错误,那么恭喜你是数据库数据页受损,需要修复数据

mysqld.service: Main process exited, code=exited, status=2/INVALIDARGUMENT   错误通常是由于MySQL配置文件中的错误导致的。请按照以下步骤进行排查:检查MySQL配置文件/etc/my.cnf是否存在语法错误。可以使用以下命令检查配置文件语法是否正确

本人就是这个原因:踩坑踩坑

解决办法:改变数据库配置文件在mysql的配置文件my.cnf里找到 [mysqld]字段下,添加 innodb_force_recovery=1:

innodb_force_recovery是MySQL InnoDB存储引擎的一个选项,用于在发生故障时尝试恢复数据。它有以下几个值:

  • 0:表示正常启动,不尝试任何恢复操作。
  • 1:表示尝试恢复InnoDB表,但不会删除任何数据。这是最安全的选项,也是默认选项。
  • 2:表示尝试恢复InnoDB表,并尝试删除可能损坏的页。如果有损坏的页,则可能会丢失一些数据。
  • 3:表示尝试恢复InnoDB表,并尝试删除可能损坏的索引。如果有损坏的索引,则可能会丢失一些数据。
  • 4或更高:表示尝试恢复InnoDB表,并尝试恢复可能损坏的数据。这是最危险的选项,可能会导致数据永久损坏。

如果您需要使用innodb_force_recovery选项,请务必备份您的数据,并在测试环境中进行测试,以确保不会丢失任何数据。在生产环境中使用此选项时,应始终从1开始,并逐步增加该值,直到找到正确的恢复级别。

依次添加数值,不断重新启动,启动成功后倒出数据,在依次检查每一个表是否有错


check table 表名;如果出现的结果说Status是OK,则不用修复,如果有Error,修复方式参考连接


最后修复完成后一定要记到将innodb_force_recovery改为值=0,否则不能insert,update,delete操作

解决问题的关键就在于发现问题,所以一定要查看mysql日志分析报错原因,这是问题关键