Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  Improving Replication Performance

19.4.7 提高复制性能

随着副本数量增加,虽然负载增加,但每个副本都使用客户端连接到源服务器,这也增加了负载。同时,每个副本都需要从源服务器接收完整的二进制日志副本,这可能会增加源服务器的网络负载并导致瓶颈。

如果您使用大量副本连接到一个源服务器,并且该源服务器还在处理请求(例如作为扩展解决方案的一部分),那么您可能想提高复制过程的性能。

一种提高复制过程性能的方法是创建一个更深的复制结构,使源服务器只复制到一个副本,然后其他副本连接到这个主副本以满足其个体复制需求。该结构的示例在Figure 19.3,“使用额外的复制源来提高性能”中展示。

Figure 19.3 使用额外的复制源来提高性能

The server MySQL Source 1 replicates to the server MySQL Source 2, which in turn replicates to the servers MySQL Replica 1, MySQL Replica 2, and MySQL Replica 3.

为了使这工作,您需要配置MySQL实例如下:

  • 源服务器1是所有更改和更新都写入到数据库的源服务器。启用了源服务器的二进制日志记录,这是默认设置。

  • 源服务器2是连接到源服务器1的副本,提供复制功能到复制结构中的其他副本。源服务器2是唯一允许连接到源服务器1的机器。源服务器2启用了--log-replica-updates选项(默认设置)。使用该选项,源服务器1的复制指令也将被写入到源服务器2的二进制日志中,以便将其复制到真正的副本。

  • 副本1、副本2和副本3作为源服务器2的副本,复制来自源服务器2的信息,这些信息实际上是源服务器1上记录的升级。

上述解决方案减少了客户端负载和网络接口负载在主源服务器上,这应该提高了主源服务器在直接数据库解决方案中的性能。

如果您的副本无法跟上源服务器的复制过程,您可以选择以下选项:

  • 如果可能,将relay日志和数据文件分配到不同的物理磁盘上。要实现这一点,请将relay_log系统变量设置为指定relay日志的位置。

  • 如果读取二进制日志文件和relay日志文件的磁盘I/O活动是一个问题,考虑增加rpl_read_size系统变量的值。这系统变量控制从日志文件读取的最小数据量,增加它可能会减少文件读取和I/O停顿,因为文件数据不在操作系统的缓存中。请注意,这个值将为每个读取日志文件和relay日志文件的线程分配一个缓冲区,包括dump线程在源服务器和协调线程在副本服务器上。设置一个大值可能会对服务器的内存使用产生影响。

  • 如果复制的副本远远慢于源服务器,您可能想将不同数据库的复制责任分配给不同的副本。请参阅第19.4.6节,“将不同数据库复制到不同的副本”

  • 如果源服务器使用事务,您不关心副本上的事务支持,可以在副本上使用MyISAM或其他非事务存储引擎。请参阅第19.4.4节,“使用不同源和副本存储引擎的复制”

  • 如果您的副本不作为源服务器,并且您已经准备了一种解决方案,以确保在故障情况下可以快速启动源服务器,那么可以禁用log_replica_updates。这将防止“”的副本也将执行的事件写入自己的二进制日志。