让我们说我有两个数据中心,其中托管了两个MySQL数据库实例。为了获得高可用性,我可以在这两个实例之间实现主 - 主复制,以便两个数据库始终具有最新信息。但是master-master复制带有自己的问题,我试图避免它。 就我而言,我知道数据的以下特征 -
如果用户表有两个带有键U1和U2的记录,那么U1只会在一个且唯一的实例中更新。因此,给定记录的写入仅在一个实例中完成。所有,我需要做的是将此记录复制到其他实例,以便以后我想将另一个实例作为主用它具有最新记录。 此外,在某个时间点,实例1可能是U1的主设备,而在另一个时刻,实例2可能是U1的主设备。
我认为这比真正的主master复制低一步,其中U1的写入可能发生在两个数据库实例中的任何一个中。
鉴于此,是否有更好的方法来实现此方案的复制。我想避免主 - 主复制,因为将来我们可能有两个以上的数据中心,并且实现多主复制并不是直接的。
答案 0 :(得分:1)
您实际上是在描述sharded database,这是可能的但不推荐,因为它涉及对您的应用程序进行大量更改。 another Stack Overflow post中概述了这些缺点。
MySQL Cluster CGE软件据说可以transparent sharding,但会产生额外的许可费用。
答案 1 :(得分:0)
听起来你想拥有一个主从设置,然后在某些时候有能力将主设备提升为主设备,并使其他服务器成为新主设备的从属设备。
这是可能的并且有文档记录,请参阅:http://dev.mysql.com/doc/refman/5.0/en/replication-solutions-switch.html
答案 2 :(得分:0)
如果你的意思是MySQL异步主 - 主复制不能很好地扩展到超过2个节点,那么这是正确的 - 但你的大部分问题都非常困惑。
虽然可能有一些看起来像一个表但在两个数据库服务器之间有效分区的东西,这样两者都具有100%的读访问权限,但每个节点只能写入数据库中的特定行,那么'完全可能,但实际上很难管理。它肯定比master-master asynch复杂得多 - 不简单。
多主同步复制与异步复制具有非常不同的优点和缺点。恕我直言,它在复杂性方面与MMA相提并论 - 如果你认为它复杂得多,那么你至少不能理解其中一项技术。
您可能只需要联合表和视图。或者是本地数据库和共享数据库的混合。
在你开始提出正确的问题之前,你还有一段时间的旅程;你可能会更好地支付一些高质量的咨询费用,而不是将数据资产的未来押在答案上。