dbsake恢复Mysql数据

本文详细描述了在MySQL服务器宕机情况下,如何通过dbsake工具恢复数据库,包括表结构重建、.frm文件处理、表空间管理和.ibd文件数据导入的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、引言

        公司因服务器物理迁移,导致mysql宕机,无法再次重启,所以需要手动恢复数据,此篇文章记录一下通过dbsake,依据mysql的 .frm 文件和 .ibd 文件恢复数据库接口 + 数据。

二、安装dbsake

  curl -s get dbsake.net > dbsake

  chmod u+x dbsake

      注:如果没有配置环境变量的话,那就是哪里执行的此命令,默认安装到当下,别处用需要指定安装路劲

三、依据 .frm 文件 恢复表结构

./dbsake frmdump /var/lib/mysql/test/*.frm  >>  /root/recover/test.sql

 注: ./dbsake 代表我dbsake我安装到了此目录下

          /var/lib/mysql/ 这个是my.conf 里面配置的datadir    test 是数据库

          /root/recover/ 这个存放是恢复生成的建表语句

        1. 创建一个空的数据库 test2

        2. 执行上面恢复的 .sql 文件,创建新的表

        3. 释放表空间(discard),因为执行建表语句,mysql 的 datadir(my.conf中指定)下面会自动生成新的 .frm 文件和 .ibd 文件,所以要删除默认生成的 .ibd 文件,这个文件就是存放数据的文件,恢复数据依靠他

SELECT concat('alter table ', table_name, ' discard tablespace;') FROM information_schema.tables	WHERE table_schema = 'test';

        以上sql会生成批量的释放表空间的sql,拷贝出来执行,以此释放表空间

        例如: alter table user discard tablespace; 执行完之后,datadir文件下的 user.ibd文件就被删除了。

四、依据 .ibd 文件 恢复表数据

        1. 把备份文件下面的 .ibd 文件 拷贝到 新创建的数据库文件下面,并且授权

           对应的权限都是 mysql     chown -R mysql:mysql 新的文件

        2. 重新加载表空间(import)

SELECT concat('alter table ', table_name, ' import tablespace;') FROM information_schema.tables	WHERE table_schema = 'test';

         以上sql会生成批量的加载表空间的sql,拷贝出来执行,以此加载表空间

        例如:alter table user import tablespace; 执行完之后刷新数据库,就可以看到备份数据了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值