当我有两台 mysql 服务器有不同的作业(持有不同的数据库)但希望能够在另一台出现故障时使用其中一个来滑入,你会建议我如何让它们上的数据保持相等“关闭实时”?
显然,不可能每 x 分钟进行一次完整的数据库转储。
我已经阅读了Binary Log,这是我需要走的路吗?这不会大大降低备用服务器的速度吗?有没有办法不在二进制日志中包含一些表 - 数据已经改变并不重要?
当我有两台 mysql 服务器有不同的作业(持有不同的数据库)但希望能够在另一台出现故障时使用其中一个来滑入,你会建议我如何让它们上的数据保持相等“关闭实时”?
显然,不可能每 x 分钟进行一次完整的数据库转储。
我已经阅读了Binary Log,这是我需要走的路吗?这不会大大降低备用服务器的速度吗?有没有办法不在二进制日志中包含一些表 - 数据已经改变并不重要?
您可能需要考虑主-主复制方案,但需要稍作改动。您可以指定要复制的数据库并限制每个服务器的复制。
对于 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
陈述或类似情况的安全性。
二进制日志绝对是要走的路。但是,您应该知道,使用MySQL,您不能像那样在服务器之间来回切换。
一台服务器是主服务器,另一台服务器是从服务器。您向主服务器写入/读取,但只能从从服务器读取。如果您曾经写信给从属设备,它们将不同步,并且没有简单的方法让它们再次同步(基本上,您必须交换它们以便主设备成为新的从设备,但这是一个繁琐的手动过程)。
如果您需要真正的热插拔备份数据库,您可能必须使用MySQL以外的系统。如果你想要的只是一个只读的实时备份,你可以在最坏的情况下立即使用(master 被永久销毁),Binary Log 将非常适合你。