场景描述:
日常开发学习时,我都是用一个笔记本,项目采用前后端分离的微服务架构,中间件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)。文章来源:https://www.toymoban.com/news/detail-580572.html
7、最后发现启动成功了,果不其然,数据库干干净净,把刚刚备份数据还原到当前库中,继续写代码 /(ㄒoㄒ)/~~文章来源地址https://www.toymoban.com/news/detail-580572.html
到了这里,关于记录windows蓝屏,强制重启后导致windows上虚拟机docker中的mysql镜像坏掉了的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!