zoukankan      html  css  js  c++  java
  • 误删数据文件.ibd,.frm文件,导致无法创建表,记录一次恢复数据表操作

    一、背景

    环境版本:
    MySQL版本 5.7.7 pod级mysql主从,误删除存储引擎为innodb的数据文件导致表消失,同名表无法创建,但是表空间存在该名称表;

    1.1 mysql启动报错;

    1.2 创建表报错;

    create table tablename;
    报错:
    ERROR:Tablespace tablename exists.

    1.3 查看表结构报错;

    desc tablename;
    报错:
    ERROR:Table tablename  doesnt exists

      

    二、解决方法:

    2.1 修改数据库my.cnf配置;

    修改my.cnf配置,并保存
    innodb_force_recovery=2  防止数据写入,更新,删除操作
    重启数据库后,重新创建表

    2.2 备份数据库;

    未删除数据库之前的数据表

    备份数据库所有表或者只备份表结构,这里笔者只备份表结构
    mysqldump -uroot -pxxx  -d dbname >dbname.sql

    2.3 删除数据库;

    drop database dbname;
    报错:
    Error dropping database (can not rmdir './dbname',errno: 39)

    解决方法:

    在数据库的物理目录中(mysql的data目录),进入XXXXX数据库目录,查看是否有文件存在,若存在,则清除
    
    cd dbname;
    rm -rf tablename 或者 mv tablename /home/tmp/
    然后再删除数据库
    > drop database dbname;
    
    Query ok,

    2.4 重新导入表;

    mysql -uroot -pxxxx dbname <dbname.sql

    2.5 创建表结构;

    create table tablename;
    报错:
    Got error 168 from storage engine;

    解决方法:

    查看日志报错:

    修改my.cnf配置,并保存
    innodb_force_recovery=0
    重启数据库后,重新创建表

    三、检查是否恢复

    检查数据库表文件是否创建;

     

  • 相关阅读:
    vue element 表格错位问题
    echarts tooltip 按值的降序显示 tip 信息
    前端 玫瑰花小样式
    echarts X轴数据过多批量显示
    微信js sdk的使用初步理解
    对象 的循环嵌套
    移动端拉起电话请求
    js后加版本号
    数组排序于数组去重
    es6数组的方法
  • 原文地址:https://www.cnblogs.com/supery007/p/15151400.html
Copyright © 2011-2022 走看看