记录windows蓝屏,强制重启后导致windows上虚拟机docker中的mysql镜像坏掉了

文章描述了一次由于大量进程导致Windows蓝屏,进而影响到nacos、mysql和redis服务的情况。在解决过程中,作者首先尝试重启mysql容器,发现存储引擎损坏。通过设置innodb_force_recovery进行临时恢复并备份数据,然后卸载并清理mysql镜像缓存,但发现仍存在问题。最终,删除端口映射相关文件夹后,成功启动新容器,并将备份数据还原到新数据库中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

场景描述:

日常开发学习时,我都是用一个笔记本,项目采用前后端分离的微服务架构,中间件nacos在window上部署运行,mysql和redis都是部署在windows虚拟机的docker中,大量的进程给电脑内存干崩了,最后导致蓝屏,没办法只能强制重启。

解决思路:

1、重启后再次启动项目时发现nacos启不来,原因是数据库启不来(高版本nacos启动时需要读取数据库配置)。

2、mysql是在docker中,先去看docker的启动状态(sudo systemctl status docker),发现正常启动,再看所有容器状态(sudo docker ps -a),发现redis正常,mysql未启动。

3、启动mysql(sudo  docker start mysql)但发现一直启动不成功,只能查看docker中mysql容器日志(sudo docker logs 容器id),发现有两行错误,大概意思是存储引擎可能已经损坏。麻烦了!!!

4、只能在docker中重新安装mysql镜像,但卸载前一定要先备份好原来的数据,容器都起不来了,进不去数据库备份个毛?其实可以强制启动容器,在数据库的配置文件my.cnf的[mysqld]组里添加一行innodb_force_recovery = 1,意思就是暴力恢复innodb存储引擎,就可以重新启动了,但如果设置这一行,对数据库的增删改查都做了限制,所以这行起到让你备份的作用,赶紧把所有库数据都备份一下。参考【记一次Msyql崩溃导致无法启动-腾讯云开发者社区-腾讯云 (tencent.com)

5、接下来就是要卸载mysql镜像了,重新安装后查看镜像(sudo docker images)发现安装时间不是当前,还是损坏前的安装时间,咋回事?其实是镜像缓存的原因,使用命令docker system prune -a --volumes直接清除所有缓存(包括容器缓存 docker container prune、镜像缓存 docker image prune -a、数据卷缓存 docker volume prune、网络缓存 docker network prune)。

6、然后再重新安装mysql镜像,发现还是那样,其实还要删除启动mysql容器时端口映射产生的相关文件夹(rm -rf mysql),然后重新运行mysql容器(sudo docker run -p 3306:3306 --name mysql -v /mydata/mysql/log:/var/log/mysql -v /mydata/mysql/data:/var/lib/mysql -v /mydata/mysql/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7)。

7、最后发现启动成功了,果不其然,数据库干干净净,把刚刚备份数据还原到当前库中,继续写代码 /(ㄒoㄒ)/~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值