昨天晚上,公司让修改数据的时候把容器里配置瞎弄了一番,结果容器进不去了,一气之下就给用命令 rm -r 强制删除并重新创建了一个容器,删除之后突然懵了,我草,这是mysql的容器,没有做备份数据,再进去一看之前的数据全都没了,顿时吓出一身冷汗!!!!我赶紧把前天晚上备份的数据恢复了进去(数据每天晚上自动备份,但不是实时备份),然后我给客户打电话,问他如果丢失了一天数据影响大不大,他说影响非常大,吓的我赶紧保证一定给他找回数据,挂掉电话想我是不是要准备跑路了?最后我折腾了几个小时居然找回了数据,还好有惊无险,接下来是找回数据的步骤:

第一步:

查看容器的信息

docker inspect mysql001(这里换成你的容器名称),找到挂载本地路径这里,然后复制

第二步:

进入该路径

cd /var/lib/docker/volumes/


然后 ll命令看一下,可以通过时间看到之前创建那个容器是72c6fe3f4ce92c4767ff9e36f89c8e1c2d6e06e2b107cb24ca8990d0da93de30

第三步:

进入72c6fe3f4ce92c4767ff9e36f89c8e1c2d6e06e2b107cb24ca8990d0da93de30/_data目录

cd 72c6fe3f4ce92c4767ff9e36f89c8e1c2d6e06e2b107cb24ca8990d0da93de30/_data

可以看到你的数据库保存的文件都在这里了,然后找到你的数据库进入,就可以看到之前的数据.ibd和.frm数据文件了

第四步:

通过.ibd和.frm恢复数据,这里我参考的文章是:

通过.frm和.ibd恢复mysql数据 - 秋夜雨巷 - 博客园.frm文件:保存了每个表的元数据,包括表结构的定义等; .ibd文件:InnoDB引擎开启了独立表空间(my.ini中配置innodb_file_per_table = 1)产生的存放该表的数据和索https://www.cnblogs.com/aeolian/p/10138334.html

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐