【问题标题】:MySQL: restoring 1 InnoDB table with common ibdata fileMySQL:使用通用 ibdata 文件恢复 1 个 InnoDB 表
【发布时间】:2013-11-21 09:31:36
【问题描述】:

我有一个服务器无意中删除了 1 个 InnoDB 表。我只需要恢复这个表的数据,而不需要从所有其他使用 InnoDB 的表中回滚数据。我最近的备份来自大约 24 小时前。有没有办法做到这一点?

编辑添加: 我应该指定:备份是磁带备份,它不是 mysqldump 文件。我拥有的是 24 小时前的 ibdata 和其他 mysql 文件的副本。我确实找到了解决方案,见下文。

【问题讨论】:

    标签: mysql innodb database-backups database-restore


    【解决方案1】:

    备份(通常)是简单的 SQL 代码。使用文本编辑器打开文件并获取您需要的数据:)。

    另一种方法是本地恢复数据库,只导出需要的表。

    【讨论】:

    • 非常有趣的简单真实
    • 抱歉,我应该指定:这是磁带备份。我所拥有的是 24 小时前的 ibdata 文件的副本。但是,我确实找到了一个解决方案,我将立即发布......
    【解决方案2】:

    这就是我最终做的:

    1. 关闭 MySQL 服务器。
    2. 复制 /var/lib/mysql (tar -cpvzf mysql.tgz /var/lib/mysql)
    3. 从备份中复制 /var/lib/mysql 以替换当前的 /var/lib/mysql
    4. 开启 MySQL 服务器。
    5. 所需数据库的 Mysqldump。
    6. 关闭 MySQL 服务器。
    7. 从我在步骤 2 中创建的 tgz 文件中恢复了 /var/lib/mysql
    8. 开启 MySQL 服务器。
    9. 从步骤 5 中创建的 mysqldump 文件中插入所需数据库的数据。

    希望这可以帮助任何面临同样困境的人!

    更多想法 我强烈建议在 my.cnf 中打开 innodb_file_per_table=1。 这应该在上面列表中的第 8 步和第 9 步之间完成。

    【讨论】:

      猜你喜欢
      • 2012-08-18
      • 2014-03-09
      • 2011-01-04
      • 1970-01-01
      • 2010-11-12
      • 2010-09-12
      • 1970-01-01
      • 2019-01-27
      • 2012-07-23
      相关资源
      最近更新 更多