19.5.1.33 Повторные попытки и таймауты репликации
Глобальное значение системной переменной replica_transaction_retries устанавливает максимальное количество попыток, которое потоки-применяющие на реплике с однопоточным или многопоточным режимом обработки автоматически выполняют для повторной попытки неудачных транзакций перед остановкой. Транзакции автоматически повторно пытаются выполниться, когда поток SQL не может выполнить их из-за блокировки, которая является InnoDB, или когда время выполнения транзакции превышает значение InnoDB innodb_lock_wait_timeout. Если транзакция имеет ошибку, которая не является временной и не позволяет ей завершиться успешно, она не будет повторно выполняться.
Значение по умолчанию для replica_transaction_retries составляет 10, что означает, что неудачная транзакция с, по-видимому, временной ошибкой будет повторно выполняться 10 раз перед остановкой потока-применяющего. Установка переменной в 0 отключает автоматическое повторное выполнение транзакций. На многопоточной реплике указанное количество повторных попыток транзакций может выполняться всеми потоками-применяющими всех каналов. Таблица Performance Schema replication_applier_status отображает общее количество повторных попыток транзакций, выполненных на каждом канале репликации, в столбце COUNT_TRANSACTIONS_RETRIES.
Процесс повторного выполнения транзакций может привести к задержке на реплике или на узле группы репликации, который может быть настроен как однопоточная или многопоточная реплика. Таблица Performance Schema replication_applier_status_by_worker отображает подробную информацию о повторных попытках транзакций потоками-применяющими на однопоточной или многопоточной реплике. Эти данные включают временные метки, показывающие, сколько времени потребовалось потоку-применяющему для применения последней транзакции от начала до конца (и когда была начата текущая в процессе выполнения транзакция), и сколько это было после фиксации на исходном источнике и непосредственном источнике. Данные также показывают количество повторных попыток для последней транзакции и текущей в процессе выполнения транзакции и позволяют определить временные ошибки, которые привели к повторному выполнению транзакций. Вы можете использовать эту информацию, чтобы увидеть, являются ли повторные попытки транзакций причиной задержки репликации, и исследовать первопричину сбоев, которые привели к этим повторным попыткам.
© 2025 Oracle
Licensed under the GPLv2 License.