运行了个较大的微服务项目,直接给我MySQL干坏了。。。
nacos一直连不上最后发现是Innodb表空间损坏
查看容器日志获取更多详细信息,特别是崩溃原因。
运行以下命令查看MySQL容器的详细日志:docker logs mysql --tail 50
[root@localhost ~]# docker logs mysql --tail 50
InnoDB: immediately after the mysqld startup, there may be
InnoDB: corruption in the InnoDB tablespace. Please refer to
InnoDB: http://dev.mysql.com/doc/refman/8.0/en/forcing-innodb-recovery.html
解决方法
-
强制恢复 InnoDB 表空间
MySQL 提供了强制恢复(InnoDB Recovery)的机制来尝试修复数据文件。可以通过设置
innodb_force_recovery
参数来控制恢复级别。-
修改 MySQL 的
my.cnf
配置文件,添加如下配置:[mysqld] innodb_force_recovery=1
-
-
不同的恢复级别从 1 到 6,逐步提高恢复力度。如果 1 无效,可以尝试逐步增加到 6。每次修改完配置文件后,需要重启 MySQL 容器。
-
如果使用 Docker,可以通过重新运行容器并指定自定义配置文件
-
备份数据并重新部署 MySQL
如果恢复无效,可以考虑备份数据目录(如果数据对你很重要)然后重新部署 MySQL 容器。确保备份数据不会再造成后续问题。
-
# 停止并删除现有容器 docker stop mysql docker rm mysql
docker run -d \
--name mysql \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123 \
mysql