4.1.32复制重试和复制超时

全局系统变量slave_transaction_retries设置单线程或多线程副本上的应用程序线程在停止前自动重试失败事务的最大次数。事件导致SQL线程无法执行事务时,事务将自动重试InnoDB死锁,或当事务的执行时间超过InnoDBinnodb_lock_wait_timeout价值。如果事务有阻止其成功的非临时错误,则不会重试。

的默认设置slave_transaction_retries是10,这意味着在应用程序线程停止之前,带有明显临时错误的失败事务将被重试10次。将该变量设置为0将禁用事务的自动重试。在多线程副本上,可以在所有通道的所有应用程序线程上执行指定次数的事务重试。性能架构表replication_applier_status控件中显示每个复制区域通道上发生的事务重试的总数COUNT_TRANSACTIONS_RETRIES列。

重试事务的过程可能会在副本或Group Replication组成员(可以配置为单线程副本或多线程副本)上造成延迟。性能架构表replication_applier_status_by_worker显示有关应用程序线程在单线程或多线程副本上的事务重试的详细信息。该数据包括时间戳,显示了应用程序线程从开始到结束应用上一个事务所需的时间(以及当前正在进行的事务是何时启动的),以及在原始源和直接源上提交之后需要多长时间。该数据还显示了上一个事务的重试次数和当前正在进行的事务的重试次数,并使您能够识别导致事务被重试的暂时错误。您可以使用此信息查看事务重试是否是复制延迟的原因,并调查导致重试的失败的根本原因。