MySQL 灾难恢复工具--ibd2sql

说明

github 地址
https://github.com/ddcw/ibd2sql

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

特点:python3编写, 无依赖包
支持 mysql 5.6 or 5.7 or 8.0 or 8.4 or 9.0

实验环境: Ubuntu 22.04

针对 MySQL 8.0

mkdir -p /data/software
cd /data/software

git clone https://github.com/ddcw/ibd2sql.git

# 提取 DDL,恢复 customer 表
# 去到 mysql8 对应的 datadir 目录,找到对应的数据库名的文件夹下,这里以 customer 表为例子
python3 /data/software/ibd2sql/main.py customer.ibd --ddl --sql > /tmp/customer.sql

针对 MySQL 5.7

# 因为 5.7 的数据库表文件分为 .frm 和 .ibd,不能直接恢复,需要先使用mysqlfrm提取元数据信息并写入到mysql8.0的环境中, 以供ibd2sql获取元数据信息。
# 这里以 county 表为例子, 路径为 datadir 对应的路径为 /usr/local/mysql/data/klvchen
cd /usr/local/mysql/data/klvchen

# 安装 mysqlfrm 
apt install mysql-utilities -y

# 去到 mysql5.7 的 datadir 目录,county 表对应的数据库中
mysqlfrm county.frm --diagnostic

# 这里会显示建表语句,把建表语句粘贴到任意一个 mysql8.0 中,执行,以获取SDI信息,即 mysql8.0 中对应的 county.ibd
# 因为我这边做实验的 mysql 5.7 和 mysql 8.0 是两台机器,所以我把 mysql8.0 中的 county.ibd 上传到 mysql 5.7 机器上的 /tmp/mysql8/ 目录下

# 使用 ibd2sql 工具解析
python3 /data/software/ibd2sql/main.py county.ibd  --sdi-table  /tmp/mysql8/county.ibd --sql --ddl --mysql5  > /tmp/county.sql
posted @ 2024-07-25 16:03  klvchen  阅读(568)  评论(0)    收藏  举报