项目测试环境数据库数据丢失,特此记录一下。当时是用 docker 安装的,以为临时使用一段时间,也没有持久化。突然前天 docker 日志满了,同事想着去清理日志,使用了如下命令: docker system prune 结果当时 MySQL 容器当时正常处于停止状态,结果容器一下
项目测试环境数据库数据丢失,特此记录一下。当时是用 docker 安装的,以为临时使用一段时间,也没有持久化。突然前天 docker 日志满了,同事想着去清理日志,使用了如下命令:
结果当时 MySQL 容器当时正常处于停止状态,结果容器一下子就被干掉了,我们备份的数据还是三月份的,这下糟糕了。然后各种研究开始恢复。
然后我就去官方文档去研究这个命令是干什么的,上面用到的 docker system prune 意思是:
这下心放下了一半,还好数据卷没有被删除,我们可以利用数据卷可以进行恢复数据。接下来记录下我的恢复方案吧。 数据卷目录在 /var/lib/docker/volumes 下,每个容器都会在该目录下有一个文件夹,如果容器还存在的话,我们可以使用 docker inspect 容器ID 去查看 数据卷位置,这下容器被删除了,可怎么办,只能挨个去找了,一般 MySQL 容器数据卷目录下会有一个 _data 目录,该目录下会显示你每个数据库的文件夹,最终找到了。
这个 cxhello 就是我们的测试库,现在我们就可以恢复数据了。 使用 docker volume create 数据卷名字 命令新建一个数据卷,docker volume ls 查看数据卷列表
然后创建容器
在恢复数据之前需要把刚刚建立的数据卷里面关联的内容删除掉,然后把之前的数据卷内容复制到现在的数据卷进行数据恢复。
复制内容到数据卷
至此数据库数据恢复完成,进入恢复的容器查看
参考文章 |
2022-01-30
2022-04-01
2022-03-20
2022-03-20
2022-03-20