请教大家一个问题
比如我在主服务器上对A表建立一个触发器,那么从服务器上也会同步这个触发器
现在我在主服务器上对A进行操作,导致B表相关记录值+1。
对于从服务器来说会不会出现这种可能,因为有触发器,所以当A表操作的时候从服务器触发器会对B表
产生效果,使其+1,当主服务器的B表发生变化的时候,从服务器B表数据又一次+1呢?

解决方案 »

  1.   

    不会。
    因为主从同步是根据你的二进制日志来的。其实是把在主上招待的SQL语句到从上再执行一遍。
      

  2.   

    我做了测试:
    create table data(name varchar(255));
    create table chars(count int(10));
    insert into chars(count) values(0);create trigger mike_tri after
    insert on data
    for each row
    update chars set count=count+char_length(new.name);insert into data(name) values('mike');前面都能同步过来,但是最后在主服务器上插入语句的时候,从服务器没有同步过来,这是错误信息
    090715 10:16:12 [ERROR] Slave SQL: Error 'The user specified as a definer ('root'@'%') does not exist' on query. Default database: 'mikezhao'. Query: 'insert into data(name) values('mike')', Error_code: 1449
    090715 10:16:12 [Warning] Slave: The user specified as a definer ('root'@'%') does not exist Error_code: 1449
    090715 10:16:12 [ERROR] Error running query, slave SQL thread aborted. Fix the problem, and restart the slave SQL thread with "SLAVE START". We stopped at log 'log-bin.000005' position 12262290
      

  3.   

    Slave SQL: Error 'The user specified as a definer ('root'@'%') does not exist' 先把这个错误消除了再继续看其它错误。create user root@%
    并给予相应的权限。
    一般来这,这种方式很不安全。一般应该是root@localhost ,但你在主机创建了这个root@%用户