2012-03-21 49 views
1

確定這裏是我的方案MySQL複製 - 觸發不會複製到從

服務器運行的主數據庫與其他數據庫的每個站點也服務器。 將更新寫入主數據庫,並且觸發器將此記錄插入到旨在複製到站點數據庫級別的特定站點的相關數據庫中。

觸發器工作正常,但插入的記錄不會使它到從數據庫。我使用基於語句的複製作爲基於行的選項。我也嘗試調用一個存儲過程,並將其作爲一個事件來做,但沒有任何結果。

有沒有解決這個任何方式 - 順便說一下,我使用的MySQL 5.1

感謝

語法觸發以下

dbmaster =服務器主DB dbsite =服務器站點DB(這是複製主)

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 ; 
+0

原來的帖子更新了 – JazziJeff 2012-03-21 16:57:43

回答

0

MySQL documentation

B.5.12:觸發器是否適用於複製?

是的。但是,它們的工作方式取決於您是否正在使用MySQL的所有 版本中提供的MySQL「經典」基於語句的複製,或者在MySQL 5.1中引入了基於行的複製格式。

當使用基於語句的複製時,從站上的觸發器由在主站上執行的語句(並且複製到從站的 )執行的 執行。

當使用基於行的複製時,由於在主站上運行的語句以及 複製到從站的語句,因此在 從站上不會執行觸發器。相反,當使用基於行的複製時,在主設備上應用 時,主設備上執行觸發器引起的更改將被應用。

所以,你需要同時觸發扳機複製到奴隸的語句,你將需要在將應用於響應語句相同的更新從創建重複的觸發器。

+0

但如果dbmaster不存在網站級別,這項工作?他們只使用dbsite – JazziJeff 2012-03-21 17:09:52

+0

觸發器不必完全匹配。根據需要修改它以基於複製的語句完成所需的更新。 – 2012-03-21 17:18:53

+0

即時通訊對不起,我不太明白 - 如果我們以上述觸發器爲例,在站點級別,我有我的數據庫dbsite和我的交換表 - 我的觸發器語法在這裏,和上面一樣是什麼?再次感謝您對此的幫助 – JazziJeff 2012-03-21 18:31:31