mysql 半同步复制配置项_MySQL高可用性框架:半同步复制的细节以及相关的配置...

什么是MySQL半同步复制?

简单地说,在MySQL半同步复制中,主设备仅在从至少一个从设备接收到确认之后才将事务提交到存储引擎。只有在收到事件并将其复制到中继日志并刷新到磁盘后,从站才会提供确认。这保证了对于提交并返回到客户端的所有事务,数据至少存在于2个节点上。半同步(复制)中的术语“半”是由于主设备在接收到事件并将其刷新到中继日志后提交事务,但不一定提交给从设备上的数据文件。这与完全同步复制形成对比,完全同步复制在会话返回客户端之前,事务将在从服务器和主服务器上提交。

631c7a45b8435d1d267866ff18dbf9a8.png

半导体复制(在MySQL中本机可用)可帮助HA框架确保已提交事务的数据一致性和冗余。如果主服务器发生故障,主服务器上提交的所有事务都将被复制到至少一个从服务器(保存到中继日志)。因此,故障转移到该从站将是无损的,因为从站是最新的(在从站的中继日志完全耗尽之后)。

03495288a393ecd56a62bdf963de6759.png

复制和半同步相关设置

让我们讨论一些关键的MySQL设置,这些设置用于确保我们框架中的高可用性和数据一致性的最佳行为。

管理从站的执行速度

第一个考虑因素是处理半同步复制的“半”行为,它只保证数据已被接收器的I / O线程接收并刷新到中继日志,但不一定由SQL线程提交。默认情况下,MySQL从属服务器中的SQL线程是单线程的,无法与多线程的主服务器保持同步。这样做的明显影响是,在主服务器发生故障时,从服务器将不会是最新的,因为它的SQL线程仍在处理中继日志中的事件。这将延迟故障转移过程,因为我们的框架期望从服务器在可以升级之前完全是最新的。这对于保持数据一致性是必要的。为解决此问题,我们使用slave_parallel_workers选项启用多线程从站 设置并行SQL线程数以处理中继日志中的事件。

72427fa28ba3b34cd2e812c0b69b9ff9.png

此外,我们配置以下设置,以确保从站不会进入主站不在的任何状态:

slave-parallel-type = LOGICAL_CLOCKslave_preserve_commit_order = 1这为我们提供了更强的数据一致性。通过这些设置,我们将能够在从属设备上获得更好的并行化和速度,但是如果并行线程太多,则线程之间协调所涉及的开销也会增加,并且遗憾的是,它可以抵消这些优势。

9829dae15568514e7241353d312939a7.png

我们可以用来提高从站上并行执行效率的另一个配置是调整主站上的binlog_group_commit_sync_delay。通过在master上设置它,主服务器上的二进制日志条目以及从服务器上的中继日志条目将具有可由SQL线程并行处理的批量事务。

如果您通过ScaleGrid控制台管理MySQL部署,则可以持续监视和接收有关从属服务器复制延迟的实时警报。它还允许您动态调整上述参数,以确保从站与主站一起工作,从而最大限度地减少故障转移过程中的时间。

bce37f357b293316262f2726a48a585e.png

重要的半同步复制选项

根据设计,MySQL半同步复制可以基于从确认超时设置或基于任何时间点可用的具有半同步能力的从设备的数量而回退到异步模式。根据定义,异步模式不能保证已提交的事务被复制到从属服务器,因此主服务器丢失会导致丢失尚未复制的数据。ScaleGrid HA框架的默认设计是避免回退到异步模式。让我们来看看影响这种行为的配置。

5f51d0aa9fe9f6bc8d731bec57a60a6f.png

rpl_semi_sync_master_wait_for_slave_count此选项用于配置在半同步主服务器提交事务之前必须发送确认的从站数。在3节点主从配置中,我们将其设置为1,因此我们始终确保数据在至少一个从站中可用,同时避免在等待来自两个从站的确认时所涉及的任何性能影响。

053dcbbefcd58a2a7ac2a32c01295cee.png

rpl_semi_sync_master_timeout此选项用于配置半同步主机在切换回异步模式之前等待来自从机的确认的时间。我们将其设置为相对较高的超时值,因此不会回退到异步模式。由于我们使用2个从站运行并且rpl_semi_sync_master_wait_for_slave_count设置为1,因此我们注意到至少有一个从站确实在合理的时间内确认,并且主站在临时网络中断期间不会切换到异步模式。

ab9bc06270f30dddb7a038065df62d24.png

rpl_semi_sync_master_wait_no_slave此控制主等待由配置的超时周期是否rpl_semi_sync_master_timeout到期,即使从属计数下降到小于由被配置从站数rpl_semi_sync_master_wait_for_slave_count 期间的超时时间。我们保留默认值ON,以便主服务器不会回退到异步复制。

94d59676b6820ffdc15366de8d95067b.png

失去所有半同步的影响

如上所述,如果所有从站都关闭或无法从主站访问,我们的框架会阻止主站切换到异步复制。这样做的直接影响是写入在主服务器上停滞不前影响服务的可用性。如CAP定理所述,这对于任何分布式系统的局限性都是必不可少的。该定理指出,在存在网络分区的情况下,我们必须选择可用性或一致性,但不能同时选择两者。在这种情况下,网络分区可以被视为与主服务器断开连接的MySQL从服务器,因为它们已关闭或无法访问。

4569b0bc6ad2e931e33f6dd61e4269ba.png

我们的一致性目标是确保对于所有已提交的事务,数据至少在2个节点上可用。因此,在这种情况下,ScaleGrid HA框架有利于可用性的一致性。通过MySQL主服务器不会从客户端接受进一步的写入,并且仍将提供读取请求。这是我们作为默认行为的有意识的设计决策,当然,它可以根据应用程序要求进行配置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值