16.2.5.2 Оценка параметров репликации на уровне таблицы
Реплика проверяет и оценивает параметры таблицы только в том случае, если выполняется хотя бы одно из следующих двух условий:
Не найдено соответствующих параметров базы данных.
Найдены один или несколько параметров базы данных, которые были оценены для достижения условия «выполнить» в соответствии с правилами, описанными в предыдущем разделе (см. раздел 16.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.% в качестве шаблона подстановки.
Следующие шаги более подробно описывают эту оценку. Начальной точкой является конец оценки параметров базы данных, как описано в разделе 16.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.