MySQL 8.3 Release Notes
全局系统变量 replica_transaction_retries
设置单线程或多线程副本上 applier 线程自动重试失败事务的最大次数,之前停止。事务将自动重试,因为 SQL 线程无法执行它们,因为 InnoDB 死锁,或者事务的执行时间超过 InnoDB innodb_lock_wait_timeout
值。如果事务具有非临时错误,阻止它成功,它将不被重试。
变量 replica_transaction_retries
的默认设置为 10,这意味着具有临时错误的失败事务将被重试 10 次,然后 applier 线程停止。将变量设置为 0 将禁用事务的自动重试。在多线程副本上,指定的交易重试次数可以在所有 applier 线程和所有通道上发生。性能模式表 replication_applier_status
显示每个复制通道上发生的总交易重试次数,在 COUNT_TRANSACTIONS_RETRIES
列中。
交易重试过程可能会导致副本或组复制组成员上的延迟,可以配置为单线程或多线程副本。性能模式表 replication_applier_status_by_worker
显示单线程或多线程副本上 applier 线程的交易重试的详细信息。这些数据包括显示 applier 线程应用最后一个事务从开始到结束所需时间的时间戳(以及当前事务何时开始),以及自原始源和直接源提交以来所需的时间。这些数据还显示最后一个事务和当前事务的重试次数,并使您能够确定交易重试是否是复制延迟的原因,并调查导致重试的失败的根本原因。