
3. 将 datadir 目录下的所有文件进行备份后删除。
4. 对数据库进行初始化,代码如下:
mysqld --initialize-insecure
因为对数据库进行初始化时使用了 --initialize-insecure 参数,生成的用户 root@localhost 是
空密码,所以在恢复数据时,并不需要输入密码,在“Enter password:”后面直接按 Enter 键
即可开始进行恢复。
5. 重新启动 MySQL 后把刚才备份的数据导入,代码如下:
mysql -uroot -p < all.sql
ibd2sql
ibd2sql 介绍
ibd2sql 可以提取 innodb ibd 文件的元数据信息,并拼接为 DDL,还可以根据元数据信息解
析 ibd 文件中的数据为 insert/replace SQL 语句。
仅支持 mysql 8.0,不需要连接数据库, 只需要对目录 ibd 文件有可读权限即可。
功能特点:
1. 方便:提取表 DDL
2. 实用:可替换库(--schema)/表(--table)名, 可在 sql 语句中输出完整的字段(--
complete)
3. 简单:纯 python3 代码编写, 无依赖包. 还可以使用**--debug**查看解析过程
4. 选择性强:可以根据条件过滤符合要求的数据 --where , --limit
5. 支持众多数据类型:支持除 空间坐标 数据类型外的所有 mysql 数据类型 (比如 int,
decimal, date, varchar, char, json, binary, enum, set, blob/text, longblob 等).
6. 支持复杂的表结构:分区表, 注释, 主键, 外键, 约束, 自增, 普通索引, 前缀索引, 主键前
缀索引, 唯一索引, 复合索引, 默认值, 符号, 虚拟字段, INSTANT, 无主键等情况的表
7. 数据误删恢复:可以输出被标记为 deleted 的数据
8. 安全:离线解析 ibd 文件, 仅可读权限即可
ibd2sql 使用场景:
数据恢复
1. 不小心删除了某个 ibd 文件, 如果能从磁盘上恢复出来了, 但不知道表结构, 就可以使用
--ddl 查看表结构了.
2. 不小心 delete 了某些数据, 但又没开启 binlog, 就可以使用 --delete 查看误删的数据了.
其它
1. 想看下第一行数据是啥, 登录数据库太麻烦了, 就可以 --sql --limit 1
2. 想看下在某个事务之后跟新的数据信息, 可以使用 --where-trx=(start_trx, end_trx) 查
看在这个限制内更新的数据信息了.
3. 想导出数据到其它环境, 比如 ./ibd2sql_v1.0 --limit 10 xxx.ibd --schema xxxx |
mysql
4. 查看表结构 ./ibd2sql_v1.0 --ddl
ibd2sql 安装
项目地址: https://github.com/ddcw/ibd2sql
官方地址:https://cloud.tencent.com/developer/article/2377921
相关文档
评论