暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

ibd2sql 分析ibd文件

zhou 2024-04-29
678

没有备份,数据误删,文件有部分损坏等情况下可以尝试分析ibd数据文件

说明:

ibd的page type 目前有31种,一般都是解析几种主要的类型

/** B-tree node */
constexpr page_type_t FIL_PAGE_INDEX = 17855
/** Undo log page */
constexpr page_type_t FIL_PAGE_UNDO_LOG = 2;
/** Index node */
constexpr page_type_t FIL_PAGE_INODE = 3;
/** Insert buffer free list */
constexpr page_type_t FIL_PAGE_IBUF_FREE_LIST = 4;
/** Extent descriptor page */
constexpr page_type_t FIL_PAGE_TYPE_XDES = 9;


20240427180336image.png

页当中有2个伪列:infimum和Supremum,Page Directory页目录slot[1]指向infimum,infimum的record header种的next_record 指向实际的第1行记录,slot[n]指向Supremum列,解析当前页的数据,可以从 offset 99开始,依次按next_record查询下一条记录,直到next_record为负数,叠加后指向supremum.


20240427181727image.png

安装

wget https://github.com/ddcw/ibd2sql/archive/refs/heads/main.zip
unzip main.zip
ibd2sql-main/
python3 main.py -h

解析DDL

python3 main.py /data/mysql/data/sakila/film_category.ibd --ddl


20240429171756image.png
解析SQL

python3 main.py /data/mysql/data/sakila/film_category.ibd --sql


20240429171913image.png
解析删除记录(delete标志,未analyze)

python3 main.py /data/mysql/data/sakila/film_category.ibd --delete

参考:

GitHub - ddcw/ibd2sql: 解析mysql中innodb数据文件(ibd),转换为sql. DDL和DML

最后修改时间:2024-04-29 17:43:42
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论