• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Mysql 升级失败,导致表打不开,根据frm 和 ibd进行恢复

武飞扬头像
Luke
帮助281

最近升级MySQL5.7,  升级失败了,然后数据库中的表全部打不开了,还好有 frm ibd 文件可以进行恢复, 接下来记录下自己恢复的步骤,安心,安心,挺简单的

一、下载工具

    1. mysql-utilities

      #下载地址:
      wget https://downloads.mysql.com/archives/get/p/30/file/mysql-utilities-1.6.5.tar.gz
      #解压 
      tar -zxvf mysql-utilities-1.6.5.tar.gz
      #进入 
      cd mysql-utilities-1.6.5
      编译
      python ./setup.py build
      python ./setup.py install
    2. Mysql链接工具

请使用任意工具, 只要能执行SQL就可以

二、备份  table data数据

       备份 MySQL数据集的文件夹, 请根据自己mysql的位置自己查, 备份要恢复的 表, 文件夹名称就是表名,里面的 frm 是表结构 ibd 是数据

三、开始操作

1. 进行你备份的表文件夹, 执行以下语句,将获的表结构

mysqlfrm --diagnostic 你表的名称

2. 然后使用获取的表结构进行创建表的时候,会出现错误,需要删除以下内容, 注意, 字段大小可能会有点不一样, 需自己修改, 如果使用了 JSON字段, 将会被工具替换成decimal(6,16), 记得自己修改成 json

 修改 decimal(6,16) -》 json

 删除 CHARACTER

 删除 SET

3. 创建完表后, 执行以下语句进行解锁 frm 和 ibd 的数据解绑

alter table 你表的名称 discard tablespace;

4. 解锁完成后,关闭MYSQL,

5. 关闭mysql后, 打开你刚创建的数据库,把原来要恢复的表 ibd 复制进行,进行替换,  注意, frm 不要复制进入

6 .复制进行以后,开启MYSQL,执行以下语句,进行 idb 和 frm 的绑定,然后重启mysql

alter table 你表的名称 import  tablespace;

7. 这时可以看到,数据已经恢复了

四、结束,已恢复

    直接查看表,数据都恢复了,并且能正常使用

 

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanefeh
系列文章
更多 icon
同类精品
更多 icon
继续加载