主 – 主复制能够稳定吗?

为什么每个人都告诉我,主人总是stream泪,应该避免?

因为没有两个人使用这个术语完全一样,所以没有两个人把服务器设置成完全相同,没有人能够自动完成故障切换,很less有人能够以一种真正帮助环境的方式把它closures,而不仅仅是增加复杂性。

它会以泪结束,但是如果你做得对,他们是你的眼泪,而不是你的雇主或顾客的眼泪。 毕竟,这不是什么系统pipe理员的目的?

这里有一些你可以做的最好的阅读: http : //www.mysqlperformanceblog.com/2009/10/09/finding-your-mysql-high-availability-solution-the-definitions/
http://www.mysqlperformanceblog.com/2009/10/16/finding-your-mysql-high-availability-solution—the-questions/
http://www.mysqlperformanceblog.com/2009/11/13/finding-your-mysql-high-availability-solution—replication/

看看高性能MySQL(2ed)和Maatkit工具的作者有什么话要说: http ://www.xaprb.com/blog/2008/08/06/how-to-scale-writes-with -master主复制function于MySQL的/

干杯

在两次更新之间,不可避免地两个都会以矛盾的方式更新,而且所有的地狱都会崩溃……至less你会得到不可预知的行为。

想象一下,两个人以不同的方式更新相同的logging的情况。 哪一个是对的? 在一个主人 – 主人的环境中,没有权利。 两个logging同样正确。 所以它会通过并顺序应用它们,导致数据不一致。

如果您使用的是mysql,那么您最终还是会遇到行级locking问题…这些行通常不会被复制。 你必须做一个丑陋的黑客来解决重复自动编号字段的问题(服务器1自动增量奇数1,3,5和服务器2自动增量甚至2,4,6)。

这只是不漂亮。

因为它总是以眼泪结束,应该避免。

更具体地说,MySQL复制是脆弱的,并且连续执行两次对失败因素具有某种指数效应。 另外,开发人员在数据库中所做的一些关于你能做什么和不能做什么的假设突然消失了(比如自动增量,独特的索引等等),而在理论上你可以训练开发者摆脱这些不好的假设,在实践中你有更多的机会搭上电梯登上月球。

噢,多主复制问题的解决方法(如自动增量跳过)意味着通过添加另一个数据库服务器进行扩展是一个非常糟糕的过程。

部分问题是几乎没有理由拥有主 – 主环境。 做事情的正确方法是使用caching层并将写入操作批量写入数据库。