暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

[ACDU 翻译] MySQL 17.4.10.2 配置半同步复制

原创 由迪 2022-10-21
805

当您为半同步复制安装源插件和副本插件时(请参阅 第 17.4.10.1 节,“安装半同步复制”),系统变量可用于控制插件行为。

要检查半同步复制的状态变量的当前值,请使用SHOW VARIABLES

mysql> SHOW VARIABLES LIKE 'rpl_semi_sync%';

从 MySQL 8.0.26 开始,提供了新版本的源插件和副本插件,它们 在系统变量和状态变量中将术语“ master ”和“ slave ”替换 为“ source ”和“ replica ” 。如果安装新的 rpl_semi_sync_sourcerpl_semi_sync_replica插件,新的系统变量和状态变量可用,但旧的不可用。如果您安装旧的 rpl_semi_sync_masterrpl_semi_sync_slave插件,旧的系统变量和状态变量可用,但新的不可用。您不能在实例上同时安装相关插件的新旧版本。

第 17.1.6.2 节,“复制源选项和变量”第 17.1.6.3 节,“副本服务器选项和变量”中描述了 所有 系统变量 。一些关键的系统变量是: rpl_semi_sync_*xxx*

rpl_semi_sync_source_wait_point or rpl_semi_sync_master_wait_point 系统变量控制半同步源服务器在向提交事务的客户端返回状态之前等待事务接收的副本确认的点 。 这些值是允许的:

  • AFTER_SYNC(默认):源将每个事务写入其二进制日志和副本,并将二进制日志同步到磁盘。源在同步后等待交易接收的副本确认。收到确认后,源将事务提交给存储引擎并将结果返回给客户端,然后客户端可以继续。
  • AFTER_COMMIT:源将每个事务写入其二进制日志和副本,同步二进制日志,并将事务提交给存储引擎。提交后,源等待事务接收的副本确认。收到确认后,源将结果返回给客户端,然后客户端可以继续。

这些设置的复制特性不同如下:

  • 使用AFTER_SYNC,所有客户端同时看到提交的事务,这是在副本确认并提交到源上的存储引擎之后。因此,所有客户端都在源上看到相同的数据。

    如果源发生故障,源上提交的所有事务都已复制到副本(保存到其中继日志)。源意外退出和故障转移到副本是无损的,因为副本是最新的。如上所述,故障转移后不应重复使用源。

  • 使用AFTER_COMMIT,发出事务的客户端只有在服务器提交到存储引擎并收到副本确认后才能获得返回状态。在提交之后和副本确认之前,其他客户端可以在提交客户端之前看到提交的事务。

    如果出现问题导致副本无法处理事务,那么在意外的源退出和故障转移到副本的情况下,这些客户端可能会看到与他们在源上看到的数据相关的数据丢失。

从 MySQL 8.0.23 开始,您可以通过启用 replication_sender_observe_commit_only限制回调的系统变量和 replication_optimize_for_static_plugin_config添加共享锁并避免不必要的锁获取来提高半同步复制的性能。随着副本数量的增加,这些设置会有所帮助,因为锁争用会降低性能。半同步复制源服务器也可以通过启用这些系统变量来获得性能优势,因为它们使用与副本相同的锁定机制。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论