首页 文章

如何从.myd,.myi,.frm文件中恢复MySQL数据库

提问于
浏览
166

如何从 .myd.myi.frm 文件恢复我的一个MySQL数据库?

11 回答

  • 22

    简单!创建一个虚拟数据库(比如说abc)

    将所有这些.myd,.myi,.frm文件复制到mysql \ data \ abc,其中mysql \ data \是存储所有数据库的.myd,.myi,.frm的地方 .

    然后转到phpMyadmin,转到db abc并找到您的数据库 .

  • 13

    如果这些是MyISAM表,则将.FRM,.MYD和.MYI文件放入数据库目录(例如, /var/lib/mysql/dbname )将使该表可用 . 它不必是与它们相同的数据库,相同的服务器,相同的MySQL版本或相同的体系结构 . 您可能还需要更改文件夹的所有权(例如, chown -R mysql:mysql /var/lib/mysql/dbname

    请注意,权限( GRANT 等)是 mysql 数据库的一部分 . 所以他们不会随 table 一起恢复;您可能需要运行相应的 GRANT 语句来创建用户,授予访问权限等 . (可以恢复 mysql 数据库,但您需要小心MySQL版本和 mysql_upgrade 实用程序的任何所需运行 . )

    实际上,您可能只需要.FRM(表结构)和.MYD(表数据),但您必须修复表以重建.MYI(索引) .

    唯一的限制是,如果你降级,你最好检查发行说明(并可能运行修复表) . 当然,较新的MySQL版本会增加功能 .

    [虽然很明显,如果你混合和匹配表格,那么这些表格之间关系的完整性就是你的问题; MySQL不关心,但您的应用程序和您的用户可能会 . 此外,此方法对InnoDB表完全不起作用 . 只有MyISAM,但考虑到你拥有的文件,你有MyISAM]

  • 2

    请注意,如果要重建MYI文件,则正确使用REPAIR TABLE是:

    修理表可用USE_FRM;

    否则你可能会得到另一个错误 .

  • 159

    我刚刚发现了解决方案 . 我在Windows 7上使用MySQL 5.1或5.6 .

    • 从"C:\Program Data\MySQL\MSQLServer5.1\Data"上的旧文件中复制 .frm 文件和 ibdata1

    • 在当前SQL实例中停止SQL Server实例

    • 转到位于"C:\Program Data\MySQL\MSQLServer5.1\Data"的数据文件夹

    • 从要恢复的文件中粘贴 ibdata1folder of your database which contains the .frm 文件 .

    • 启动MySQL实例 .

    无需为此恢复找到.MYI和.MYD文件 .

  • 23

    有一点需要注意:

    .FRM文件中包含您的表结构,并且特定于您的MySQL版本 .

    .MYD文件并非特定于版本,至少不是次要版本 .

    .MYI文件是特定的,但可以省略并使用_1729765重新生成,就像其他答案所说的那样 .

    这个答案的要点是让你知道如果你有一个表的模式转储,那么你可以使用它来生成表结构,然后用备份替换那些.MYD文件,删除MYI文件,并修复它们所有 . 这样,您可以将备份还原到另一个MySQL版本,或者在不使用 mysqldump 的情况下完全移动数据库 . 移动大型数据库时,我发现这非常有用 .

  • 5

    我想.myi你可以从mysql里面修复 .

    如果您从MySQL看到这些类型的错误消息:数据库无法执行查询(查询)1016:无法打开文件:'sometable.MYI' . (错误:145)错误消息:1034:表的密钥文件不正确:'sometable' . 尝试修复它然后你可能有一个崩溃或损坏的表 .

    您可以从mysql提示符检查并修复表,如下所示:

    check table sometable;
    +------------------+-------+----------+----------------------------+
    | Table | Op | Msg_type | Msg_text | 
    +------------------+-------+----------+----------------------------+ 
    | yourdb.sometable | check | warning | Table is marked as crashed | 
    | yourdb.sometable | check | status | OK | 
    +------------------+-------+----------+----------------------------+ 
    
    repair table sometable;
    +------------------+--------+----------+----------+ 
    | Table | Op | Msg_type | Msg_text | 
    +------------------+--------+----------+----------+ 
    | yourdb.sometable | repair | status | OK | 
    +------------------+--------+----------+----------+
    

    现在你的 table 应该没问题:

    check table sometable;
    +------------------+-------+----------+----------+ 
    | Table | Op | Msg_type | Msg_text |
    +------------------+-------+----------+----------+ 
    | yourdb.sometable | check | status | OK |
    +------------------+-------+----------+----------+
    
  • 2

    您可以将文件复制到数据文件夹的相应命名的子目录目录中,只要它是完全相同的mySQL版本并且您保留了该目录中的所有相关文件 . 如果您没有所有文件,我很确定您会遇到问题 .

  • 12

    我找到了将文件转换为 .sql 文件的解决方案(然后可以将 .sql 文件导入服务器并恢复数据库),而无需访问 /var 目录,因此您无需成为服务器管理员即可无论是 .

    它确实需要在您的计算机上安装XAMPP或MAMP .

    • 安装XAMPP后,导航到安装目录(通常为 C:\XAMPP )和子目录 mysql\data . 完整路径应该是 C:\XAMPP\mysql\data

    • 在里面你会看到任何其他的文件夹您创建的数据库 . 将包含 .myd.myi.frm 文件的文件夹复制并粘贴到那里 . 该文件夹的路径应该是

    C:\XAMPP\mysql\data\foldername\.mydfiles

    • 然后在浏览器中访问 localhost/phpmyadmin . 选择刚刚粘贴到 mysql\data 文件夹中的数据库,然后单击导航栏中的“导出” . 选择将其导出为 .sql 文件 . 然后会弹出询问保存文件的位置

    就是这样!您(应该)现在有一个 .sql 文件,其中包含最初为 .myd.myi.frm 文件的数据库 . 然后,您可以通过创建新数据库并在导航栏中按'Import',通过phpMyAdmin将其导入另一台服务器,然后按照步骤导入它

  • 4

    http://forums.devshed.com/mysql-help-4/mysql-installation-problems-197509.html

    它说要重命名ib_ *文件 . 我已经做到了,它让我回到了数据库 .

  • -2

    上面的描述不足以让我的工作(可能是密集或懒惰)所以我创建了这个脚本,一旦我找到了答案,以帮助我将来 . 希望它能帮助别人

    vim fixperms.sh 
    
    #!/bin/sh
    for D in `find . -type d`
    do
            echo $D;
            chown -R mysql:mysql $D;
            chmod -R 660 $D;
            chown mysql:mysql $D;
            chmod 700 $D;
    done
    echo Dont forget to restart mysql: /etc/init.d/mysqld restart;
    
  • 7

    对于那些安装了Windows XP且安装了MySQL服务器5.5的用户 - 数据库的位置是C:\ Documents and Settings \ All Users \ Application Data \ MySQL \ MySQL Server 5.5 \ data,除非您在MySql Workbench安装中更改了位置GUI .

相关问题