0

假设我有两个数据中心,其中托管了 MySQL 数据库的两个实例。为了有高可用性,我可以在这两个实例之间实现主从复制,这样两个数据库总是有最新的信息。但是主-主复制有它自己的一系列问题,我试图避免它。就我而言,我知道数据的以下特征 -

如果用户表有两条记录,键为 U1 和 U2,则 U1 将仅在一个且唯一的实例中更新。因此,对给定记录的写入仅在一个实例中完成。我需要做的就是将此记录复制到其他实例,以便以后我想将另一个实例设为主实例,它具有最新的记录。此外,有可能在某个时间点,实例 1 是 U1 的主设备,而在另一个时间,实例 2 是 U1 的主设备。

我认为这是真正的主主复制下的一步,其中 U1 的写入可以发生在两个数据库实例中的任何一个中。

鉴于此,有没有更好的方法来实现这种场景的复制。我想避免主-主复制,因为将来我们可能有超过 2 个数据中心,并且实现多主复制不是直截了当的。

4

3 回答 3

1

您正在有效地描述分片数据库,这是可能的但不推荐,因为它涉及对您的应用程序的大量更改。Stack Overflow 的另一篇文章中概述了这些缺点。

据说 MySQL Cluster CGE 软件可以进行透明分片,但它会产生额外的许可费用。

于 2013-01-11T00:09:26.480 回答
0

听起来你想要一个主从设置,然后有能力在某个时候将一个从属提升为主控,并使其他服务器成为新主控的从属。

这是可能的并记录在案,请参阅:http ://dev.mysql.com/doc/refman/5.0/en/replication-solutions-switch.html

于 2013-01-11T00:04:54.230 回答
0

如果您的意思是 MySQL 异步主-主复制不能很好地扩展到超过 2 个节点,那么这是正确的 - 但您的问题的其余大部分都非常混乱。

虽然可能有一些看起来像表但在 2 个数据库服务器之间有效分区的东西,这样两者都具有 100% 的读取访问权限,但每个节点只能写入数据库中的特定行,但这是完全可能的,但在实践中这将很难管理。它肯定比 master-master asynch 复杂得多 - 并不简单。

多主同步复制与异步复制有一组非常不同的优点和缺点。恕我直言,它在复杂性方面与 MMA 相当——如果您认为它复杂得多,那么您至少无法理解其中一项技术。

也许您所需要的只是联合表和视图。或仅本地和共享数据库的混合。

在你开始提出正确的问题之前,你还有一段路要走;与将数据资产的未来押在此处的答案上相比,您可能会更好地为一些优质的咨询服务付费。

于 2013-01-11T00:26:06.093 回答