docker rm -f 删库?先别跑,还有救!

一、事情起因

今天想随便找个Mysql数据库,测试一下间隙锁,然后就想到了我尘封已久的一个服务器。

进去之后,发现有个mysql,但是忘记密码了,想着估计也没啥用,直接反手来了个docker rm -f

删完想起来了,有个项目用到了这个数据库,还以为项目好久没人用了,结果一问:天天用。直接脑瓜子嗡嗡的~
再确认一下,是真没了

但是,先别慌,还能抢救

二、数据恢复

2.1、第一步:找到删除容器对应的volumes

bash 复制代码
# 先进入到docker存储数据卷的目录下
cd /var/lib/docker/volumes/
# 查看数据卷有哪些
ll

有这么多,该怎么确定哪个是的呢?

由于我这个是mysql数据库,在mysql数据库的容器volumes中会有一个mysql.ibd的文件,所以,直接find查一下,筛选出来mysql

bash 复制代码
find . -name mysql.ibd

找到了3个mysql相关的,根据创建时间,以及cd进去,里面可以看到数据库的名字,从而确定了这个volumn

2.2、第二步:基于一样的镜像启动新的容器

根据原数据库一样的镜像,重新启动一个新的容器

bash 复制代码
docker run -itd -p 3306:3306 -e MYSQL_ROOT_PASSWORD=xxxxxx mysql:8.0

2.3、第三步:将之前的volumes迁移/挂载到新的容器上

查看新容器的volumn名

bash 复制代码
docker inspect 新容器名

关闭新的容器

bash 复制代码
docker stop 新容器名

将新容器的volumn替换为第一步找到的volumn

bash 复制代码
# 先进入到docker存储数据卷的目录下
cd /var/lib/docker/volumes/
# 删除新容器的volumn
rm -rf 新容器volumn名
# cp第一步找到的volumn到新容器volumn
cp -r 第一步找到的volumn名 新容器volumn名

启动新容器

bash 复制代码
docker start 新容器名

至此,大功告成!

相关推荐
SelectDB1 分钟前
瓴岳科技洋钱罐 SelectDB Hive 透明加速:湖仓一体化探索分析平台升级实践
数据库
GlueNa2SiO31 分钟前
06-Docker存储与数据持久化
笔记·学习·docker
SelectDB5 分钟前
飞轮科技 SelectDB Enterprise 4.0.5:企业级实时分析与 AI 数据底座的安全治理实践
数据库
SelectDB6 分钟前
金城银行 Apache Doris 实时数据平台:从 T+1 到分钟级的金融级高可靠实践
数据库
SelectDB10 分钟前
Apache Doris 4.1:面向 AI & Search 的统一数据存储与检索底座技术能力
数据库
qq_4017004121 分钟前
Qt自定义信号槽详解:带参发射 vs sender()获取,两种多信号关联方案全掌握
java·数据库·qt
字节跳动数据库1 小时前
火山引擎 RDS MySQL 向量索引:把高性能向量检索带到 MySQL 上
人工智能·后端·mysql
一位正在转型AI全栈的前端工程师1 小时前
前端转全栈:从 502 到 200,我的第一个 Docker+Nginx+Node.js 项目
docker·容器
广州浮点FLOATLIC1 小时前
Mentor Graphics浮动许可证管理为什么一到流片节点就失控
java·大数据·数据库·许可证管理·cad 许可证优化
jason_renyu2 小时前
Linux Docker 服务管理与排查实战指南(新手速查版)
linux·docker·新手docker学习·docker日志查询·docker服务管理