假设我已经有一个已启动并正在运行的主数据库服务器和一个从属数据库服务器。使用从设备转储(InnoDB和MyISAM)的MySQL增量备份
我想介绍增量备份/时间点恢复到混合中。由于我已经有了用于复制的二进制日志,它应该像进行完整备份和存储日志位置一样简单。
但是,我在我的服务器上同时安装了MyISAM和InnoDB表,并且在每种情况下如何进行完整备份似乎存在冲突的建议。如果它是严格的InnoDB,我可以用--single-transaction做mysqldump,但是这个选项警告我MyISAM可能仍然会改变。
我的问题如下:
(1)它是一个有效的关注,MySQL手册建议的备份:
的mysqldump --single事务--flush-日志--master -data = 2 --all-databases> whatever.sql
...将不适合,因为MyISAM表可能会更改(表未使用--single-transaction锁定),因此新的日志文件已启动,但它会启动可能包含MyISAM表的查询,这些表在实际上已经在服务器上运行之前已经在这些表中创建他转储(并且增量恢复会在不需要时尝试重新执行这些查询)? (2)是否只有通过MyISAM和InnoDB表才能获得“正确”完整备份才能使用--lock-all表的唯一方法是? (或在那一刻关闭服务器/复制文件,因为无论如何一切都锁定了)
我假设这些问题的答案是肯定的,但请纠正我,如果我错了,因为我已经基于它的下一个想法。
我想保持中断在主服务器上最小的,所以我正在考虑做完全转储关闭基于此方向的奴隶:
http://dev.mysql.com/doc/refman/5.0/en/mysqldump.html#option_mysqldump_master-data
这些方向实际上是为奴隶建立一个奴隶,但我想知道,下面是否合理?
每天一次:
- 停止从
- 显示从站状态并获得主日志文件和位置
- 执行从完全转储虽然没有变化正在向它提出的(的MyISAM或InnoDB的)
- 启动从机再一次
- 将我完全转储到主服务器在某些备份目录
在恢复的情况下:
- 使用从这里http://dev.mysql.com/doc/refman/5.0/en/point-in-time-recovery-positions.html位置从上述(2)到任何位置的位置去还原从(5)上述
- 运行点完全转储及时恢复我想恢复到
这是合法吗?我不明白为什么从奴隶的全部转储与主人的转储有什么不同,所以看起来好像没问题。
感谢您的帮助!