Spec-Zone .ru
спецификации, руководства, описания, API

16.1.2.3. Определение Безопасных и Опасных Операторов в Двоичном Журналировании

Говоря о "безопасности" оператора в MySQL Replication, мы обращаемся к тому, могут ли оператор и его эффекты быть тиражированы, правильно используя основанный на операторе формат. Если это верно для оператора, мы обращаемся к оператору как безопасный; иначе, мы обращаемся к этому как опасный.

Вообще, оператор безопасен, если это детерминированный, и опасный, если это не. Однако, определенные недетерминированные функции не считают опасными (см. Недетерминированные функции, которые не рассматривают опасными, позже в этом разделе). Кроме того, операторы используя следствия математических функций с плавающей точкой — которые аппаратно-зависимы — всегда считают безопасными (см. Раздел 16.4.1.12, "Репликация и Значения С плавающей точкой").

Обработка безопасных и опасных операторов. Оператор обрабатывается по-другому в зависимости от того, считают ли оператор безопасным, и относительно двоичного формата журналирования (то есть, текущая стоимость binlog_format).

Каждый оператор, отмеченный как опасный, генерирует предупреждение. Прежде, в случаях, где очень много таких операторов выполнялись на ведущем устройстве, это могло привести к очень большим файлам журнала ошибок, иногда даже заполняя весь диск неожиданно. Чтобы принять меры против этого, MySQL 5.7 обеспечивает механизм подавления предупреждения, который ведет себя следующим образом: Всякий раз, когда новые 50 ER_BINLOG_UNSAFE_STATEMENT предупреждения были сгенерированы больше чем 50 раз в любой 50-секундный период, предупреждая, что подавление включается. Когда активировано, это заставляет такие предупреждения не быть записанными журналу ошибок; вместо этого, для каждого 50 предупреждений этого типа, примечания The last warning was repeated N times in last S seconds пишется журналу ошибок. Это продолжается пока 50, новые, такие предупреждения были выпущены через 50 секунд или меньше; как только уровень уменьшился ниже этого порога, предупреждения еще раз обычно регистрируются. Предупреждение подавления не имеет никакого эффекта на то, как безопасность операторов для основанного на операторе журналирования определяется, ни на том, как предупреждения отправляются клиенту (клиенты MySQL все еще получают предупреждение того для каждого такого оператора).

Для получения дополнительной информации см. Раздел 16.1.2, "Форматы Репликации".

Операторы, которые рассматривают опасным. Операторы, имеющие следующие характеристики, считают опасными:

Для дополнительной информации см. Раздел 16.4.1, "Функции репликации и Проблемы".