MySQL 删除ibdata1时怎么恢复(接上篇)实操

具体实操篇

整体说通俗易懂点就好比:是一个人,被火或者其他烧伤破坏了,躯壳坏了,然后重修找一个躯壳(新建一个数据库),然后依照前面的躯壳画像(上面得到的sql),在造一个躯壳出来,然后在把内在的骨骼血肉那些(以前的数据)给安在新的躯壳上,最后整个完整的人就号了(数据就恢复了)。上述就需要.frm(躯壳),ibd(骨骼血肉)

只是删除ibdta1文件,在确保.frm及.ibd文件在的情况下 恢复数据:

通过mysqlfrm来进行恢复(如果你能明确的知道表名甚至是表结构、数据类型的情况下,上篇文章即可解决,此篇主要是获取表结构),直接就不介绍.frm和.ibd文件了。

1.mysqlfrm

mysqlfrm是一个恢复性质的工具,可以用来读取.frm文件并从该文件中找到表定义,生成ddl语句,生成的ddl语句多用于在另一台服务器上创建表或进行诊断等。但有些信息不存在于.frm文件中,这些信息将会被忽略,如自增长序列。

安装:官方下载链接: https://cdn.mysql.com/archives/mysql-utilities/mysql-utilities-1.6.5.tar.gz

//注意是在linux环境下
//安装目录 自己创建
cd /mysqlfrm/      
//解压文件
tar -xf mysql-utilities-1.6.5.tar.gz
ls
//进入解压好的文件夹
cd mysql-utilities-1.6.5/
//build构建
python ./setup.py build
//install安装
python ./setup.py install

//安装成功查看命令

mysqlfrm --version

buildj截图

install截图

成功及版本截图

2.简单说下mysqlfrm模式,其他命令可去官网或者help 查看

模式介绍
–basedir:需指定服务器的基本目录,相当于再生一个数据库实例,还需指定prot,user及.frm文件位置等信息,指定的prot不能与在运行的数据库冲突,可在原数据库无法打开情况下使用,在读取.frm文件后,再生的实例将被关闭,所有的临时文件将被删除。

例:mysqlfrm --basedir=/mysql/mysqld/ --port=3333 --user=mysql /mysql/data/test/tables.frm --show-stats

–server:需指定数据库的连接字符串,需在原数据库可以打开的情况下使用,指定数据库用户名,密码,端口号及.frm文件位置等信息。

例:mysqlfrm --server=root:Root#123@localhost:3306 /mysql/data/test/tables.frm --port=3310 --user=mysql

注意:如数据库还可以正常连接,推荐使用–server模式

3.操作

首先来看下在没恢复前,所有库所有表都是没有空的,但是数据库是可以连接的。

运行mysqlfrm 命令找到以前表结构

mysqlfrm --server=root:Root#123@localhost:3306 /mysql/data/test/tables.frm  --port=3310 --user=mysql

//参数说明以及注意事项
root:Root#123@localhost:3306 => 账号:密码@本地(或者指定ip):端口
/mysql/data/test/tables.frm  => 需要恢复的.frm文件
--port=3310  => 这个3310 端口一定不要和前面那个端口一样,前者是本生数据库端口,后者是mysqlfrm映射的端口

 

得到最关键的表结构以及类型,如上图

4.具体操作

4.1得到sql语句后,就需要在新的数据库执行,创建新的数据库表。

4.2 丢弃新的骨骼,换入旧的骨骼

ALTER TABLE `WIRELESS_ORDER_BUILD_ZX` DISCARD TABLESPACE;

此时少了一个.ibd文件,然后去旧的数据库文件夹里面复制拷贝出来

 4.3 数据库重新导入.ibd文件(进行融合)

ALTER TABLE `WIRELESS_ORDER_BUILD_ZX` IMPORT TABLESPACE; SHOW WARNINGS;

最后大功告成,旧库直接删除,用新库。

希望大家能早日成功恢复数据!!!

  • 15
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

騒周

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值