MySql DB差异备份

时间:2014-06-16 10:27:52

标签: mysql database backup

我已经在下午14:00在我的复制服务器上恢复了我的实时数据库备份(已在凌晨01:00完成)。

备份已成功恢复&复制服务器已正确更新,但如何在01:00 AM到14:00 PM之间恢复在实时服务器上更新的数据。

是否有任何可用的工具,或者可以从任何脚本或命令行执行,请帮助。

此致 SAURABH

1 个答案:

答案 0 :(得分:1)

你无法恢复"这样的数据(因为它们从未在那个接收实例中),但是你可以"应用"进行备份后对实时数据库所做的所有更改。

最简单的方法是让复制服务器(通常称为" slave")从备份时的位置开始从主服务器的binlog复制。如果你使用" mysqldump"进行备份,那么" - master-data"选项会为你做到这一点。

现在你错过了这个机会,我看到了两种可能的方法:
1)使用" mysqldump --master-data"重复所有操作。
2)使用" mysqlbinlog"将主要时期的变化从主设备提供给从设备,将其输入" mysql":
   mysqlbinlog ... | mysql -h slave ...

方法2要求您仍然可以使用这些bin日志,并且它假定主服务器的更改适用于从服务器,即使您在01:00 - 14:00期间之后提供 / em>从14:00开始 - 这可能会也可能不会举行 此外,它还要求您可以确定要传输的第一个和最后一个更改的binlog中的确切位置。 不要试图使用" - start-datetime"和" - 停止日期时间"对于转移,我发现一些意外的影响与较长时间运行的事务。仅使用它们分别查看01:00和14:00左右的动作,确定您需要的第一个动作(接近01:00)和您已经拥有的第一个动作(接近14:00)的确切位置,然后使用" - start-position"和" - 停止位置"转移。

方法1肯定更容易,我强烈推荐它。 MySQL手册提供了如何在页面上设置从站的说明 http://dev.mysql.com/doc/refman/5.5/en/mysqldump.html涵盖了所有内容。

如果你使用物理文件副本或LVM快照进行初始传输(而不是" mysqldump"),也要重复它,但记录主人的binlog位置(" show master状态")然后让奴隶从那里开始("将主人改为......")。