如何通过ibd文件恢复MySql数据

今天干了一件大事,安装1Panel导致原来服务器上的所有容器都干没了,主要是MySQL。今天就介绍一下恢复数据的过程,只有.ibd文件怎么恢复MySql

MySql版本8.8.4

第一种情况:知道表结构

知道表结构的话恢复数据比较简单

1、创建数据库

2、建表,要求就是跟原来的表结构一样

3、将你的.ibd文件直接拷贝到当前数据库的data目录下

4、重启MySql

重启成功就结束了

第二种情况:不知道表结构

这种情况下就需要借助额外的工具来恢复数据

1、安装 python3 执行下面这个命令安装

bash 复制代码
 yum install -y python3

2、安装ibd2sql这个工具

bash 复制代码
#下载压缩包
wget https://github.com/ddcw/ibd2sql/archive/refs/heads/main.zip
#解压
unzip main.zip

3、进入 ibd2sql-main 目录下

4、执行命令

python3 main.py ***********你的ibd文件的具体路径************* --ddl --sql

bash 复制代码
python3 main.py /opt/1panel/apps/mysql/mysql/data/ry@002dvue/sj_job.ibd --ddl --sql

执行完毕后就会出现对应的sql脚本,最后直接在执行一下这个sql脚本就能把表结构和数据都找回来了,这种方式是通过执行sql脚本重新创建表和插入数据

当然也可以先执行--ddl 找回表结构

bash 复制代码
python3 main.py /opt/1panel/apps/mysql/mysql/data/ry@002dvue/sj_job.ibd --ddl

然后在新的数据库中执行create语句把表建好,最后再把你的.ibd文件目录拷贝到新的数据库的data目录下,最后重启MySQL,重启成功的话 数据就都找回来了,要是重启失败的话就只能执行--ddl和--sql找回数据了

总结

总之兄弟们,操作数据库的时候最好还是备份一下,一不小心整个库都没了,太吓人了,还有就是如果有兄弟安装1Panel,先确保服务器上没有其他的docker容器,不然的话安装1Panel时会将服务器上原来的docker容器和镜像全部都给清了,所以在安装1Panel的时候先做好备份,或者说一开始服务器上没有docker的时候安装1Panel

相关推荐
极客先躯16 分钟前
高级java每日一道面试题-2025年2月18日-数据库篇-MySQL 如何做到高可用方案?
java·数据库·mysql·架构·高可用
墨香染城城1 小时前
Mmybatis xml 连接数据库的方法
xml·数据库
不要小看我们之间的羁绊啊1 小时前
PostgreSQL 多数据库集簇配置及多数据库复制方法【流程+代码实例】
数据库·postgresql
坐山龟1 小时前
PostgreSQL16 的双向逻辑复制
数据库·笔记·postgresql
武帝为此2 小时前
【MyBatis Plus 逻辑删除详解】
数据库·oracle·mybatis
白总Server2 小时前
Bash和Zsh的主要差异是?
开发语言·网络·数据库·stm32·安全·bash·xss
佩奇搞IT2 小时前
孔夫子根剧关键字获取在售商品 API
数据库
CodeJourney.2 小时前
DeepSeek一键生成可视化看板
数据库·人工智能·算法·能源
小兔崽子去哪了3 小时前
初试 Elasticsearch
数据库·elasticsearch
GreatSQL3 小时前
优化GreatSQL日志文件空间占用
数据库