Mysql 8 服务突然启动不起来了

设备突然断电,服务器重新启动后,Mysql就突然 启动不了了,之前都用的好好的。

看了下启动日志报的这个错

但是配置文件并没有配置这个路径.配置文件配置的下面这个路径。

就奇了怪了,为啥启动会创建一个新的data目录。

怀疑是突然断电导致事务不完整文件损坏了,所以程序才会新建data目录。

mmp,咋整?

然后网上 找了一下解决办法  使用 innodb_force_recovery 参数,这个参数有值为0-6

下面是每个值的含义:

1 (SRV_FORCE_IGNORE_CORRUPT): 忽略检查到的 corrupt 页。尽管检测到了损坏的 page 仍强制服务运行。一般设置为该值即可,然后 dump 出库表进行重建。

2 (SRV_FORCE_NO_BACKGROUND): 阻止主线程的运行,如主线程需要执行 full purge 操作,会导致 crash。 阻止 master thread 和任何 purge thread 运行。若 crash 发生在 purge 环节则使用该值。

3 (SRV_FORCE_NO_TRX_UNDO): 不执行事务回滚操作。

4 (SRV_FORCE_NO_IBUF_MERGE): 不执行插入缓冲的合并操作。如果可能导致崩溃则不要做这些操作。不要进行统计操作。该值可能永久损坏数据文件。若使用了该值,则将来要删除和重建辅助索引。

5 (SRV_FORCE_NO_UNDO_LOG_SCAN): 不查看重做日志,InnoDB 存储引擎会将未提交的事务视为已提交。此时 InnoDB 甚至把未完成的事务按照提交处理。该值可能永久性的损坏数据文件。

6 (SRV_FORCE_NO_LOG_REDO): 不执行前滚的操作。恢复时不做 redo log roll-forward。使数据库页处于废止状态,继而可能引起 B 树或者其他数据库结构更多的损坏。

解决办法:

1.my.ini配置文件中添加该参数,我这边直接给了innodb_force_recovery = 6

 试过 innodb_force_recovery = 1,还是启动不了,索性直接给了6

 接着启动mysql 服务,果然可以启动起来了。但是这时数据库是处于只读模式的,不能做增

 删改等操作。

2. 使用就使用Navicat For Mysql 把数据脚本转储一份,这个操作是可以的。

3.既然文件已经损坏,原来的数据库肯定是用不了了。那就重建数据库呗。

这边没找到只删除data目录下坏掉的的数据库的方法,所以就把所有的数据库的脚本都转存

了一份,然后重新指定data 目录,重建数据库。记得把自己的原来的data数据目录保存一

份。

第一步:cmd进入mysql 的bin目录下执行mysqld remove ,删除原来的mysql服务

第二步:然后执行mysqld --initialize-insecure。

第三步:执行启动mysql 服务 的命令net start mysql  ,或者在服务列表启动。

第四步:mysql  -uroot  -p  进入客户端,修改密码.

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

FLUSH PRIVILEGES;

第五步:新建数据库,导入数据脚本。

然后数据就恢复了,程序正常跑起来了。

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值