Documentation Home

17.5.1.32 复制重试和超时

系统变量的全局值 replica_transaction_retries (从 MySQL 8.0.26 开始)或 slave_transaction_retries (在 MySQL 8.0.26 之前)设置单线程或多线程副本上的应用程序线程在停止前自动重试失败事务的最大次数。当 SQL 线程因为死锁而无法执行InnoDB 事务时,或者当事务的执行时间超过该 InnoDB innodb_lock_wait_timeout值时,事务会自动重试。如果事务有一个阻止它成功的非临时错误,则不会重试。

replica_transaction_retriesor 的默认设置为 slave_transaction_retries10,这意味着在应用程序线程停止之前,具有明显临时错误的失败事务会重试 10 次。将该变量设置为 0 会禁用事务的自动重试。在多线程副本上,可以在所有通道的所有应用程序线程上进行指定次数的事务重试。Performance Schema 表 在列replication_applier_status中显示每个复制通道上发生的事务重试总数 COUNT_TRANSACTIONS_RETRIES

重试事务的过程可能会导致副本或组复制组成员出现滞后,这些成员可以配置为单线程或多线程副本。性能模式表 replication_applier_status_by_worker 显示应用程序线程在单线程或多线程副本上重试事务的详细信息。此数据包括时间戳,显示应用程序线程从开始到结束应用最后一个事务所花费的时间(以及当前正在进行的事务何时开始),以及在原始源和直接源上提交之后的时间。该数据还显示了最后一个事务和当前正在进行的事务的重试次数,并使您能够识别导致事务重试的暂时性错误。您可以使用此信息来查看事务重试是否是复制滞后的原因,