当您有一个基于 MySQL 语句的复制并创建一个修改某些行(INSERT、UPDATE、DELETE 命令...)的存储过程时,当您在主服务器上调用此过程时,从服务器上真正复制了什么?CALL 自己或过程中的命令(INSERT、UPDATE、DELETE...)?
例如,创建这样一个过程:
delimiter |
CREATE PROCEDURE myproc ()
BEGIN
DELETE FROM mytable LIMIT 1;
END |
delimiter ;
然后调用master:
master> CALL myproc();
=> 它是否复制“CALL myproc()”或“DELETE FROM mytable LIMIT 1”?
简而言之,不,您的 CALL 不会被复制
您可以查看从B.4.22开始的常见问题解答和存储程序的二进制日志记录
B.4.23:在主服务器上创建的存储过程和函数是否复制到从服务器?
B.4.24:如何复制存储过程和函数内部发生的操作?