MySQL使用的是逻辑复制,一个事务在主库执行结束后,会发送事务产生的Binlog event到备库应用,进而保证主备的一致性。在这种架构下,对于耗时长的大事务,会导致备库有显著的复制延迟。为解决此问题,RDS MySQL推出了大事务实时应用功能。该功能可以在主库执行大事务时通知备库执行大事务,达到主备同时执行大事务的效果,从而基本消除大事务导致的复制延迟,保障实例的高可用。
功能简介

大事务复制延迟(左图):在MySQL中,大事务是在主库提交后才被传输到从库开始应用,因此大事务在从库的执行时间基本相当于复制延迟的时间。在此期间,主库后续提交的其他事务都无法应用,从库的时效性受到严重影响。
大事务实时应用优化(右图):大事务复制延迟的核心优化思路是:让从库和主库同步执行大事务,当大事务在主库提交时,从库也跟着提交;当大事务在主库回滚时,从库也跟着回滚。
适用范围
使用大事务实时应用优化功能时,需满足以下条件:
使用方法
访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
在左侧导航栏中单击参数设置。
在可修改参数页签内搜索以下参数并配置:
开启大事务实时应用优化功能:
设置
loose_binlog_realtime_apply_long_trx_enabled为ON。设置
loose_binlog_realtime_transmit_source_enabled为ON。设置
loose_binlog_realtime_transmit_replica_enabled为ON。
其他需要配置的参数:
参数名
参数说明
推荐值
loose_binlog_realtime_replica_long_transaction_limit_size定义触发实时复制的事务大小阈值。当一个事务产生的Binlog超过该值,其实时复制功能便会自动激活。
64 MB
loose_binlog_realtime_enable_log_messag是否将实时复制的运行日志记录到error log中,建议开启。
ONloose_binlog_realtime_apply_workers
控制从库用来实时复制的Brr Worker线程数。
8
单击确定,然后单击提交参数,并在弹出的窗口中选择生效的时间段。参数修改立即生效,无需重启实例。
优化效果
在主库执行一个500万行的数据导入事务,可以看到:
优化前:事务先在主库执行,提交后开始在从库上应用,从库上复制延迟的持续时间和事务执行时间相等。
优化后:事务同时在主库和从库执行,从库上没有出现复制延迟。
