Replication and Triggers
With statement-based replication, triggers executed on the master also execute on the slave. With
row-based replication, triggers executed on the master do not execute on the slave. Instead, the row
changes on the master resulting from trigger execution are replicated and applied on the slave.
This behavior is by design. If under row-based replication the slave applied the triggers as well as the
row changes caused by them, the changes would in effect be applied twice on the slave, leading to
different data on the master and the slave.
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. However, 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. (Bug #45677)
... zobacz całą notatkę
Komentarze użytkowników (0)