AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 20601
Accepted
Ran
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 3 个回答
  • 9439 Views

3 个回答

  • Voted
  1. 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。

    • 3
  2. 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 容量方面)才能跟上。

    • 2
  3. 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”。通常有一些读取是为写入做准备所必需的。这些被称为“关键读取”,它们不能移动到从站。

    • 0

相关问题

  • 我在哪里可以找到mysql慢日志?

  • 如何优化大型数据库的 mysqldump?

  • 什么时候是使用 MariaDB 而不是 MySQL 的合适时机,为什么?

  • PostgreSQL 9.0 Replication 和 Slony-I 有什么区别?

  • 组如何跟踪数据库架构更改?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何查看 Oracle 中的数据库列表?

    • 8 个回答
  • Marko Smith

    mysql innodb_buffer_pool_size 应该有多大?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    从 .frm 和 .ibd 文件恢复表?

    • 10 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    如何选择每组的第一行?

    • 6 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta 使用 psql 列出数据库权限 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    bernd_k 什么时候应该使用唯一约束而不是唯一索引? 2011-01-05 02:32:27 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve