MySQL 8.0 参考手册  / 第十七章复制  / 17.4 复制解决方案  /  17.3.6 提高复制性能

17.3.6 提高复制性能

随着连接到复制源服务器的副本数量的增加,负载虽然很小,但也会增加,因为每个副本都使用到源的客户端连接。此外,由于每个副本都必须接收源二进制日志的完整副本,因此源上的网络负载也可能增加并造成瓶颈。

如果您使用连接到一个源的大量副本,并且该源也忙于处理请求(例如,作为横向扩展解决方案的一部分),那么您可能希望提高复制过程的性能。

提高复制过程性能的一种方法是创建更深层次的复制结构,使源能够仅复制到一个副本,并让其余副本连接到该主副本以满足其各自的复制要求。图 17.3 “使用附加复制源提高性能”中显示了此结构的示例 。

图 17.3 使用额外的复制源来提高性能

服务器 MySQL Source 1 复制到服务器 MySQL Source 2,后者又复制到服务器 MySQL Replica 1、MySQL Replica 2 和 MySQL Replica 3。

为此,您必须按如下方式配置 MySQL 实例:

  • 源 1 是所有更改和更新都写入数据库的主要源。应在此机器上启用二进制日志记录。

  • Source 2 是 Source 1 的副本,它为复制结构中的其余副本提供复制功能。Source 2 是唯一允许连接到 Source 1 的机器。Source 2 也启用了二进制日志记录,并且启用了 log_slave_updates系统变量,因此来自 Source 1 的复制指令也被写入 Source 2 的二进制日志,这样它们就可以被复制到真正的复制品。

  • Replica 1、Replica 2 和 Replica 3 充当 Source 2 的副本,并从 Source 2 复制信息,这些信息实际上包括在 Source 1 上记录的更新。

上述解决方案减少了主源上的客户端负载和网络接口负载,当用作直接数据库解决方案时,这应该会提高主源的整体性能。

如果您的副本无法跟上源上的复制过程,可以使用多种选项: