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