首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏DBA实战

    MySQL 灾难恢复利器:ibd2sql

    简介 ibd2sql 是一个使用纯 Python 3 编写的工具,用于离线解析 MySQL InnoDB 存储引擎的 IBD 文件,并将其转换为 SQL 语句。 prefix=/usr/local/python3 make && make install ln -s /usr/local/python3/bin/python3 /usr/bin/python3 安装ibd2sql [root@idc opt]# wget https://github.com/ddcw/ibd2sql/archive/refs/heads/main.zip[root@idc opt]# unzip /mysql/qaqdb/el_inner_announcement.ibd --sql --ddl --complete-insert --table xxbox --multi-value 总结 ibd2sql 总体来说,ibd2sql 是一个值得推荐的工具,特别适合数据恢复、迁移和审计等任务。

    79210编辑于 2024-10-10
  • 来自专栏大大刺猬

    偷偷更新ibd2sql到v1.3 (支持mysql 5.7)

    SUBPARTITION s4, SUBPARTITION s5 ) ); 下载 项目地址: https://github.com/ddcw/ibd2sql 使用ibd2sql解析 mysql 5.7的ibd文件 由于mysql 5.7的ibd文件 没得sdi之类的元数据信息, 所以得先解析 frm文件以获取元数据信息, 之前其实有解析过. mysql_3308/mysqldata/db1/ddcw_alltype_table.frm --diagnostic 使用mysql8获取sdi信息 然后把ddl语句插入到mysql8.0的环境里面 使用ibd2sql ddcw_alltype_table.ibd --sdi-table /data/mysql_3314/mysqldata/db1/ddcw_alltype_table.ibd --sql --mysql5 总结 至此, ibd2sql

    61820编辑于 2024-05-11
  • 来自专栏大大刺猬

    ibd2sql v1.0 发布 & ibd文件结构说明

    写在前面ibd2sql v1.0 支持更多的数据类型, 比如新增了json类型更多的表属性, 比如分区表, 虚拟字段, 唯一索引, 前缀索引等也新增了debug功能和一些辅助debug的功能.修复了一些之前的问题 其实也才2w字.软件下载ibd2sql 是纯python3代码写的, 无任何第三方依赖, 建议使用源码.项目地址: https://github.com/ddcw/ibd2sql二进制下载地址: linux : https://github.com/ddcw/ibd2sql/releases/download/v1.0/ibd2sql_v1.0_linux_x86_64.tar.gz二进制下载地址: win : https://github.com/ddcw/ibd2sql/releases/download/v1.0/ibd2sql_v1.0_win_x86_64.zip某盘:https://pan.baidu.com /ibd2sql_v1.0 /data/mysql_3314/mysqldata/ibd2sql/t20240109.ibd --table=newtablename --ddl解析数据支持的数据类型有

    1.4K22编辑于 2024-01-09
  • 来自专栏大大刺猬

    ibd2sql v0.2 解析ibd文件为SQL

    距离上一个版本已经过去4个月了....下载地址项目地址: https://github.com/ddcw/ibd2sql源码: https://github.com/ddcw/ibd2sql/archive /refs/tags/v0.2.tar.gz二进制包: https://github.com/ddcw/ibd2sql/releases/download/v0.2/ibd2sql_0.2_linux_x86 BINARY '00000', BINARY '00000', 0, 'C', 'X,Z');-- 随机删除一条数据DELETE FROM AllTypesExample LIMIT 1;使用ibd2sql

    1.9K90编辑于 2023-08-30
  • 来自专栏DBA 平台和工具

    MySQL离线ibd数据恢复工具 - ibd2sql

    ibd2sql工具可能是您的救命稻草。这是一款能将离线ibd文件转换为SQL语句的神器,可以帮助恢复宝贵的数据。 让我们直接看看如何使用:安装wget https://github.com/ddcw/ibd2sql/archive/refs/heads/main.zipunzip main.zipcd ibd2sql-main2 有了ibd2sql,就多了一张保命符。下次遇到类似情况,别忘了这个强大的工具。它可能会帮您化险为夷,保住饭碗!

    95500编辑于 2024-07-20
  • 来自专栏大大刺猬

    [ibd2sql] mysql数据恢复案例001-- import tablespace失败之后怎么恢复数据?

    导读使用ibd2sql来恢复数据的案例在网上并不多, 直接/间接找到我的也只有2位数; 另外一些是可能没遇到问题 或者 遇到问题自己解决了, 也可能还有些是遇到问题就换其它方法了; 我之前也没咋写这方面的案例 总之就是万策尽ibd2sql简介ibd2sql是使用python3编写的一款解析mysql数据文件(ibd)的工具. ibd file to sql statement目前支持mysql 5.6, 5.7 所以功能还是比较强大的.开源: 使用的GPL3.0 license,项目位于github上的: https://github.com/ddcw/ibd2sql也会衍生一些小功能: 比如使用浏览器查看ibd 但我们还在继续ibd2sql这时,就得祭出我们的杀手锏 -- ibd2sql !!! 总结当然我们使用ibd2sql解析数据文件时,也不一定能一帆风顺; 可能会遇到各种BUG, 比如同一批表, 有的能解析,有的解析会报错, 或者解析数据为空.可能是mysql的, 也可能是ibd2sql

    53520编辑于 2025-03-21
  • 来自专栏大大刺猬

    mysql 9.0更新支持向量(ibd2sql同时也支持向量)

    但mysql客户端还是保留了mysql_native_password的认证方式(向前兼容)使用ibd2sql解析mysql 9.0.0的ibd文件vector相关的官方文档还没找到, 相关的函数目前只看到这 int primary key, aa vector(2048));insert into db1.test_vector values(1,TO_VECTOR('[2048,2048]'));然后使用ibd2sql

    51020编辑于 2024-07-03
  • 来自专栏大大刺猬

    使用undrop-for-innodb和ibd2sql恢复mysql 8.0环境被drop的表

    ibd2sql有一款名叫ibd2sql的工具可以解析ibd文件, mysql.ibd也是ibd文件, 那不就可以解析了么! ibd2sql解析ibd文件的原理其实就是: 根据表结构一行行,一个个字段的读取ibd文件中的数据. 当然可以使用一些特殊选项来解析需要的数据. 所以我们可以把获取索引id之类的信息交给ibd2sql做, 抽取索引页的步骤给undrop-for-innodb做, 解析数据部分,两个都可以做.恢复被drop的表目前ibd2sql不支持根据系统表(mysql.tables 所以ibd2sql v2.x后续版本也会根据indexid扫描磁盘文件然后尽可能的恢复数据.对于drop的表的恢复, 和undrop-for-innodb的设计比起来,ibd2sql还是太'老实'了, 碎片页的时候, 看了下undrop-for-innodb的原理, 发现其还不支持8.0环境, 故尝试使其与ibd2sql结合的效果, 还不错.

    52721编辑于 2025-09-13
  • 来自专栏大大刺猬

    使用ibd2sql解析ibd文件生成 DDL和DML

    本文讲ibd2sql的使用,建议使用源码(没得依赖包, 除了要求python3)介绍ibd2sql是解析mysql 8.0的ibd文件, 并生成DDL和DML, 还支持解析出被删除的数据(当然也可以解析 二进制下载地址: https://github.com/ddcw/ibd2sql/releases/download/v0.1/ibd2sql_v0.1_x86.tar.gz使用虽然建议使用源码(几KB /ibd2sql /data/mysql_3314/mysqldata/db1/t20230427_test.ibd --ddl图片解析出DML其实应该叫数据, 只是显示为insert格式,方便插入. /ibd2sql /data/mysql_3314/mysqldata/db1/t20230427_test.ibd --sql图片解析delete解析被标记为删除的, 就是执行delete之后的数据. /ibd2sql /data/mysql_3314/mysqldata/db1/t20230427_test.ibd --delete图片看起来是不是很dio >_<算是对之前解析ibd文件的总结吧 -

    2.7K32编辑于 2023-04-27
  • 来自专栏大大刺猬

    [ibd2sql] mysql数据恢复案例005 -- 5.7.30的一个json导致的报错

    138, in _get_sql_single for data in self.get_all_rows(deleted): File "/tmp/t20251024/ibd2sql-2.1/ibd2sql _read_row() File "/tmp/t20251024/ibd2sql-2.1/ibd2sql/innodb_page/index.py", line 385, in _read_row_pk_leaf _read_field(the_rest_of_field,null_list,size_list)) File "/tmp/t20251024/ibd2sql-2.1/ibd2sql/innodb_page (实际上是pageno=11,这里由于是先打印的pageno导致比实际结果小1,小坑, 不影响)人工解析太麻烦了, 我们直接修改脚本ibd2sql/innodb_page/index.py 在431行添加 ://github.com/ddcw/ibd2sql/commit/5f81fb34db83604c2a549111a8e957a59bb30c4d

    33720编辑于 2025-10-27
  • 来自专栏大大刺猬

    [ibd2sql] mysql数据恢复案例002 -- 解析mysql 5.7的表超过38个字段之后的小BUG(已修复)

    导读前不久, 我们的ibd2sql支持直接解析mysql 5.7的数据文件了, 不需要建个8.0环境提供sdi信息了, 我们直接解析frm文件来得到元数据信息. 噢, 这么方便? 那么代价是什么呢? c28 int,c29 int, c30 int, c31 int, c32 int,c33 int, c34 int, c35 int, c36 int,c37 int, c38 int);然后我们使用ibd2sql /v1.9/ibd2sql-1.9/ibd2sql/frm2sdi.py", line 342, in _read_columns self.COLUMNS['field'][i]['comment 为了尽可能减少代码修改(就几个字符的区别....), 我们选择的是第一种方案.使用ibd2sql读到时候, 建议使用最新版https://github.com/ddcw/ibd2sql/archive/ refs/heads/main.zip项目地址: https://github.com/ddcw/ibd2sql注意解析5.7/5.6的时候, 只需要指定ibd文件, 不需要指定frm文件, 但要求frm

    27020编辑于 2025-04-04
  • 来自专栏DBA 平台和工具

    借助 dbsake 和 ibd2sql 恢复宕机后起不来的 MySQL 5.7 数据库

    没有备份 MySQL是单点部署 MySQL突然宕机无法启动 如何恢复 MySQL 5.7 的数据 - 不用离职的救命方案 对于 MySQL 5.7 的数据恢复,我们可以借助 dbsake 和 ibd2sql 第二步:使用 ibd2sql 恢复数据 1. 在 MySQL 8.0 实例中创建刚才恢复的表结构。 2. 下载并设置 ibd2sql: wget https://github.com/ddcw/ibd2sql/archive/refs/heads/main.zip unzip main.zip cd ibd2sql-main 3.使用 ibd2sql 从 ibd 文件恢复数据: python3 main.py /data/mysql/mysql57_1/data/test/t2.ibd --sdi-table /data

    78710编辑于 2024-07-23
  • 来自专栏大大刺猬

    [MYSQL] 超多列的mysql表解析

    ) + hashlib.md5(str(i*12345).encode()).digest().hex() + "` varchar(1),\n"print(sql[:-2]+");")然后使用最新版ibd2sql 如果你使用旧版本的ibd2sql解析会得到报错zlib.error: Error -3 while decompressing data: unknown compression method虽然生产上一般不会出现这么多的字段 www.modb.pro/db/1836232133276426240https://www.modb.pro/db/1881155204905709568https://github.com/ddcw/ibd2sql

    1K20编辑于 2025-02-13
  • 来自专栏大大刺猬

    ibd2sql v1.4 新增支持溢出页, 子分区

    导读ibd2sql是一个使用python3编写的离线解析MYSQL INNODB存储引擎的ibd文件的工具. 无第三方依赖包, 纯python3代码. 完善测试案例, 修复已知BUG.项目地址: https://github.com/ddcw/ibd2sqlv1.4版本下载地址: https://github.com/ddcw/ibd2sql/archive --mysql5 如果是mysql 5.6/5.7 除了指定--sdi-table选项外, 还应指定这个选项, 方便ibd2sql失败为mysql5的数据文件.使用例子为了方便展示, 如下使用xxx.ibd #p#p0.ibd5.6 & 5.7如果是mysql5.6或者5.7, 则需要先使用mysqlfrm提取元数据信息并写入到mysql8.0的环境中, 以供ibd2sql获取元数据信息.# 提取出DDL 可以使用ibd2sql 将其转化为DDL.前缀索引判断条件:indexes[x]['elements'][x]['length'] < col['char_length'] 索引类型判断index[x]

    53210编辑于 2024-05-21
  • 来自专栏大大刺猬

    [MYSQL] 恢复加密的mysql表

    ='y';insert into t20241112 values(1,'ddcw');insert into t20241112 values(2,'https://github.com/ddcw/ibd2sql 也就是我们还可以直接解析这个加密的ibd文件来恢复数据.解决首先是下载ibd2sql,wget https://github.com/ddcw/ibd2sql/archive/refs/heads/main.zipunzip 牛马不配...参考:https://dev.mysql.com/doc/refman/8.0/en/innodb-data-encryption.htmlhttps://github.com/ddcw/ibd2sql

    70020编辑于 2024-11-12
  • 来自专栏大大刺猬

    [MYSQL] 数据恢复, 无备份, 只剩一个 ibd 文件 怎么恢复数据?

    我们可以使用官方自带的 ibd2sdi 解析出来这个json信息.ibd2sdi /data/mysql_3314/mysqldata/ibd2sql/ddcw_alltype_table.ibd 但还要自己去拼接 DDL, 太麻烦了.所以我们使用其它工具来提取DDL, 这里就使用 ibd2sql 来提取(为啥使用这个呢? 我们先创建个测试环境, 创建相同的库, 再使用上面的DDL去恢复相关的表结构CREATE TABLE IF NOT EXISTS `ibd2sql`. 这种工具市面上较少 我这里还是使用 ibd2sql (夹带私货-_-)目前不支持溢出页(默认置为NULL). 也不建议在mysql里面存储大数据.数据类型基本上都支持, 不支持空间坐标字段(为啥? (多数都有备份, 这些工具使用例子就少, 支持范围就小)如果ibd2sql工具使用有啥问题, 请到github提相关issue, 附上ibd2sql版本和mysql版本, 最好能附上debug日志.

    5.5K10编辑于 2024-04-10
  • 来自专栏大大刺猬

    ibd2sql v1.7发布(支持drop表的恢复)

    导读ibd2sql 是解析mysql的ibd文件的工具.....使用场景:不小心 delete 数据了怎么办?不小心 drop 表怎么办?数据库死活起不来怎么办? 备份是十分重要的, 但往往存在没得备份/备份失效的场景, 这时候就是可以使用ibd2sql 来恢复数据了. v1.7版本说明下载地址:https://github.com/ddcw/ibd2sql/archive /refs/tags/v1.7.tar.gzhttps://github.com/ddcw/ibd2sql/archive/refs/heads/main.zip功能更新:支持压缩页的解析(zlib&lz4 (_COLUMN_COUNT之前没写完.)其它:ibd2sql/innodb_page_sdi.py中的COLUMN_COLL默认值设置为True, 即默认显示字段字符集(若字段字符集和表不一致的话)drop (压缩表是自动解析的,使用者无需关注,也就不方便演示了....)下载安装ibd2sql#yum install python3 -ywget https://github.com/ddcw/ibd2sql

    69550编辑于 2024-10-29
  • 来自专栏大大刺猬

    [pymysqlbinlog] v0.1 发布 离线 解析/分析 MYSQL BINLOG

    */;USE ibd2sql /*!*/;BEGIN/*!*/;DELETE FROM `ibd2sql`. */;USE ibd2sql /*!*/;BEGIN/*!*/;DELETE FROM `ibd2sql`. */;USE ibd2sql /*!*/;BEGIN/*!*/;DELETE FROM `ibd2sql`.

    61210编辑于 2024-05-04
  • 来自专栏大大刺猬

    [MYSQL] 恢复被drop/truncate的表

    导读ibd2sql v2.2版本新增了恢复drop和truncate的表的功能. 这么叼? 大概如下:现在来看看ibd2sql该怎么使用才能恢复数据流程就是上面的从系统表提取元数据信息, 然后再扫描磁盘匹配即可. 当然每一步都是可以拆开的.看着头都大了. 然后解析下数据:truncate之前是2097152条数据, 现在恢复的是2095322条数据, 就丢几千条, 还是能接受的.总结ibd2sql v2.2版本支持了 mysql 5.7和8.0的DROP TRUNCATE TABLE的恢复, 但drop/truncate表的恢复技术只是保底的, 备份是很重要的.本次只列出了一些用法, 更多用法可自行组合.参考:https://github.com/ddcw/ibd2sql /releases/tag/v2.2软件下载地址: https://github.com/ddcw/ibd2sql/archive/refs/tags/v2.2.tar.gz

    32620编辑于 2026-01-08
  • 来自专栏大大刺猬

    探索ibd2sql的性能优化之道, 从1分40秒优化到约1秒

    导读innodb的相关结构已经整理得差不多了, 于是开始考虑ibd2sql的功能和性能了. 功能可以根据之前的需求和相关issue来做, 但性能的话就稍微麻烦点. 优化前我们先来看看优化前ibd2sql解析100W行数据(244MB) 要多久环境: python3.6 + ibd2sql v1.10time python3 main.py /data/mysql_ 根据火焰图的提示, 主要是ibd2sql/innodb_page.py的497行的哪个函数, 我们将其去掉(直接改为pass)然后再来测试下速度,看如何耗时46秒, 相比python3.6含debug提升了 但太复杂了(不要太贪心哦)汇总测试结果如下: 数据行数:100W 数据文件大小:244MB对象执行时间(秒)python3.6 + ibd2sql v1.10100python3.10 + ibd2sql v1.1065python3.10 + ibd2sql v1.10去掉DEBUG46python3.10 + ibdsql定制化4.8python3.10 + ibdsql定制化+4并发1.2python3.10

    38920编辑于 2025-05-15
领券