16.1.4.4 Проверка репликации анонимных транзакций
В этом разделе объясняется, как отслеживать топологию репликации и проверять, что все анонимные транзакции были реплицированы. Это полезно при онлайн-изменении режима репликации, так как позволяет убедиться в возможности безопасного перехода к транзакциям GTID.
Существует несколько способов ожидания репликации транзакций:
Самый простой метод, который работает независимо от топологии, но зависит от времени, заключается в следующем: если вы уверены, что реплика никогда не отстаёт более чем на N секунд, просто подождите немного больше N секунд. Или подождите день, или любой другой период времени, который вы считаете безопасным для вашей развёртывания.
Более безопасный метод, не зависящий от времени, в том случае, если у вас есть только один источник с одной или несколькими репликами: выполните следующие действия:
-
На источнике выполните:
SHOW MASTER STATUS;
Запишите значения в колонках
FileиPosition. -
На каждой реплике используйте информацию о файле и позиции из источника для выполнения:
SELECT MASTER_POS_WAIT(file, position);
Если у вас есть источник и несколько уровней реплик, другими словами, если у вас есть реплики реплик, повторите шаг 2 на каждом уровне, начиная с источника, затем со всеми прямыми репликами, затем со всеми репликами реплик и так далее.
Если вы используете циклическую топологию репликации, где несколько серверов могут иметь клиенты записи, выполните шаг 2 для каждого соединения источник-реплика, пока не будет пройден весь круг. Повторите весь процесс, чтобы пройти полный круг дважды.
Например, предположим, что у вас есть три сервера A, B и C, которые реплицируют данные по кругу, так что A -> B -> C -> A. Процедура в этом случае следующая:
Выполните шаг 1 на сервере A и шаг 2 на сервере B.
Выполните шаг 1 на сервере B и шаг 2 на сервере C.
Выполните шаг 1 на сервере C и шаг 2 на сервере A.
Выполните шаг 1 на сервере A и шаг 2 на сервере B.
Выполните шаг 1 на сервере B и шаг 2 на сервере C.
Выполните шаг 1 на сервере C и шаг 2 на сервере A.
© 2025 Oracle
Licensed under the GPLv2 License.