10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 下载本手册 本手册节选

17.4.7提高复制性能

随着连接到源的副本数量的增加,负载(尽管很小)也会增加,因为每个副本都使用到源的客户机连接。此外,由于每个副本必须接收源二进制日志的完整副本,源上的网络负载也可能增加并产生瓶颈。

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

提高复制过程性能的一种方法是创建一个更深层次的复制结构,该结构允许源复制到一个副本,并允许其余副本连接到这个主副本以满足它们各自的复制需求。中显示了该结构的示例图17.3,“使用额外的复制源来提高性能”

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

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

为此,你必须配置MySQL实例,如下所示:

  • 源1是将所有更改和更新写入数据库的主要源。在两个源服务器上都启用了二进制日志记录,这是默认值。

  • 源2是服务器源1的副本,它为复制结构中的其余副本提供复制功能。源2是唯一允许连接到源1的计算机。源2有——log-slave-updates选项已启用(这是默认值)。使用这个选项,源1的复制指令也会被写入源2的二进制日志,这样它们就可以被复制到真正的副本。

  • 副本1、副本2和副本3充当源2的副本,并从源2复制信息,源2实际上由登录在源1上的升级组成。

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

如果您的副本无法跟上源上的复制进程,有许多可用的选项:

  • 如果可能,将中继日志和数据文件放在不同的物理驱动器上。要执行此操作,请设置relay_log系统变量指定中继日志的位置。

  • 的值,如果读取二进制日志文件和中继日志文件时磁盘I/O活动较多,则考虑增加rpl_read_size系统变量。这个系统变量控制从日志文件读取的最小数据量,当文件数据当前没有被操作系统缓存时,增加它可能会减少文件读取和I/O停顿。请注意,为从二进制日志和中继日志文件读取的每个线程分配了一个与此值大小相同的缓冲区,包括源上的转储线程和副本上的协调线程。因此,设置较大的值可能会对服务器的内存消耗产生影响。

  • 如果副本比源数据库慢得多,您可能希望将复制不同数据库的职责划分为不同的副本。看到17.4.6节,“将不同的数据库复制到不同的副本”

  • 如果您的源使用事务,而您不关心副本上的事务支持,请使用MyISAM或者副本上的另一个非事务性引擎。看到第17.4.4节,“使用不同源和复制存储引擎的复制”

  • 如果您的副本不充当源,并且您有一个潜在的解决方案来确保在发生故障时可以启动源,那么您可以禁用系统变量log_replica_updates(从MySQL 8.0.26)或log_slave_updates(MySQL 8.0.26之前)。这样可以防止愚蠢的副本也记录它们已执行的事件到自己的二进制日志中。