17.4.1.34 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.5 marks such statements as unsafe. (Bug #45677)