19.2.5.2 Оценка параметров репликации на уровне таблицы
Реплика проверяет и оценивает параметры таблицы только в том случае, если выполняется одно из следующих двух условий:
Не найдены соответствующие параметры базы данных.
Найдены один или несколько параметров базы данных, которые были оценены для достижения условия “выполнить” в соответствии с правилами, описанными в предыдущем разделе (см. Раздел 19.2.5.1, «Оценка параметров репликации на уровне базы данных и параметров двоичного протоколирования»).
Вначале, как предварительное условие, реплика проверяет, включена ли репликация на основе инструкций. Если это так, и инструкция находится внутри хранимой функции, реплика выполняет инструкцию и завершает работу. Если включена репликация на основе строк, реплика не знает, произошла ли инструкция внутри хранимой функции на источнике, поэтому это условие не применяется.
Для репликации на основе инструкций события репликации представляют инструкции (все изменения, составляющие данное событие, связаны с одной SQL-инструкцией); для репликации на основе строк каждое событие представляет изменение одной строки таблицы (поэтому одна инструкция, такая как UPDATE mytable SET mycol =
1, может привести к множеству событий на основе строк). С точки зрения событий, процесс проверки параметров таблицы одинаков для репликации на основе строк и репликации на основе инструкций.
Достигнув этой точки, если нет параметров таблицы, реплика просто выполняет все события. Если есть параметры --replicate-do-table или --replicate-wild-do-table, событие должно соответствовать одному из них, чтобы быть выполненным; в противном случае оно игнорируется. Если есть параметры --replicate-ignore-table или --replicate-wild-ignore-table, все события выполняются, за исключением тех, которые соответствуют любому из этих параметров.
Фильтры репликации на уровне таблицы применяются только к таблицам, которые явно упоминаются и обрабатываются в запросе. Они не применяются к таблицам, которые неявно обновляются запросом. Например, инструкция GRANT, которая обновляет системную таблицу mysql.user, но не упоминает эту таблицу, не затрагивается фильтром, который указывает mysql.% в качестве шаблона с подстановкой.
Следующие шаги более подробно описывают эту оценку. Начальной точкой является конец оценки параметров на уровне базы данных, как описано в Разделе 19.2.5.1, «Оценка параметров репликации на уровне базы данных и параметров двоичного протоколирования».
-
Существуют ли параметры репликации таблицы?
Да. Перейти к шагу 2.
Нет. Выполнить обновление и выйти.
-
Какой формат протоколирования используется?
STATEMENT. Выполнить оставшиеся шаги для каждой инструкции, которая выполняет обновление.
ROW. Выполнить оставшиеся шаги для каждого обновления строки таблицы.
-
Существуют ли параметры
--replicate-do-table?-
Да. Соответствует ли таблица какому-либо из них?
Да. Выполнить обновление и выйти.
Нет. Перейти к шагу 4.
Нет. Перейти к шагу 4.
-
Репликация на основе инструкций останавливается, если одна SQL-инструкция выполняется и над таблицей, включённой параметром --replicate-do-table или --replicate-wild-do-table, и над другой таблицей, игнорируемой параметром --replicate-ignore-table или --replicate-wild-ignore-table. Реплика должна либо выполнить, либо проигнорировать всю инструкцию (которая образует событие репликации), и она не может логически это сделать. Это также относится к репликации на основе строк для инструкций DDL, так как инструкции DDL всегда регистрируются как инструкции, независимо от используемого формата протоколирования. Единственный тип инструкции, который может обновить и включённую и проигнорированную таблицу и при этом быть успешно продублированным, — это инструкция DML, которая была зарегистрирована с binlog_format=ROW.
© 2025 Oracle
Licensed under the GPLv2 License.