基础设施
我有两个数据库服务器,运行在两个不同的机器上。一个用作我的 Web 应用程序的主数据库,另一个用作辅助数据库。辅助数据库由 mysql 服务器中的复制功能更新。主数据库服务器用作主服务器,辅助数据库服务器用作客户端。
要求
目前,我的 Web 应用程序仅与主数据库交互。我想添加一项功能,使应用程序能够在主数据库因某种原因关闭时使用辅助数据库服务器。现在,我需要一些工具/程序来在主数据库启动时将辅助数据库中所做的更改同步到主数据库。
基本上,我正在寻找一种能够让我的数据库始终保持同步的功能。请给我建议,我该如何实现这一点?
谢谢,
维杰
答案1
您需要做一些称为多主复制(又名主-主复制)的事情。
有两种方法可以使用主主复制设置。不正确的方法是同时向两个主服务器写入(INSERT/UPDATE 等)。尽管 MySQL 提供了配置参数这样可以帮助如果您决定这样做,我建议您不要依赖此行为。特别是,不要认为您可以将写入分散到机器上作为某种负载平衡,根本没有这样的事情。所有写入都将在所有服务器上进行。
正确的方法是使用一个主服务器作为热备用,并且一次只写入一个主服务器。相信我,当出现问题时,这将为您节省很多心痛。甚至还有一个工具,嗯(MySQL 多主复制管理器)可帮助实现监控和故障转移。不过,它需要第三台服务器来监控主服务器。
最后一件事。我再说一遍,千万不要不要尝试通过添加更多母版来创建循环,从而向外“扩展”。正如我之前所说,这根本不是扩展,因为每一个服务器必须做每次写从其他所有服务器.这也是一个完整的恶梦修复主服务器之一的非瞬时故障导致的复制。一台服务器的丢失会“破坏”其后循环中的所有服务器,因为它们不再从其下游服务器获取更新。