MySQL 如何复制存储过程和函数内部的操作
实际上,存储过程和函数中执行的标准操作从主 MySQL 服务器复制到从 MySQL 服务器。甚至在主 MySQL 服务器上通过普通 DDL 语句创建的存储过程和函数也会被复制到从 MySQL 服务器上。这样,在两个服务器上都将存在这些对象。
存储过程和函数内部执行的操作会被复制,因为 MySQL 记录了存储过程和函数内部发生的每个 DDL 事件。记录完事件后,它会被复制到从 MySQL 服务器。但实际上用于执行存储过程的调用不会被复制。以下是一个示例,其中过程调用不会被复制,因为它实际上是在主 MySQL 服务器上执行的。
阅读更多:MySQL 教程
示例
mysql> Delimiter //
mysql> CREATE PROCEDURE myproc()
-> BEGIN
-> DELETE FROM mytable LIMIT 1;
-> END //
现在,当我们在主 MySQL 服务器上调用此存储过程时,它不会被复制。
mysql> Delimiter ;
mysql> CALL myproc();