美文网首页
通过 ibd 和 frm 文件恢复表结构及数据

通过 ibd 和 frm 文件恢复表结构及数据

作者: Alexander_Zz | 来源:发表于2019-11-21 17:13 被阅读0次

    一、适用情况

    1.1 如果数据库使用的是 InnoDB 存储引擎,并且开启了 innodb_file_pre_table = 1 的情况下,每个数据库中的表会有独立的表空间。

    二、利用 frm 文件恢复表结构

    2.1 步骤
    # 安装一个新的数据库,并且建立需要恢复数据的库同名的数据库
    mysql> CREATE DATABASE dbname;
    
    # 在此库下创建所需恢复的数据表同名的数据表
    mysql> SHOW CREATE TABLE tbname\G   # 可显示创建表的语句,如可查看可利用此语句创建新表
    
    # 关闭数据库
    ~]# /etc/init.d/mysqld stop
    
    # 备份新建立数据库的 frm 文件,后将之前的 frm 文件覆盖至新建的数据路径下
    ~]# mv /DBDIR/DBNAME/TBNAME.frm{,.bak}   # 备份新 frm 文件
    
    # 修改覆盖后的 frm 文件权限,可参考其他 frm 文件权限
    ~]# chown mysql.mysql /DBDIR/DBNAME/TBNAME.frm   # 修改属主属组
    
    # 重启数据库,查看表结构
    ~]# /etc/init.d/mysqld start
    

    三、利用 ibd 文件恢复表数据

    3.1 步骤
    # 登录数据库
    ~]# mysql -uUSERNAME -pPASSWORD DBNAME
    
    # 清除新 ibd 文件
    mysql> ALTER TABLE `tbname` DISCARD TABLESPACE;
    
    # 复制之前的 ibd 文件至新数据库路径下
    
    # 修改 ibd 文件权限
    ~]# chown mysql.mysql /DBDIR/DBNAME/TBNAME.ibd
    
    # 恢复数据
    mysql> ALTER TABLE tbname IMPORT TABLESPACE;
    
    # 到此应该就可以查看数据文件了
    

    相关文章

      网友评论

          本文标题:通过 ibd 和 frm 文件恢复表结构及数据

          本文链接:https://www.haomeiwen.com/subject/cimtwctx.html