Хорошо, я запускаю настройку с одним главным и несколькими подчиненными. Все записи проходят через ведущее устройство и реплицируются на ведомые устройства, которые используются строго для чтения.
Теперь у меня есть хранимая процедура (не функция), которая вызывается триггером при вставке. Согласно документации MySQL, триггеры репликации регистрируют вызов триггера, в то время как хранимые процедуры фактически регистрируют результат хранимой процедуры.
Итак, мой вопрос: когда мой триггер срабатывает, будет ли он реплицировать как триггер, так и результаты процедуры, которую вызывает триггер (в результате процедура эффективно запускается дважды)? Или он просто реплицирует триггер, чтобы ведомые устройства самостоятельно запускали хранимую процедуру?
Спасибо






В MySQL 5.0 (и MySQL 5.1 с двоичным ведением журнала на основе операторов) регистрируется только вызывающий запрос, поэтому в вашем случае будет регистрироваться INSERT.
На ведомом будет выполнен INSERT, а затем триггер будет повторно запущен на ведомом. Таким образом, триггер должен существовать на ведомом устройстве, и, если он существует, он будет выполняться точно так же, как и ведущий.
В MySQL 5.1 существует двоичное ведение журнала на основе строк, которое будет регистрировать только изменяемые строки, поэтому триггер не будет повторно запущен на ведомом устройстве, но все измененные строки все равно будут распространяться.
В дополнение к отличному ответу Харрисона: