MySQL中存储程式、函数连同复制

2008-02-23 07:40:10来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

  MySQL 5.1存储程式和函数对复制起作用吗?

  是的,在存储程式和函数中被执行标准行为被从主MySQL服务器复制到从服务器。

  在主服务器上创建的存储程式和函数能够被复制到从服务器上么?

  是的,通过一般DDL语句执行的存储程式和函数,其在主服务器上的创建被复制到从服务器,所以目标将存在两个服务器上。对存储程式和函数的ALTER 和DROP语句也被复制。

  行为如何在已复制的存储程式和函数里发生?

  MySQL纪录每个发生在存储程式和函数里的DML事件,并复制这些单独的行为到从服务器。执行存储程式和函数的切实调用不被复制。

  对一起使用存储程式,函数和复制有什么特别的安全需要么?

  是的,因为一个从服务器有权限来执行任何读自主服务器的二进制日志的语句,指定的安全约束因和复制一起使用的存储程式和函数而存在。假如复制或二进制日志大体上是激活的(为point-in-time恢复的目的),那么MySQL DBA 有两个安全选项可选:

  任何想创建存储程式的用户必须被赋予SUPER权限。

  作为选择,一个DBA能够配置log_bin_trust_routine_creators系统变量为1,他将会允许有标准CREATE ROUTINE权限的人来创建一个存储程式和函数。

  对复制存储程式和函数的行为有什么限制?

  嵌入到存储程式中的不确定(随机)或时基行不能适当地复制。随机产生的结果,仅因其本性,是您可预测的和不能被确实克隆的。因此,复制到从服务器的随机行为将不会映像那些产生在主服务器上的。注意, 声明存储程式或函数为DETERMINISTIC或在log_bin_trust_routine_creators中配置系统变量为0 将会允许随即值操作被调用。

  此外,时基行为不能在从服务器上重新产生,因为在存储程式中通过对复制使用的二进制日志来计时这样的时基行为是不可重新产生的,因为该二进制日志仅纪录DML事件且不包括计时约束。

  最后,在大型DML行为(如大批插入)中非交互表发生错误,该非交互表可能经历复制,在复制版的非交互表中主服务器能够被部分地从DML行为更新。但是因为发生的那个错误,对从服务器没有更新。 对函数的DML行为,工作区将被用IGNORE关键词来执行,以便于在主服务器上导致错误的更新被忽略,并且不会导致错误的更新被复制到从服务器。


标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: "每个Y的最新X"SQL问题

下一篇: 正确掌控为MySQL添加新函数