贺春旸,dbaplus社群金牌专家,凡普金科和爱钱进DBA团队负责人,《MySQL管理之道:性能调优、高可用与监控》第一&二版、《MySQL运维进阶指南》作者,曾任职于中国移动飞信、安卓机锋网。五次荣获dbaplus年度MVP,致力于MariaDB、MongoDB等开源技术的研究,主要负责数据库性能调优、监控和架构设计。
数据安全是企业的生命线,数据库一旦意外宕机将不堪设想,试想一下如果你遇到了这样一个棘手的情况:
MySQL 未进行备份
MySQL 采用单点部署
MySQL 突然崩溃且无法启动
面对这种危机,如何抢救 MySQL 5.7 的数据?以下是一套不用递交辞呈的应急方案。
对于 MySQL 5.7 的数据恢复,我们可以借助两个强大的工具—— dbsake 和 ibd2sql 。这个方法不仅能还原表结构,更能恢复数据,堪称一个全面的拯救方案。接下来,让我们一步步探讨详细的操作流程。
第一步:使用 dbsake 恢复表结构
1、安装 dbsake:
# curl -s get.dbsake.net > dbsake
# chmod 755 dbsake
2、使用 dbsake 从 frm 文件恢复表结构:
test/t2.frm ./dbsake frmdump /data/mysql/mysql57_1/data/
frm文件恢复表结构
这一步将为我们提供完整的表结构 SQL。
第二步:使用 ibd2sql 恢复数据
1、在全新的 MySQL 8.0 实例中,创建我们刚刚恢复的表结构。
2、获取并配置 ibd2sql 工具:
wget https://github.com/ddcw/ibd2sql/archive/refs/heads/main.zip
unzip main.zip
cd ibd2sql-main
test/t2.ibd \ python3 main.py /data/mysql/mysql57_1/data/
--sdi-table /data/mysql/mysql8/data/recover/t2.ibd \
--sql --ddl --complete-insert --mysql5
ibd文件数据恢复
参数解释(以下指的是ibd2sql):
/data/mysql/mysql57_1/data/test/t2.ibd:指定需要恢复数据的 .ibd 文件路径。该文件位于 MySQL 5.7 数据目录下,属于 test 数据库中的 t2 表。
--sdi-table /data/mysql/mysql8/data/recover/t2.ibd:指定 dbsake 工具生成的中间文件(SDI 文件)的存放路径。SDI 文件包含了从 .ibd 文件中提取的表结构和数据信息。
--sql:指示 dbsake 工具生成 SQL 语句,用于重建表结构和插入数据。
--ddl:指示 dbsake 工具生成创建表的 DDL 语句(CREATE TABLE)。
--complete-insert:指示 dbsake 工具生成完整的 INSERT 语句,包含所有列的值。
--mysql5:指定源数据库的版本为 MySQL 5,这有助于 dbsake 工具正确解析 .ibd 文件格式。
回车后,MySQL 5.7 的 ibd 文件就会转化为可执行的 SQL 语句,至此我们的数据抢救行动画上圆满的句号,不仅挽救了宝贵的数据,更是拯救了自己的职业生涯!
如果字段的最大可能长度超过255字节,那么长度值可能…
只能说作者太用心了,优秀
感谢详解
一般干个7-8年(即30岁左右),能做到年入40w-50w;有…
230721