MySQL复制/复制解决方案/改善复制性能

3.7提高复制性能

随着副本数量的连接到一个来源增加,负载,虽然最小,也会增加,因为每个副本使用一个客户端连接到源。也,因为每个副本必须接受一个完整的复制的源的二进制日志,源也会增加网络负载和创建一个瓶颈。

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

复制过程的提高性能的一个方法是创建一个更深层次的复制结构,使得源复制到只有一个副本,和其余副本连接到这个主副本复制他们的个人需求。一个示例所示的结构图3.3”,使用一个额外的复制源”来提高性能

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

服务器MySQL源1复制到服务器MySQL源2,从而复制的MySQL服务器副本1,MySQL副本2,MySQL副本3。

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

  • 源1是所有更改的主要来源和更新写入到数据库中。在源服务器上启用二进制日志,这是缺省设置。

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

  • 副本,副本2,复制3源作为副本2,复制信息从源2,实际上包括升级登录源1。

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

如果你的副本难以跟上源上的复制过程,有许多可用的选项:

  • 如果可能的话,把继电器日志和数据文件放在不同的物理驱动器。为此,设置relay_log系统变量来指定中继日志的位置。

  • 如果大量磁盘I / O活动读取的二进制日志文件和中继日志文件是一个问题,考虑增加的价值rpl_read_size系统变量。该系统变量控制的最小数量从日志文件中读取数据,并增加它可能减少文件读取和I / O摊位当文件当前没有缓存的数据操作系统。注意,一个缓冲区的大小为每个线程分配这个值是读取的二进制日志和中继日志文件,包括来源和协调员线程转储线程在副本。设置一个较大的值可能因此影响服务器的内存消耗。

  • 如果副本明显低于源,你可能想要分割的责任不同数据库复制到不同的副本。看到3.6节,“不同的数据库复制到不同的副本”

  • 如果你的源利用交易和你不关心事务支持你的副本,使用MyISAM或另一个nontransactional引擎副本。看到3.4节”,与不同的源和副本存储引擎使用复制”

  • 如果你的副本不作为来源,和你有一个潜在的解决方案以保证你可以打开失败的事件源,然后你可以禁用系统变量log_replica_updates(从MySQL 8.0.26)或log_slave_updates(MySQL 8.0.26之前)的副本。这样可以防止愚蠢的副本还从日志事件执行的二进制日志。