MYSQL репликация и работа триггеров

321
21 декабря 2016, 02:15

Добрый день. Имеется настроенная репликация Master-Slave На Slave необходимо добавить триггеры что бы не нагружать основную базу. Проблема в том что часть триггеров срабатывает а часть нет. Тип репликации binlog-format=mixed. Читал что для того что бы триггеры на slave отрабатывали параметр binlog-format на master должен быть STATEMENT.

p.s. на локальной версии все тригеры работают.

Версия MySQl 5.6.34

Answer 1

Документация не столь категорична.

http://dev.mysql.com/doc/refman/5.6/en/replication-features-triggers.html

to enable slave-side triggers, it is not necessary to use statement-based replication exclusively. It is sufficient to switch to statement-based replication only for those statements where you want this effect, and to use row-based replication the rest of the time.

Плюс ремарка там же, которую не стОит пропускать:

A statement invoking a trigger (or function) that causes an update to an AUTO_INCREMENT column is not replicated correctly using statement-based replication. MySQL 5.6 marks such statements as unsafe.

Советую посмотреть ту же статью, но для 5,7. Там чуть поболе текста.

Answer 2

Для корректной работы триггеров на slave репликация должна быть настроена как statement.

If you want triggers to execute on both the master and the slave—perhaps because you have different triggers on the master and slave—you must use statement-based replication.

Ссылка на документацию.

READ ALSO
Выборка из mysql

Выборка из mysql

Есть 2 таблицы: users и objectsВ users хранятся id, name, type и т

296
Mysql не возвращает результат запроса

Mysql не возвращает результат запроса

Совсем ничего не понимаю, запрос, вроде, правильныйНо не выводит строку с нужным id;

304
Выводиться boolean вместо параметра в циры

Выводиться boolean вместо параметра в циры

Он всё равно выводит boolean (выводит ошибку):

326
Как увеличить строчное число?

Как увеличить строчное число?

Друзья, простите за банальный вопрос, в бд хранится число, к примеру: "0001" тип поля varchar, я хочу это число увеличить на 1, как это сделать?

352