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 新容器名

至此,大功告成!

相关推荐
这个DBA有点耶2 小时前
2026年分布式数据库有哪些主流选择?先评估这5个维度再决定
数据库·分布式·dba
这个DBA有点耶5 小时前
从MySQL 5.7到8.0:JSON查询性能差在哪?虚拟列索引vs多值索引怎么选
数据库·mysql·架构
胡写代码5 小时前
数据库审计字段,别再每张表各写一套了——我统一成这 6 个字段
数据库
leeyi8 小时前
把软件装进不能上网的机房——一套建好了、还没上过战场的交付工程(第101篇)
docker·aigc·agent
SelectDB9 小时前
为什么 JSON 正在成为分析数据库新的竞争点?
数据库·json·agent
ClouGence10 小时前
开源数据库管理工具 CloudDM 4.2.0 发布,新增 GoldenDB、KingbaseES 等数据源
数据库·dba·devops
发霉的馒头10 小时前
ORA-00845: MEMORY_TARGET not supported on this system的解决方法
数据库
YIAN10 小时前
Docker + Nginx 核心原理扫盲:从环境隔离到反向代理,运维面试必考点
后端·docker·面试
草莓熊Lotso12 小时前
【Redis 初阶】Set 类型深度解析:去重集合的运算能力与实战场景
linux·网络·数据库·windows·redis·tcp/ip·缓存
IT大白鼠12 小时前
Docker 实战 ELKF 日志监控:容器日志全栈收集分析方案
运维·docker·容器