博客
关于我
数据库无法启动 通过.frm.ibd文件恢复数据
阅读量:466 次
发布时间:2019-03-06

本文共 1121 字,大约阅读时间需要 3 分钟。

MySQL 数据库恢复指南

在处理 MySQL 数据库问题时,确保数据库文件的安全备份是关键。以下是数据库恢复的详细步骤,帮助你快速解决问题。

获取表结构

创建新表

首先,你需要创建一个与原表结构相同的新表。确保新表的字段数和类型与原表一致。可以通过以下命令创建新表:

CREATE TABLE book LIKE original_book;

关闭数据库服务

在操作数据库文件之前,务必关闭数据库服务,以防止文件被锁定或修改。

service mysql stop

复制和覆盖文件

将备份的 book.frm 文件复制到新表的文件位置,并覆盖原文件:

cp /path/to/book.frm /var/lib/mysql/

修改数据库配置文件

在恢复完成后,重启数据库服务前,请确保数据库配置文件 /etc/mysql/my.cnf 中设置为:

innodb_force_recovery = 6

启动数据库服务

启动数据库服务,以验证表结构是否正确:

service mysql start

验证表结构

进入MySQL,使用以下命令查看表结构:

DESCRIBE book;

恢复数据

重启数据库服务

重启数据库服务,确保所有表格和索引重新加载:

service mysql restart

执行数据恢复

使用以下命令恢复表的数据和索引:

ALTER TABLE book DISCARD TABLESPACE;

复制和权限设置

将备份的 book.ibd 文件复制到数据库目录,并设置适当的权限:

cp /path/to/book.ibd /var/lib/mysql/
chown mysql:mysql book.ibd

导入数据

使用以下命令将数据恢复到表中:

ALTER TABLE book IMPORT TABLESPACE;

查看恢复结果

最终,使用以下命令验证表数据是否恢复:

SELECT * FROM book;

注意事项

  • 错误处理

    在执行 ALTER TABLE book DISCARD TABLESPACE; 时,可能会出现以下错误:

    ERROR 1015 (HY000): Can't lock file (errno: 165 - Table is read only)

    请确保已将 innodb_force_recovery 设置为 0,然后重启数据库服务。

  • 文件权限

    在恢复 book.ibd 文件之前,请确保文件权限设置为:

    chown mysql:mysql book.ibd
  • 通过以上步骤,你可以成功恢复MySQL数据库的表结构和数据。如果遇到其他问题,请参考MySQL官方文档或联系技术支持。

    转载地址:http://gpabz.baihongyu.com/

    你可能感兴趣的文章
    NPOI利用多任务模式分批写入多个Excel
    查看>>
    NPOI格式设置
    查看>>
    NR,NF,FNR
    查看>>
    nrf开发笔记一开发软件
    查看>>
    NSDateFormatter的替代方法
    查看>>
    NSError 的使用方法
    查看>>
    nsis 安装脚本示例(转)
    查看>>
    NSOperation基本操作
    查看>>
    NSRange 范围
    查看>>
    NSSet集合 无序的 不能重复的
    查看>>
    NT AUTHORITY\NETWORK SERVICE 权限问题
    查看>>
    NT symbols are incorrect, please fix symbols
    查看>>
    ntko web firefox跨浏览器插件_深度比较:2019年6个最好的跨浏览器测试工具
    查看>>
    ntko文件存取错误_苹果推送 macOS 10.15.4:iCloud 云盘文件夹共享终于来了
    查看>>
    ntpdate 通过外网同步时间
    查看>>
    NTP配置
    查看>>
    NUC1077 Humble Numbers【数学计算+打表】
    查看>>
    Nuget~管理自己的包包
    查看>>
    nullnullHuge Pages
    查看>>
    NullPointerException Cannot invoke setSkipOutputConversion(boolean) because functionToInvoke is null
    查看>>