場(chǎng)景描述:
日常開發(fā)學(xué)習(xí)時(shí),我都是用一個(gè)筆記本,項(xiàng)目采用前后端分離的微服務(wù)架構(gòu),中間件nacos在window上部署運(yùn)行,mysql和redis都是部署在windows虛擬機(jī)的docker中,大量的進(jìn)程給電腦內(nèi)存干崩了,最后導(dǎo)致藍(lán)屏,沒辦法只能強(qiáng)制重啟。
解決思路:
1、重啟后再次啟動(dòng)項(xiàng)目時(shí)發(fā)現(xiàn)nacos啟不來,原因是數(shù)據(jù)庫啟不來(高版本nacos啟動(dòng)時(shí)需要讀取數(shù)據(jù)庫配置)。
2、mysql是在docker中,先去看docker的啟動(dòng)狀態(tài)(sudo systemctl status docker),發(fā)現(xiàn)正常啟動(dòng),再看所有容器狀態(tài)(sudo docker ps -a),發(fā)現(xiàn)redis正常,mysql未啟動(dòng)。
3、啟動(dòng)mysql(sudo? docker start mysql)但發(fā)現(xiàn)一直啟動(dòng)不成功,只能查看docker中mysql容器日志(sudo docker logs 容器id),發(fā)現(xiàn)有兩行錯(cuò)誤,大概意思是存儲(chǔ)引擎可能已經(jīng)損壞。麻煩了?。。?/p>
4、只能在docker中重新安裝mysql鏡像,但卸載前一定要先備份好原來的數(shù)據(jù),容器都起不來了,進(jìn)不去數(shù)據(jù)庫備份個(gè)毛?其實(shí)可以強(qiáng)制啟動(dòng)容器,在數(shù)據(jù)庫的配置文件my.cnf的[mysqld]組里添加一行innodb_force_recovery = 1,意思就是暴力恢復(fù)innodb存儲(chǔ)引擎,就可以重新啟動(dòng)了,但如果設(shè)置這一行,對(duì)數(shù)據(jù)庫的增刪改查都做了限制,所以這行起到讓你備份的作用,趕緊把所有庫數(shù)據(jù)都備份一下。參考【記一次Msyql崩潰導(dǎo)致無法啟動(dòng)-騰訊云開發(fā)者社區(qū)-騰訊云 (tencent.com)】
5、接下來就是要卸載mysql鏡像了,重新安裝后查看鏡像(sudo docker images)發(fā)現(xiàn)安裝時(shí)間不是當(dāng)前,還是損壞前的安裝時(shí)間,咋回事?其實(shí)是鏡像緩存的原因,使用命令docker system prune -a --volumes直接清除所有緩存(包括容器緩存 docker container prune、鏡像緩存 docker image prune -a、數(shù)據(jù)卷緩存 docker volume prune、網(wǎng)絡(luò)緩存 docker network prune)。
6、然后再重新安裝mysql鏡像,發(fā)現(xiàn)還是那樣,其實(shí)還要?jiǎng)h除啟動(dòng)mysql容器時(shí)端口映射產(chǎn)生的相關(guān)文件夾(rm -rf mysql),然后重新運(yùn)行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)。文章來源:http://www.zghlxwxcb.cn/news/detail-580572.html
7、最后發(fā)現(xiàn)啟動(dòng)成功了,果不其然,數(shù)據(jù)庫干干凈凈,把剛剛備份數(shù)據(jù)還原到當(dāng)前庫中,繼續(xù)寫代碼 /(ㄒoㄒ)/~~文章來源地址http://www.zghlxwxcb.cn/news/detail-580572.html
到了這里,關(guān)于記錄windows藍(lán)屏,強(qiáng)制重啟后導(dǎo)致windows上虛擬機(jī)docker中的mysql鏡像壞掉了的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!