iT邦幫忙

0

Mysql 的trigger僅建在slave上,但沒有被觸發?

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了.

請前輩大大指教.謝謝><

請問:master 如何將資料放到 salve 去?
qa8986 iT邦新手 5 級 ‧ 2018-02-06 09:19:24 檢舉
您是指.master同步replicate到slave嗎?

1 個回答

0
隨風奶爸
iT邦好手 1 級 ‧ 2018-02-03 09:36:16
qa8986 iT邦新手 5 級 ‧ 2018-02-06 09:20:02 檢舉

謝謝回答.只是我還不清楚為何transaction_isolation會與trigger觸發行為相關?

我要發表回答

立即登入回答