Ran Asked: 2012-07-10 12:45:58 +0800 CST2012-07-10 12:45:58 +0800 CST 2012-07-10 12:45:58 +0800 CST 每个 master 的 slave 数量有什么限制? 772 我目前有一个有 2 个从属的 Master,都运行 MySql 5.5。 我可以连接到单个主站的从站数量有哪些限制?应该考虑哪些参数? mysql replication 3 个回答 Voted Best Answer RolandoMySQLDBA 2012-07-10T13:21:27+08:002012-07-10T13:21:27+08:00 在设置方面没有限制,但您需要了解一些方面。 您可以使用半同步复制,因为它使用一种很好的算法将 SQL 传送到从站,方法是确保至少一台服务器在从站中继日志中具有所有最新的 SQL。(请参阅我在 2011 年 8 月 5 日发表的文章MySQL 复制是否受到高延迟互连的影响?) 然而,半同步复制只适用于 N 个 Slave 中的一个。 无论你是否有半同步复制,只要你拥有的 Slave 越多,Master 必须做的 CPU 处理就越多,以保持其 Slave 为最新就足够了。 对于一个拥有 N 个奴隶的主人来说,那是…… N条SQL语句发送到Slave 来自 Slave 1-N 的 N 个确认 SQL 已执行 使用半同步复制,并没有好多少,因为对于具有 N 个从属的主控,那是...... N条SQL语句发送到Slave 来自 Slave 的致谢 1 确认一个 Slave 1 收到了最新的 SQL N-1 来自 Slave 的确认 2-N 已执行 SQL 如果您必须有许多从站,请考虑在星形拓扑中使用分发主站 设置主到多主复制的最佳方法 将 MySQL DB 拆分为两台服务器是个好主意吗 高并发、高写入数据库的基础设施 https://stackoverflow.com/a/5784578/491757 如果您无法在星形拓扑中设置 Distribution Master,那么这是我的简单规则:使用半同步复制,但使用尽可能少的 Slave。 Aaron Brown 2012-07-10T17:47:47+08:002012-07-10T17:47:47+08:00 您可以附加到主服务器的从服务器数量没有硬性限制,但有一个实际限制,它取决于您的工作负载和硬件。让我们假设您有“一堆”相同的机器,您希望它们以星形拓扑结构(1 台主机,许多从机)连接在一起。在这个假设的集群中,假设您的 master 工作过度,因为它达到了每秒 2000 次操作的最大容量,其中 1000 次是写入,1000 次是读取(为简单起见,我们假设 1 次读取和 1 次写入具有等价的“成本”)。 因此,我们添加了一个从站并将所有读取移至从站。在实践中,不可能将所有读取移动到从站,但这是为了练习。请记住,您不能通过复制来扩展写入,因为写入仍然必须在每个节点上发生。 Master - 1000 wps/0 rps - 1000 free ops Slave1 - 1000 wps/1000 rps - 0 free ops 嗯……我们增加了一个奴隶,但我们实际上并没有增加我们的能力。从站已经处于最大容量。因此,我们添加另一个从属设备并对读取进行负载平衡 Master - 1000 wps/0 rps - 1000 free ops Slave1 - 1000 wps/500 rps - 500 free ops Slave2 - 1000 wps/500 rps - 500 free ops 现在我们正在取得进展,我们有一点成长空间。但是,呃,哦,我们登上了 slashdot 的首页,所以突然间我们的流量翻了一番,现在我们正在做 2000 wps 和 2000 rps! Master - 2000 wps/0 rps - 0 free ops Slave1 - 2000 wps/1000 rps - 1000 ops OVER CAPACITY! Slave2 - 2000 wps/1000 rps - 1000 ops OVER CAPACITY! 没关系。我们会有一些额外的盒子坐在那里,所以我们会添加更多的奴隶 Master - 2000 wps/0 rps - 0 free ops Slave1 - 2000 wps/500 rps - 500 ops OVER CAPACITY! Slave2 - 2000 wps/500 rps - 500 ops OVER CAPACITY! Slave3 - 2000 wps/500 rps - 500 ops OVER CAPACITY! Slave4 - 2000 wps/500 rps - 500 ops OVER CAPACITY! 哦,哦。无论我们做什么,如果不通过分片来减少写入或通过扩展所有服务器以使它们每秒具有更大的操作容量,我们都无法改善这种情况。 另一个考虑因素是您的主服务器同时进行多次读取,但它们被序列化到二进制日志中,然后在从服务器上的单个线程中播放。因此,虽然您可能能够在主设备上跟上 1000 wps,但从设备可能只能处理 250 wps 而不会严重落后。这意味着在高写入环境中,从属服务器实际上可能需要比主服务器更强大(在 CPU 和 I/O 容量方面)才能跟上。 Rick James 2012-07-24T16:24:04+08:002012-07-24T16:24:04+08:00 我处理有十多个奴隶挂在主人身上的系统。没问题。 Master 的开销非常低——将东西从一个套接字中推出(每个 Slave)。 可以“扇出”,但“继电器”成为“单点故障”。也就是说,Master 可以发送给几个 Relay(Slave 和 Master),每个 Relay 发送给几个 Slave。 将大多数读取移动到从站。这是“读取缩放”。这将有助于减轻 Master 的负担。 写入缩放需要分片。(亚伦暗示了这一点。) “双主”是两台机器,它们既是主又是从。它对于故障转移很方便,但对于写入扩展没有用。不要在双主设置中写入两台机器;你是在自找麻烦。相反,让读取转到“备份主机”。 评论亚伦的数字——大师很少有“0 rps”。通常有一些读取是为写入做准备所必需的。这些被称为“关键读取”,它们不能移动到从站。
在设置方面没有限制,但您需要了解一些方面。
您可以使用半同步复制,因为它使用一种很好的算法将 SQL 传送到从站,方法是确保至少一台服务器在从站中继日志中具有所有最新的 SQL。(请参阅我在 2011 年 8 月 5 日发表的文章MySQL 复制是否受到高延迟互连的影响?)
然而,半同步复制只适用于 N 个 Slave 中的一个。
无论你是否有半同步复制,只要你拥有的 Slave 越多,Master 必须做的 CPU 处理就越多,以保持其 Slave 为最新就足够了。
对于一个拥有 N 个奴隶的主人来说,那是……
使用半同步复制,并没有好多少,因为对于具有 N 个从属的主控,那是......
如果您必须有许多从站,请考虑在星形拓扑中使用分发主站
如果您无法在星形拓扑中设置 Distribution Master,那么这是我的简单规则:使用半同步复制,但使用尽可能少的 Slave。
您可以附加到主服务器的从服务器数量没有硬性限制,但有一个实际限制,它取决于您的工作负载和硬件。让我们假设您有“一堆”相同的机器,您希望它们以星形拓扑结构(1 台主机,许多从机)连接在一起。在这个假设的集群中,假设您的 master 工作过度,因为它达到了每秒 2000 次操作的最大容量,其中 1000 次是写入,1000 次是读取(为简单起见,我们假设 1 次读取和 1 次写入具有等价的“成本”)。
因此,我们添加了一个从站并将所有读取移至从站。在实践中,不可能将所有读取移动到从站,但这是为了练习。请记住,您不能通过复制来扩展写入,因为写入仍然必须在每个节点上发生。
嗯……我们增加了一个奴隶,但我们实际上并没有增加我们的能力。从站已经处于最大容量。因此,我们添加另一个从属设备并对读取进行负载平衡
现在我们正在取得进展,我们有一点成长空间。但是,呃,哦,我们登上了 slashdot 的首页,所以突然间我们的流量翻了一番,现在我们正在做 2000 wps 和 2000 rps!
没关系。我们会有一些额外的盒子坐在那里,所以我们会添加更多的奴隶
哦,哦。无论我们做什么,如果不通过分片来减少写入或通过扩展所有服务器以使它们每秒具有更大的操作容量,我们都无法改善这种情况。
另一个考虑因素是您的主服务器同时进行多次读取,但它们被序列化到二进制日志中,然后在从服务器上的单个线程中播放。因此,虽然您可能能够在主设备上跟上 1000 wps,但从设备可能只能处理 250 wps 而不会严重落后。这意味着在高写入环境中,从属服务器实际上可能需要比主服务器更强大(在 CPU 和 I/O 容量方面)才能跟上。
我处理有十多个奴隶挂在主人身上的系统。没问题。
Master 的开销非常低——将东西从一个套接字中推出(每个 Slave)。
可以“扇出”,但“继电器”成为“单点故障”。也就是说,Master 可以发送给几个 Relay(Slave 和 Master),每个 Relay 发送给几个 Slave。
将大多数读取移动到从站。这是“读取缩放”。这将有助于减轻 Master 的负担。
写入缩放需要分片。(亚伦暗示了这一点。)
“双主”是两台机器,它们既是主又是从。它对于故障转移很方便,但对于写入扩展没有用。不要在双主设置中写入两台机器;你是在自找麻烦。相反,让读取转到“备份主机”。
评论亚伦的数字——大师很少有“0 rps”。通常有一些读取是为写入做准备所必需的。这些被称为“关键读取”,它们不能移动到从站。