首页 > 数据库 >超强mysql灾难恢复工具--ibd2sql

超强mysql灾难恢复工具--ibd2sql

时间:2024-07-24 12:17:35浏览次数:8  
标签:aa aaa -- mysql ibd2sql python3

超强mysql灾难恢复工具--ibd2sql

小董学编程 DBA札记    2024年07月19日 16:51 上海 1人听过 DBA札记 dba 数据库 知识科普 踩坑指南 经验分享 原理解读 88篇原创内容 公众号

前言

昨晚23:00, 刚躺到床上准备刷会儿抖音睡了。好友微信视频求救,说他的mysql启动不起来了,但是他把文件备份了,问我能不能帮忙搞一下。他搞了很久没搞定。我就答应了。最后发现启动不了,元数据字典损坏严重。只能新建库,把原来的ibd文件恢复了。我刚开始想用8.0自带的工具ibd2sdi,因为以前用这工具恢复过。但是他的环境没有8.0的安装包。我就开始下载,在下载的过程中随手一搜,有个ibd2sql的github项目。
地址:https://github.com/ddcw/ibd2sql

ibd2sql 介绍

ibd2sql是一个使用纯python3编写的离线解析MYSQL INNODB存储引擎的ibd文件的工具. 无第三方依赖包. 使用GPL-3.0 license.

特点

1、方便: 提取表DDL
2、实用: 可替换库(--schema)/表(--table)名, 可在sql语句中输出完整的字段(--complete)
3、简单: 纯python3代码编写, 无依赖包. 4、支持众多数据类型: 支持所有mysql数据类型
5、支持复杂的表结构: 分区表, 注释, 主键, 外键, 约束, 自增, 普通索引, 前缀索引, 主键前缀索引, 唯一索引, 复合索引, 默认值, 符号, 虚拟字段, INSTANT, 无主键等情况的表
6、数据误删恢复: 可以输出被标记为deleted的数据
7、安全: 离线解析ibd文件, 仅可读权限即可
8、支持范围广: 支持mysql 5.6 or 5.7 or 8.0 or 8.4 or 9.0

下载使用

本工具使用纯python3编写, 无依赖包, 所以建议直接使用源码.

V1.5 版本下载地址: https://github.com/ddcw/ibd2sql/archive/refs/tags/v1.5.tar.gz

若要将结果保存到文件, 可使用重定向(python3 main.py xxx.ibd --sql > xxxx.sql)

测试案例

#1、下载
git clone https://github.com/ddcw/ibd2sql.git
#2 解析 aaa库下的aa表
python3 main.py  ../aaa/aa.ibd --ddl --sql > aa.sql

#3 生成结果
cat aa.sql
CREATE TABLE IF NOT EXISTS `aaa`.`aa`(
    `id` int NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ;
INSERT INTO `aaa`.`aa` VALUES (1);
INSERT INTO `aaa`.`aa` VALUES (2);
INSERT INTO `aaa`.`aa` VALUES (3);

#4 将生成的SQL灌入要恢复的库即可

总结

该项目支持范围广,使用非常方便。给大家推广一下。

 

mysql58 开源项目27 数据库53 恢复1 ibd2sql1 mysql · 目录 上一篇MySQL9.0 来了,支持向量!!! 阅读 3698 ​ 喜欢此内容的人还喜欢   MySQL9.0 来了,支持向量!!!     DBA札记   不看的原因   Golang面试题:原子操作和锁     我看过的号 Coding Big Tree   不看的原因   Golang - range 迭代器揭秘     幻想发生器   不看的原因 留言 1 写留言
  •   小强锅   广东4天前 回复   这个工具之前测试用过,确实好用    
已无更多数据     DBA札记                

人划线

 

标签:aa,aaa,--,mysql,ibd2sql,python3
From: https://www.cnblogs.com/cheyunhua/p/18320605

相关文章

  • python 语法无效?
    我试图编写一些Python代码,但由于某些奇怪的原因,它重复了无效的语法,我不知道最大的问题是什么。这些行是文件中唯一的代码行。Age=int(input("Howoldareyou?:"))ifAge>=18:print("YouareaAdult!")我尝试更改行,因为这似乎是我的生气,但它没有做任何帮......
  • 为什么我的 Selenium 脚本只抓取 F O R E B E T 上 7 场比赛的数据?
    我正在开发一个网络抓取项目,使用Selenium从体育预测网站抓取足球比赛数据(让我们使用Examples表示FOREBET)。但是,即使网页上列出了更多匹配项,我的脚本也仅检索7个匹配项的数据。这是我的代码的相关部分:importtimefrombs4importBeautifulSoupimportpandasas......
  • Django REST框架serializer.is_valid()将文件保存到MEDIA_ROOT,尽管.is_valid()为False
    我有一个支持通过Django表单和DjangoREST框架上传文件的项目,这些文件用于存储在模型“文档”中。问题是,当通过REST框架上传验证失败的文件时,该文件仍保存到其“upload_to”参数(MEDIA_ROOT)(未按预期创建“文档”模型实例),上传时不会发生这种情况一些测试似乎表明“ser......
  • Druid出现DruidDataSource - recyle error - recyle error java.lang.InterruptedExce
    原文链接: https://www.cnblogs.com/zhoading/p/14040939.htmlhttps://www.cnblogs.com/lingyejun/p/9064114.html 一、问题回顾线上的代码之前运行的都很平稳,突然就出现了一个很奇怪的问题,看错误信息是第三方框架Druid报出来了,连接池回收连接时出现的问题。1234......
  • canvas webgl
       varaa=document.createElement('canvas');ab=aa.getContext('webgl');debugger;varac={'contextName':ab.getParameter(ab['VERSION']),'glVersion':ab.getParameter(ab['VERSION......
  • Spring 事务管理
    Spring事务管理(1)注解注解:@Transactional位置:业务层的方法上、类上、接口上作用:将当前方法交给spring进行事务管理,要么同时生效要么都不生效(2)开启事务管理日志yml文件中:logginglevel:org.springframework.jdbcTransactionManger:debug(3)默认情况下,只有出现运行时......
  • Form表单随页面大小变动:大屏幕item占两行,小屏幕item占整行(对话框表单、页面树形表单、
    1、效果如下:对话框内的表单组件,大屏幕item占两行,小屏幕item占整行 实现:App.vue内写一个全局公共样式;随后再调用方法传入表单ref以及需要判断的宽度,判断类名是否添加  2、效果如下:页面表单及页面左侧tree右侧表单,利用媒体查询实现:大屏幕一行两个item,小屏幕一行一个item......
  • 取模+组合数
    jiangly的板子//------取模机------//usingi64=longlong;template<classT>constexprTpower(Ta,i64b){Tres{1};for(;b;b/=2,a*=a){if(b%2){res*=a;}}returnres;}//快速幂constexpri64......
  • rust poem sse
    Cargo.toml:[package]name="sse"version="0.1.0"edition="2021"[dependencies]futures-util="0.3.30"poem={version="3.0.3",features=["sse"]}tokio={version="1.39.1&quo......
  • 简简又单单的大小端序
    大端序(BigEndian),高地址存放低位数据,低地址存放高位数据小端序(LittleEndian),高地址存放高位数据,低地址存放低位数据在一台模式固定的计算机中,无论是存放还是读取数据,都是采用同一种模式进行,但由于某些特殊的数据结构,对大小端序的实现会产生误解.数组c语言中的数组......