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

5.2.4.3. Смешанный Двоичный Формат Журналирования

Работая в MIXED регистрируя формат, сервер автоматически переключается от основанного на операторе до основанного на строке журналирования при следующих условиях:

Отметить

Предупреждение сгенерировано, если Вы пытаетесь выполнить оператор, используя основанное на операторе журналирование, которое должно быть записано, используя основанное на строке журналирование. Предупреждению показывают обоих в клиенте (в выводе SHOW WARNINGS) и через mysqld журнал ошибок. Предупреждение добавляется к SHOW WARNINGS таблица каждый раз такой оператор выполняется. Однако, только первый оператор, который генерировал предупреждение для каждого клиентского сеанса, пишется журналу ошибок, чтобы предотвратить лавинную рассылку журнала.

В дополнение к решениям выше, отдельные механизмы могут также определить формат журналирования, используемый, когда информация в таблице обновляется. Возможности журналирования отдельного механизма могут быть определены следующим образом:

Данный механизм хранения может поддерживать или или оба формата журналирования. Следующая таблица приводит форматы, поддерживаемые каждым механизмом.

Механизм хранения Поддерживаемое Журналирование строки Поддерживаемое Журналирование оператора
ARCHIVE Да Да
BLACKHOLE Да Да
CSV Да Да
EXAMPLE Да Нет
FEDERATED Да Да
HEAP Да Да
InnoDB Да Да, когда уровень изоляции транзакции REPEATABLE READ или SERIALIZABLE; Nootherwise.
MyISAM Да Да
MERGE Да Да
NDBCLUSTER Да Нет

В MySQL 5.7, должен ли оператор быть зарегистрирован и режим журналирования, который будет использоваться, определяется согласно типу оператора (безопасный, опасный, или введенный двоичный файл), двоичный формат журналирования (STATEMENT, ROW, или MIXED), и возможности журналирования механизма хранения (способный оператор, способная строка, оба, или ни один). Операторы могут быть зарегистрированы с или без предупреждения; отказавшие операторы не регистрируются, но генерируют ошибки в журнале. Это показывают в следующей таблице решений, где SLC обозначает "журналирование оператора, способное" и стенды RLC для "журналирования строки, способного".

Условие Действие
Ввести binlog_format SLC RLC Ошибка / Предупреждение Зарегистрированный как
* * Нет Нет Ошибка: не Может выполнить оператор: Двоичное журналирование невозможно, так как по крайней мере один механизм включается, который и неспособен к строке и неспособен к оператору. -
Безопасный STATEMENT Да Нет - STATEMENT
Безопасный MIXED Да Нет - STATEMENT
Безопасный ROW Да Нет Ошибка: не Может выполнить оператор: Двоичное журналирование невозможно с тех пор BINLOG_FORMAT = ROW и по крайней мере одна таблица использует механизм хранения, который не способен к основанному на строке журналированию. -
Опасный STATEMENT Да Нет Предупреждение: оператор Unsafe binlogged в формате оператора, с тех пор BINLOG_FORMAT = STATEMENT STATEMENT
Опасный MIXED Да Нет Ошибка: не Может выполнить оператор: Двоичное журналирование опасного оператора невозможно, когда механизм хранения ограничивается основанным на операторе журналированием, даже если BINLOG_FORMAT = MIXED. -
Опасный ROW Да Нет Ошибка: не Может выполнить оператор: Двоичное журналирование невозможно с тех пор BINLOG_FORMAT = ROW и по крайней мере одна таблица использует механизм хранения, который не способен к основанному на строке журналированию. -
Инжекция строки STATEMENT Да Нет Ошибка: не Может выполнить инжекцию строки: Двоичное журналирование не возможно, так как по крайней мере одна таблица использует механизм хранения, который не способен к основанному на строке журналированию. -
Инжекция строки MIXED Да Нет Ошибка: не Может выполнить инжекцию строки: Двоичное журналирование не возможно, так как по крайней мере одна таблица использует механизм хранения, который не способен к основанному на строке журналированию. -
Инжекция строки ROW Да Нет Ошибка: не Может выполнить инжекцию строки: Двоичное журналирование не возможно, так как по крайней мере одна таблица использует механизм хранения, который не способен к основанному на строке журналированию. -
Безопасный STATEMENT Нет Да Ошибка: не Может выполнить оператор: Двоичное журналирование невозможно с тех пор BINLOG_FORMAT = STATEMENT и по крайней мере одна таблица использует механизм хранения, который не способен к основанному на операторе журналированию. -
Безопасный MIXED Нет Да - ROW
Безопасный ROW Нет Да - ROW
Опасный STATEMENT Нет Да Ошибка: не Может выполнить оператор: Двоичное журналирование невозможно с тех пор BINLOG_FORMAT = STATEMENT и по крайней мере одна таблица использует механизм хранения, который не способен к основанному на операторе журналированию. -
Опасный MIXED Нет Да - ROW
Опасный ROW Нет Да - ROW
Инжекция строки STATEMENT Нет Да Ошибка: не Может выполнить инжекцию строки: Двоичное журналирование не возможно с тех пор BINLOG_FORMAT = STATEMENT. -
Инжекция строки MIXED Нет Да - ROW
Инжекция строки ROW Нет Да - ROW
Безопасный STATEMENT Да Да - STATEMENT
Безопасный MIXED Да Да - ROW
Безопасный ROW Да Да - ROW
Опасный STATEMENT Да Да Предупреждение: оператор Unsafe binlogged в формате оператора с тех пор BINLOG_FORMAT = STATEMENT. STATEMENT
Опасный MIXED Да Да - ROW
Опасный ROW Да Да - ROW
Инжекция строки STATEMENT Да Да Ошибка: не Может выполнить инжекцию строки: Двоичное журналирование не возможно потому что BINLOG_FORMAT =STATEMENT. -
Инжекция строки MIXED Да Да - ROW
Инжекция строки ROW Да Да - ROW

Когда предупреждение производится определением, стандартный MySQL, предупреждающий, производится (и доступное использование SHOW WARNINGS). Информация также пишется mysqld журналу ошибок. Только одна ошибка для каждого ошибочного экземпляра на клиентское соединение регистрируется, чтобы предотвратить лавинную рассылку журнала. Сообщение журнала включает SQL-оператор, который был предпринят.

Если ведомый сервер был запущен с --log-warnings включенный, ведомое устройство печатает сообщения к журналу ошибок, чтобы предоставить информацию о ее состоянии, таком как двоичный журнал и релейные координаты журнала, где это запускает свое задание, когда это переключается на другой релейный журнал, когда это повторно соединяется после разъединения и т.д.