mysql 版本: 5.6.36
master-A -> slave-B 單向複製
master-A
table:t_user
slave-B
table:t_user
table:t_user_log
trigger:tg_update_user,內容簡訴如下:
CREATE TRIGGER tg_update_user
AFTER UPDATE ON t_user
FOR EACH ROW BEGIN
set @do_insert = false;
if (NEW.point != OLD.point) then
set @do_insert = true;
end if;
if (@do_insert = true) then
insert into t_user_log (loginname,point,changedate) values (NEW.loginname,NEW.point,now());
end if;
由於效能關係.正式環境中.不被允許在master建立trigger,
於是被建議在slave上新增trigger
而因為trigger觸發所需新記錄log的table:t_user_log,也只在slave上存在,master無建立
my.cnf中的binlog_format = mixed
目前遇到問題是:slave上的trigger無法成功觸發,當然t_user_log也不會有預期中成功寫入的資料?
有可以幫幫忙嗎><
更新:
剛剛自己再進行測試
發現與master my.cnf中一個配置疑似相關:transaction_isolation = READ-COMMITTED
如果在master取消此行.則slave的trigger居然可以成功被觸發?
不太能理解這事?
反覆測試.只要在master加回READ-COMMITTED,則slave又無法觸發trigger了.
請前輩大大指教.謝謝><
參考這篇看看 [http://wubx.net/mysql-transaction-type/]