zoukankan      html  css  js  c++  java
  • 使用frm,ibd文件恢复数据库文件,mysql5.7.31,centos7.5,20200813

    使用frm,ibd文件恢复数据库文件共有3步,安装数据库,恢复表结构,恢复表数据

    我实操的软件版本,mysql5.7.31,centos7.5,20200813,数据库展开597MB

    一,安装数据库

    此步略,

    可以参照此篇文章

    CentOS7 64位下MySQL5.7安装与配置

    https://www.cnblogs.com/hello-/articles/9061836.html

    二,恢复表结构

    2.1如果你是数据库完好想迁移数据库数据的,

    直接导出表结构sql文件,到新库运行就行了,我就是这种情况

    2.2数据库损坏,只有frm文件

    在恢复模式下导出表结构sql文件

    1.创建一个新数据库,然后创建一个和需要恢复的表的同名表,且引擎必须为InnoDB(即引擎为InnoDB的t_user表,其结构无所谓,字段数量相同就行),
    2.关闭数据库服务(service mysqld stop),然后拿原来的desktop_document2.frm替换新建的数据库中的desktop_document2.frm(/var/lib/mysql/hue/desktop_document2.frm)
    3.接着对配置文件(my.cnf)设置innodb_force_recovery = 6,重启数据库,desc desktop_document2查看表结构
    导出表结构: mysqldump -uroot -pxxx -d hue desktop_document2>db.sql;
    如果出现权限问题,记得 chmod 700 /var/lib/mysql/hue;chown -R mysql:mysql /var/lib/mysql

    通过以上任意一步,得到表结构sql文件,在新数据库执行该sql文件,即可导入数据库结构,

    继续往下执行

    三,恢复表数据

    我们此时已经导入所有表的完整的表结构,并且重启数据库,将数据库调整回正常模式,

    此时innodb_force_recovery=0

    往下进行分离表空间的操作

    3.1分离表空间

    执行以下语句,批量生成可供执行的sql语句(修改database_name)

    SELECT
        CONCAT( 'ALTER TABLE ', table_name, ' DISCARD TABLESPACE;' ) 
    FROM
        information_schema.TABLES 
    WHERE
        TABLE_SCHEMA = 'database_name';

      生成形如以下的sql语句

    ALTER TABLE QRTZ_BLOB_TRIGGERS DISCARD TABLESPACE;
    ALTER TABLE QRTZ_CALENDARS DISCARD TABLESPACE;
    ALTER TABLE QRTZ_CRON_TRIGGERS DISCARD TABLESPACE;
    ALTER TABLE QRTZ_FIRED_TRIGGERS DISCARD TABLESPACE;
    ALTER TABLE QRTZ_JOB_DETAILS DISCARD TABLESPACE;
    ALTER TABLE QRTZ_LOCKS DISCARD TABLESPACE;
    ALTER TABLE QRTZ_PAUSED_TRIGGER_GRPS DISCARD TABLESPACE;
    ALTER TABLE QRTZ_SCHEDULER_STATE DISCARD TABLESPACE;

    复制粘贴以上语句,批量执行

    可能会提示外键问题,

    ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails

    在第一行放上以下语句解决

    SET foreign_key_checks = 0;

    3.2导入表空间

    参照分离空间时的操作,先使用以下语句批量生成执行语句(修改database_name)

    SELECT
        CONCAT( 'ALTER TABLE ', table_name, ' IMPORT TABLESPACE;' ) 
    FROM
        information_schema.TABLES 
    WHERE
        TABLE_SCHEMA = 'database_name';

     生成形如以下的sql语句

    ALTER TABLE QRTZ_CALENDARS IMPORT TABLESPACE;
    ALTER TABLE QRTZ_CRON_TRIGGERS IMPORT TABLESPACE;
    ALTER TABLE QRTZ_FIRED_TRIGGERS IMPORT TABLESPACE;
    ALTER TABLE QRTZ_JOB_DETAILS IMPORT TABLESPACE;
    ALTER TABLE QRTZ_LOCKS IMPORT TABLESPACE;
    ALTER TABLE QRTZ_PAUSED_TRIGGER_GRPS IMPORT TABLESPACE;
    ALTER TABLE QRTZ_SCHEDULER_STATE IMPORT TABLESPACE;
    ALTER TABLE QRTZ_SIMPLE_TRIGGERS IMPORT TABLESPACE;

    复制粘贴以上语句,批量执行

    至此,完成数据库数据导入

  • 相关阅读:
    Rainmeter 雨滴桌面 主题分享
    行人检測之HOG特征(Histograms of Oriented Gradients)
    const和readonly差别
    ADB命令解析
    Java实现 蓝桥杯VIP 算法训练 接水问题
    Java实现 蓝桥杯VIP 算法训练 星际交流
    Java实现 蓝桥杯VIP 算法训练 星际交流
    Java实现 蓝桥杯VIP 算法训练 星际交流
    Java实现 蓝桥杯VIP 算法训练 星际交流
    Java实现 蓝桥杯VIP 算法训练 星际交流
  • 原文地址:https://www.cnblogs.com/difs/p/13496377.html
Copyright © 2011-2022 走看看