5.4.4.1 Форматы двоичного протоколирования
Сервер использует несколько форматов протоколирования для записи информации в двоичный журнал. Точный формат зависит от версии MySQL, используемой на сервере. Существует три формата протоколирования:
Функциональность репликации в MySQL изначально основана на распространении SQL-выражений от источника к реплике. Это называется протоколированием на основе инструкций. Вы можете заставить сервер использовать этот формат, запустив его с параметром
--binlog-format=STATEMENT.При протоколировании на основе строк источник записывает в двоичный журнал события, указывающие, как изменяются отдельные строки таблиц. Поэтому важно, чтобы таблицы всегда использовали первичный ключ, чтобы обеспечить эффективную идентификацию строк. Вы можете заставить сервер использовать протоколирование на основе строк, запустив его с параметром
--binlog-format=ROW.Доступен и третий вариант: смешанное протоколирование. При смешанном протоколировании протоколирование на основе инструкций используется по умолчанию, но режим протоколирования автоматически переключается на протоколирование на основе строк в определенных случаях, как описано ниже. Вы можете заставить MySQL использовать смешанное протоколирование явно, запустив mysqld с параметром
--binlog-format=MIXED.
Формат протоколирования также может быть настроен или ограничен используемым механизмом хранения данных. Это помогает устранить проблемы при репликации определенных инструкций между источником и репликой, использующими разные механизмы хранения.
При репликации на основе инструкций могут возникнуть проблемы с репликацией недетерминированных инструкций. При определении того, безопасна ли та или иная инструкция для репликации на основе инструкций, MySQL определяет, может ли он гарантировать, что инструкция может быть реплицирована с помощью протоколирования на основе инструкций. Если MySQL не может дать такой гарантии, он помечает инструкцию как потенциально небезопасную и выводит предупреждение Инструкция может быть небезопасной для протоколирования в формате инструкций.
Вы можете избежать этих проблем, используя репликацию MySQL на основе строк.
© 2025 Oracle
Licensed under the GPLv2 License.