【问题标题】:MySQL replication for fallback scenario用于回退方案的 MySQL 复制
【发布时间】:2008-08-11 19:12:33
【问题描述】:
当我有两台 mysql 服务器有不同的工作(持有不同的数据库),但希望能够在另一台出现故障时使用其中一台进入,你会建议我如何将数据保存在它们上等于“接近实时”?
显然不可能每 x 分钟进行一次完整的数据库转储。
我已经阅读了Binary Log,这是我需要走的路吗?这不会大大降低备用服务器的速度吗?有没有办法不在二进制日志中包含一些表 - 数据已更改无关紧要?
【问题讨论】:
标签:
mysql
replication
fallback
binary-log
【解决方案1】:
您可能需要考虑 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 语句或类似语句的安全。
【解决方案2】:
二进制日志绝对是要走的路。但是,您应该知道,使用 MySQL,您不能像那样在服务器之间来回切换。
一台服务器将是主服务器,另一台服务器将是从服务器。您向主服务器写入/读取,但只能从从服务器读取。如果你曾经写过从服务器,它们就会不同步,而且没有简单的方法让它们再次同步(基本上,你必须交换它们,这样主服务器就是新的从服务器,但这是一个乏味的手动过程)。
如果您需要真正的热插拔备份数据库,您可能必须使用 MySQL 以外的系统。如果您想要的只是一个可以在最坏的情况下立即使用的只读实时备份(master 被永久销毁),那么 Binary Log 将非常适合您。