2011-09-13 47 views
4

是否有可能为InnoDB中创建的每个数据库创建唯一的ibdate文件?为InnoDB中的每个数据库创建新的ibdata *文件

因为如果我在InnoDB的制造多个数据库,将所有商店在ibdata1中,ibdata2等..

,这使得它难以刚恢复1个数据库,而不是谁拥有InnoDB的所有客户端。 MyISAM为每个表创建多个.frm,MYD和MYI文件,这使得恢复更容易。

我们怎样才能使InnoDB上的恢复更容易。我必须创建一个DUMP .sql文件还是有其他解决方案?

感谢

回答

5

您无法通过数据库分开InnoDB的数据,但可以通过表分开它,和表各自的子目录下保存,就像MyISAM表会。请参阅http://dev.mysql.com/doc/refman/5.1/en/innodb-multiple-tablespaces.html

但无论您是使用中央表空间文件还是使用每表文件,都不应通过在文件系统上移动文件来备份或还原InnoDB数据库。即使您没有运行查询写入InnoDB表,也有后台线程正在处理ib_logfile,撤消日志,插入缓冲区和其他内容。您的数据在任何给定时间都在多个地方传播,如果您尝试移动InnoDB文件,损坏它们。

取而代之的是,在MySQL运行时,使用mysqldump安全地创建InnoDB数据的逻辑转储。

+0

是的,这是我的想法。谢谢 – Warface

+0

我认为在mysql服务关闭时移动二进制文件是完全正确的 - 我发现冷备份对于拍摄快照非常有用。对于大型数据集,使用mysqldump然后导入可能需要几个小时。我在发展过程中有很多时间。 –

+0

@Arius2038,你有没有试过从其中一个快照恢复单个InnoDB表? –

相关问题