19.2.5 Как серверы оценивают правила фильтрации репликации
Если сервер-источник репликации не записывает оператор в свой двоичный журнал, оператор не реплицируется. Если сервер записывает оператор, оператор отправляется всем репликам, и каждая реплика определяет, выполнить его или проигнорировать.
На сервере-источнике вы можете управлять тем, для каких баз данных нужно регистрировать изменения, используя параметры --binlog-do-db и --binlog-ignore-db для управления двоичным логгированием. Подробное описание правил, используемых серверами для оценки этих параметров, см. в разделе 19.2.5.1 «Оценка параметров репликации на уровне базы данных и параметров двоичного логгирования». Не следует использовать эти параметры для управления тем, какие базы данных и таблицы реплицируются. Вместо этого используйте фильтрацию на реплике для управления событиями, которые выполняются на реплике.
На стороне реплики решения о выполнении или игнорировании операторов, полученных от источника, принимаются в соответствии с параметрами --replicate-*, с которыми была запущена реплика. (См. раздел 19.1.6 «Параметры репликации и двоичного логгирования и переменные».) Фильтры, управляемые этими параметрами, также могут быть установлены динамически с помощью оператора CHANGE REPLICATION FILTER. Правила, управляющие такими фильтрами, одинаковы, независимо от того, были ли они созданы при запуске с помощью параметров --replicate-* или во время работы сервера реплики с помощью CHANGE REPLICATION
FILTER. Обратите внимание, что фильтры репликации нельзя использовать для каналов, специфичных для Group Replication, на экземпляре MySQL, настроенном для Group Replication, потому что фильтрация транзакций на некоторых серверах сделает группу неспособной согласовать состояние.
В простейшем случае, когда нет параметров --replicate-*, реплика выполняет все операторы, полученные от источника. В противном случае результат зависит от заданных параметров.
Параметры на уровне базы данных (--replicate-do-db, --replicate-ignore-db) проверяются в первую очередь; см. раздел 19.2.5.1 «Оценка параметров репликации на уровне базы данных и параметров двоичного логгирования» для описания этого процесса. Если не используются параметры на уровне базы данных, проверка параметров продолжается с любыми параметрами на уровне таблиц, которые могут быть в использовании (см. раздел 19.2.5.2 «Оценка параметров репликации на уровне таблиц» для обсуждения этих параметров). Если используются один или несколько параметров на уровне базы данных, но ни один из них не соответствует, оператор не реплицируется.
Для операторов, влияющих только на базы данных (то есть CREATE DATABASE, DROP DATABASE и ALTER DATABASE), параметры на уровне базы данных всегда имеют приоритет над любыми параметрами --replicate-wild-do-table. Другими словами, для таких операторов параметры --replicate-wild-do-table проверяются только в том случае, если не применяется ни один параметр на уровне базы данных.
Для упрощения определения влияния заданного набора параметров рекомендуется избегать смешивания параметров do-* и ignore-*, или параметров, содержащих подстановки, с параметрами, которые их не содержат.
Если были указаны какие-либо параметры --replicate-rewrite-db, они применяются перед проверкой правил фильтрации --replicate-*.
Все параметры фильтрации репликации следуют тем же правилам чувствительности к регистру, что и имена баз данных и таблиц в других частях сервера MySQL, включая влияние системной переменной lower_case_table_names.
Правила фильтрации применяются до выполнения каких-либо проверок привилегий; если транзакция отфильтрована, проверка привилегий для этой транзакции не выполняется, и поэтому она не может вызвать ошибку.
© 2025 Oracle
Licensed under the GPLv2 License.