MySQL 8.4 发行说明
系统变量 replica_transaction_retries
的全局值设置单线程或多线程副本上应用程序线程自动重试失败事务的最大次数,然后再停止。当 SQL 线程由于 InnoDB
死锁而无法执行事务,或者事务执行时间超过 InnoDB
innodb_lock_wait_timeout
值时,会自动重试事务。如果事务存在阻止其成功的非临时错误,则不会重试。
replica_transaction_retries
的默认设置为 10,这意味着在应用程序线程停止之前,将重试出现明显临时错误的失败事务 10 次。将变量设置为 0 将禁用事务的自动重试。在多线程副本上,指定的重试事务次数可以在所有通道的所有应用程序线程上进行。性能模式表 replication_applier_status
在 COUNT_TRANSACTIONS_RETRIES
列中显示每个复制通道上发生的总重试事务次数。
重试事务的过程可能会导致副本或组复制组成员出现延迟,组复制组成员可以配置为单线程或多线程副本。性能模式表 replication_applier_status_by_worker
显示单线程或多线程副本上应用程序线程重试事务的详细信息。这些数据包括时间戳,显示应用程序线程从开始到结束应用最后一个事务(以及当前正在进行的事务何时开始)花费了多长时间,以及这比原始源和立即源上的提交时间晚多少。这些数据还显示了最后一个事务和当前正在进行的事务的重试次数,并允许您识别导致事务重试的瞬态错误。您可以使用这些信息查看事务重试是否导致复制延迟,并调查导致重试的失败的根本原因。