【问题标题】:Restore MySQL from files (without dump)从文件中恢复 MySQL(无转储)
【发布时间】:2016-06-12 06:58:19
【问题描述】:

是否可以从他们的文件中复制 MySQL 数据库? [我知道 mysqldump 是复制数据库的最佳方法,但这是不可能的,因为我们只有 mysql 文件夹中的备份文件]。

我们有 ibdata1 文件、ib_log* 文件以及我们要从备份文件中恢复的三个 db 的完整目录(文件夹似乎包含所有需要的 frm 和 par 文件)。显然已经尝试将所有文​​件复制到 /var/lib/mysql 中,尽管看起来结构完好无损,但访问数据的尝试未成功。

show databases 将显示数据库,use dbname 有效,show tables 正确显示表,但是当尝试从 [any] 表(通过查询)访问数据时,它显示 ERROR 1146 (42S02): Table 'dbname.dbtable' 不存在 - 尽管 mysql 很高兴地向我们展示了当我们展示表格时该表格确实存在。

还应指出在复制文件之前服务已停止,并且所有文件都以 mysql 作为所有者,然后在尝试访问数据之前服务重新启动。

【问题讨论】:

  • 您在 MySQL 服务器错误日志中看到任何内容吗? InnoDB 可以相当挑剔从中恢复数据。您至少需要确保服务器配置与 InnoDB 日志文件大小等重要变量相匹配。
  • 它给出的错误是:120326 10:07:18 [错误] 尽管表的 .frm 文件存在,但无法从 InnoDB 的内部数据字典中找到或打开表 dbname/tablename。也许您已经删除并重新创建了 InnoDB 数据文件,但忘记删除 InnoDB 表的相应 .frm 文件,或者您已将 .frm 文件移动到另一个数据库?或者,该表包含此版本的引擎不支持的索引。但看起来 Jaydee 提供了一个链接,可以帮助您了解如何恢复。

标签: mysql


【解决方案1】:

为了间接回答您的问题,这里有一些关于使用原始文件副本设置复制的信息。所以我想答案可能是肯定的,但这可能取决于。

http://dev.mysql.com/doc/refman/5.0/en/replication-howto-rawdata.html

不希望增加您当前的痛苦,但您是否依赖从未尝试过/不知道如何恢复的备份?

【讨论】:

  • 链接看起来很有帮助,谢谢。至于备份计划,我不想用不必要的背景故事来混淆我的问题。我经常使用 mysqldump...长话短说,这个有问题的数据库由于人为错误而最近没有转储,但我们在擦除之前对驱动器进行了完整的 DD。
  • 那么您是否使用完全相同的 MySQL 和 InnoDB 版本以及配置文件?
  • 好的,这就解释了。祝你康复顺利。
猜你喜欢
  • 2020-06-07
  • 2014-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-13
  • 1970-01-01
  • 2011-07-22
相关资源
最近更新 更多