• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > Mysql存储程序、函数、触发程序及复制:常见问题

Mysql存储程序、函数、触发程序及复制:常见问题

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了Mysql等相关知识,希望本文的分享对您有所帮助
MySQL 5.1存储程序和函数对复制起作用吗?
是的,在存储程序和函数中被执行标准行为被从主MySQL服务器复制到从服务器。有少数限制,它们在20.4节,“存储子程序和 触发程序二进制日志功能”中详述。
在主服务器上创建的存储程序和函数可以被复制到从服务器上么?
是的,通过一般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关键词来执行,以便于在主服务器上导致错误的更新被忽略,并且不会导致错误的更新被复制到从服务器。

上述的限制会影响MySQL作 point-in-time恢复的能力吗?
影响复制的同一限制会影响point-in-time恢复。
MySQL要做什么来改正前述的限制呢?
将来发行的MySQL预期有一个功能去选择复制该如何被处理:
基于语句的复制(当前实现)。
行级别复制(它将解决所有早先描述的限制)。
触发程序对复制起作用么?
MySQL 5.1中的触发程序和复制象在大多数其它数据库引擎中一样工作,在那些引擎中,通过触发程序在主服务器上执行的行为不被复制到从服务器。取而代之的是,位于主MySQL服务器的表中的 触发程序需要在那些存在于任何MySQL从服务器上的表内被创建,以便于触发程序可以也可以在从服务器上被激活。

一个行为如何通过从主服务器上复制到从服务器上的触发程序来执行呢?
首先,主服务器上的触发程序必须在从服务器上重建。一旦重建了,复制流程就象其它参与到复制中的标准DML语句一样工作。例如:考虑一个已经插入触发程序AFTER的EMP表,它位于主MySQL服务器上。同样的EMP表和AFTER插入 触发程序也存在于从服务器上。复制流程可能是:
1. 对EMP做一个INSERT语句。
2. EMP上的AFTER触发程序激活。
3. INSERT语句被写进二进制日志。
4. 从服务器上的复制拾起INSERT语句给EMP表,并在从服务器上执行它。
5. 位于从服务器EMP上的AFTER触发程序激活。
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-05-11配置mysql允许远程连接的方法
  • 2018-12-05Memcached的工作原理是什么?
  • 2017-05-11MySQL分表实现上百万上千万记录分布存储的批量查询设计模式详解
  • 2018-12-05Mysql建立索引 提高系统的运行速度
  • 2018-12-05主键和唯一索引的有什么区别
  • 2017-05-11对MySQL几种联合查询的通俗解释
  • 2018-12-05Mysql中四种插入方法的效率对比
  • 2018-12-05完美转换MySQL的字符集 解决查看utf8源文件中的乱码问题
  • 2017-05-11优化mysql数据库的经验总结
  • 2018-12-05关于mysql create routine权限的代码实例详解

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • Mysql Error Code : 1436 Thread stack overrun
    • MySQL中的SUM函数使用教程
    • Access使用查询
    • 虚拟主机中phpMyAdmin的安装配置方法
    • mysql聚集索引的有哪些缺点
    • 了解MySQL如何优化
    • 批量清除128组节点db上面过期的binlog释放磁盘空间实现思路
    • MySQL终端管理数据库操作指南
    • mysql与sql的区别有哪些
    • mysql自增长AUTO_INCREMENT实例用法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有