MySQL Replication - триггер не будет реплицироваться на подчиненный - PullRequest
1 голос
/ 21 марта 2012

Хорошо, вот мой сценарий

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

Триггер работает нормально, но вставленная запись не делаетэто к ведомой БД.Я использую оператор на основе репликации, так как на основе строк не вариант.Я также попытался вызвать хранимую процедуру и сделать это как событие, но ничего не происходит.

Есть ли способ обойти это - кстати, я использую MySQL 5.1

Спасибо

Синтаксис для триггера ниже

dbmaster = главный сервер db dbsite = БД сайта сервера (это главный сервер репликации)

delimiter # 
create trigger rstreplicate after insert on dbmaster.exchange 
for each row begin insert into dbsite.exchange 
select distinct new.TYPE, new.FILENAME, new.STATUS, new.USER_ID, new.INP_DATE, new.CHG_DATE from dbmaster.exchange where new.IP='127.0.0.1'; 
end# 
delimiter ;

1 Ответ

0 голосов
/ 21 марта 2012

Из Документация MySQL :

B.5.12: триггеры работают с репликацией?

Да.Однако способ их работы зависит от того, используете ли вы MySQL «классическую» репликацию на основе операторов, доступную во всех версиях MySQL, или формат репликации на основе строк, представленный в MySQL 5.1.

При использовании операторовна основе репликации триггеры на ведомом устройстве выполняются операторами, которые выполняются на главном сервере (и реплицируются на ведомое устройство).

При использовании репликации на основе строк триггеры не выполняются на ведомом устройстве из-за операторов, которые былизапустить на мастере, а затем реплицировать на раб.Вместо этого при использовании репликации на основе строк изменения, вызванные выполнением триггера на главном устройстве, применяются к ведомому устройству.

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

...