MySQL 9.0 发行说明
系统变量 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
显示单线程或多线程副本上应用程序线程重试事务的详细信息。这些数据包括显示应用程序线程从开始到结束应用上次事务所花费的时间(以及当前正在进行的事务何时开始)以及这是在原始源和立即源提交后的多长时间的时间戳。数据还显示上次事务和当前正在进行的事务的重试次数,并使您能够识别导致重试事务的瞬时错误。您可以使用这些信息来查看事务重试是否导致复制延迟,并调查导致重试的失败的根本原因。