2008-08-11 54 views
10

当我有两台具有不同作业(拥有不同数据库)的mysql服务器,但希望能够在另一台失败时使用其中一台服务器进入系统时,您会如何保持他们两人的数据等于“接近实时”?用于备用场景的MySQL复制

很明显,每x分钟都不能完成一次完整的数据库转储。

我读过关于Binary Log,那是我需要去的方式吗?这不会减慢后备服务器的速度吗?有没有办法在二进制日志中不包含某些表 - 数据已经改变并不重要?

+0

我一直有这个完全相同的问题,仍然不完全确定要做什么。 [这是我的SO问题与其他建议](http://stackoverflow.com/questions/3798/full-complete-mysql-db-replication-ideas-what-do-people-do)。/MP – mauriciopastrana 2008-08-11 19:32:36

回答

2

二进制日志绝对是要走的路。但是,你应该知道,与MySQL你不能只是像这样的服务器之间来回翻转。

一个服务器将是而另一个将成为奴隶。您向主设备写入/读取,但只能从从服务器读取。如果你曾经写过奴隶,他们会失去同步,并且没有简单的方法让他们再次同步(基本上,你必须交换它们,所以主人是新的奴隶,但这是一个乏味的手动过程)。

如果您需要真正的热交换备份数据库,您可能必须去除MySQL以外的系统。如果你想要的只是一个只读的实时备份,你可以在最坏的情况下立即使用(master被永久销毁),二进制日志很适合你。

3

您可能需要考虑master-master复制情况,但略有不同。您可以指定要复制哪些数据库并限制每个服务器的复制。

对于server1,我会将--replicate-do-db=server_2_db和server2 --replicate-do-db=server_1_db添加到您的my.cnf(或Windows上的my.ini)。这意味着只有server_1_db的语句才会被复制到server2,反之亦然。

另请确保您定期执行完整备份,而不仅仅依靠复制,因为它不提供意外的DROP DATABASE语句或类似内容的安全性。