`
fred2005
  • 浏览: 26081 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

MySQL 5.1 复制

阅读更多
MySQL 5.1 中,在复制方面的改进就是引进了新的复制技术:基于行的复制。简言之,这种新技术就是关注表中发生变化的记录,而非以前
的照抄 binlog 模式。从 MySQL 5.1.12 开始,可以用以下三种模式来实现:基于SQL语句的复制(statement-based replication, SBR),基于行的复制(row-based replication, RBR),混合模式复制(mixed-based replication, MBR)。相应地,binlog的格式也有三种:STATEMENT,ROW,MIXED。MBR 模式中,SBR 模式是默认的。

在运行时可以动态低改变binlog的格式,除了以下几种情况:
  • 存储过程或者触发器中间
  • 启用了NDB
  • 当前会话试用 RBR 模式,并且已打开了临时表
如果binlog采用了 MIXED 模式,那么在以下几种情况下会自动将binlog的模式由 SBR 模式改成 RBR 模式。
  • 当DML语句更新一个NDB表时
  • 当函数中包含 UUID() 时
  • 2个及以上包含 AUTO_INCREMENT 字段的表被更新时
  • 行任何 INSERT DELAYED 语句时
  • 用 UDF 时
  • 视图中必须要求使用 RBR 时,例如创建视图是使用了 UUID() 函数

设定主从复制模式的方法非常简单,只要在以前设定复制配置的基础上,再加一个参数:

binlog_format="STATEMENT"
#binlog_format="ROW"
#binlog_format="MIXED"

当然了,也可以在运行时动态修改binlog的格式。例如

mysql> SET SESSION binlog_format = 'STATEMENT';
mysql> SET SESSION binlog_format = 'ROW';
mysql> SET SESSION binlog_format = 'MIXED';

mysql> SET GLOBAL binlog_format = 'STATEMENT';
mysql> SET GLOBAL binlog_format = 'ROW';
mysql> SET GLOBAL binlog_format = 'MIXED';

现在来比较以下 SBR 和 RBR 2中模式各自的优缺点:
SBR 的优点:
  • 历史悠久,技术成熟
  • binlog文件较小
  • binlog中包含了所有数据库更改信息,可以据此来审核数据库的安全等情况
  • binlog可以用于实时的还原,而不仅仅用于复制
  • 主从版本可以不一样,从服务器版本可以比主服务器版本高

SBR 的缺点:
  • 不是所有的UPDATE语句都能被复制,尤其是包含不确定操作的时候。
  • 调用具有不确定因素的 UDF 时复制也可能出问题
  • 使用以下函数的语句也无法被复制:
    * LOAD_FILE()
    * UUID()
    * USER()
    * FOUND_ROWS()
    * SYSDATE() (除非启动时启用了 --sysdate-is-now 选项)
  • INSERT ... SELECT 会产生比 RBR 更多的行级锁
  • 复制需要进行全表扫描(WHERE 语句中没有使用到索引)的 UPDATE 时,需要比 RBR 请求更多的行级锁
  • 对于有 AUTO_INCREMENT 字段的 InnoDB表而言,INSERT 语句会阻塞其他 INSERT 语句
  • 对于一些复杂的语句,在从服务器上的耗资源情况会更严重,而 RBR 模式下,只会对那个发生变化的记录产生影响
  • 存储函数(不是存储过程)在被调用的同时也会执行一次 NOW() 函数,这个可以说是坏事也可能是好事
  • 确定了的 UDF 也需要在从服务器上执行
  • 数据表必须几乎和主服务器保持一致才行,否则可能会导致复制出错
  • 执行复杂语句如果出错的话,会消耗更多资源

RBR 的优点:
  • 任何情况都可以被复制,这对复制来说是最安全可靠的
  • 和其他大多数数据库系统的复制技术一样
  • 多数情况下,从服务器上的表如果有主键的话,复制就会快了很多
  • 复制以下几种语句时的行锁更少:
    * INSERT ... SELECT
    * 包含 AUTO_INCREMENT 字段的 INSERT
    * 没有附带条件或者并没有修改很多记录的 UPDATE 或 DELETE 语句
  • 执行 INSERT,UPDATE,DELETE 语句时锁更少
  • 从服务器上采用多线程来执行复制成为可能

RBR 的缺点:
  • binlog 大了很多
  • 复杂的回滚时 binlog 中会包含大量的数据
  • 主服务器上执行 UPDATE 语句时,所有发生变化的记录都会写到 binlog 中,而 SBR 只会写一次,这会导致频繁发生 binlog 的并发写问题
  • UDF 产生的大 BLOB 值会导致复制变慢
  • 无法从 binlog 中看到都复制了写什么语句
  • 当在非事务表上执行一段堆积的SQL语句时,最好采用 SBR 模式,否则很容易导致主从服务器的数据不一致情况发生

另外,针对系统库 mysql 里面的表发生变化时的处理规则如下:
  • 如果是采用 INSERT,UPDATE,DELETE 直接操作表的情况,则日志格式根据 binlog_format 的设定而记录
  • 如果是采用 GRANT,REVOKE,SET PASSWORD 等管理语句来做的话,那么无论如何都采用 SBR 模式记录
注:采用 RBR 模式后,能解决很多原先出现的主键重复问题。
分享到:
评论

相关推荐

    MySql 5.1 参考手册.chm

    1.6.1. MySQL 5.1的新特性 1.7. MySQL信息源 1.7.1. MySQL邮件列表 1.7.2. IRC(在线聊天系统)上的MySQL社区支持 1.7.3. MySQL论坛上的MySQL社区支持 1.8. MySQL标准的兼容性 1.8.1. MySQL遵从的标准是什么 1.8.2. ...

    MySQL 5.1参考手册

    1.6.1. MySQL 5.1的新特性 1.7. MySQL信息源 1.7.1. MySQL邮件列表 1.7.2. IRC(在线聊天系统)上的MySQL社区支持 1.7.3. MySQL论坛上的MySQL社区支持 1.8. MySQL标准的兼容性 1.8.1. MySQL遵从的标准是什么 ...

    MySQL 5.1参考手册 (中文版)

    1.6.1. MySQL 5.1的新特性 1.7. MySQL信息源 1.7.1. MySQL邮件列表 1.7.2. IRC(在线聊天系统)上的MySQL社区支持 1.7.3. MySQL论坛上的MySQL社区支持 1.8. MySQL标准的兼容性 1.8.1. MySQL遵从的标准是什么 1.8.2. ...

    Mysql 5.1参考手册

    Mysql 5.1参考手册中包含了Mysql 5.1中的一般信息,以及Mysql 5.1的安装、教程。数据库管理、Mysql 5.1中的复制、优化以及SQL语法!

    MySQL 5.1参考手册中文版

    1.6.1. MySQL 5.1的新特性 1.7. MySQL信息源 1.7.1. MySQL邮件列表 1.7.2. IRC(在线聊天系统)上的MySQL社区支持 1.7.3. MySQL论坛上的MySQL社区支持 1.8. MySQL标准的兼容性 1.8.1. MySQL遵从的标准是什么 ...

    MySQL 5.1官方简体中文参考手册

    1.6.1. MySQL 5.1的新特性 1.7. MySQL信息源 http://doc.mysql.cn/mysql5/refman-5.1-zh.html-chapter/(第 1/24 页)2006-11-02 19:12:13 MySQL 5.1 Reference Manual 1.7.1. MySQL邮件列表 1.7.2. IRC(在线聊天...

    MySQL 5.1中文手冊

    1.6.1. MySQL 5.1的新特性 1.7. MySQL信息源 1.7.1. MySQL邮件列表 1.7.2. IRC(在线聊天系统)上的MySQL社区支持 1.7.3. MySQL论坛上的MySQL社区支持 1.8. MySQL标准的兼容性 1.8.1. MySQL遵从的标准是什么 1.8.2. ...

    mysql5.1中文手册

    MySQL 5.1的新特性 1.7. MySQL信息源 1.7.1. MySQL邮件列表 1.7.2. IRC(在线聊天系统)上的MySQL社区支持 1.7.3. MySQL论坛上的MySQL社区支持 1.8. MySQL标准的兼容性 1.8.1. MySQL遵从的标准是...

    MySQL5.1中文参考手册 CHM

    MySQL5.1中文参考手册 目录 前言 1. 一般信息 …… 2. 安装MySQL …… 3. 教程 3.1. 连接与断开服务器 3.2. 输入查询 3.3. 创建并使用数据库 3.3.1. 创建并选择数据库 3.3.2. 创建表 3.3.3. 将数据装入表中 3.3.4. ...

    MySQL5.1参考手册官方简体中文版

    MySQL 5.1参考手册 这是MySQL参考手册的翻译版本,关于MySQL参考手册,请访问dev.mysql.com。 原始参考手册为英文版,与英文版参考手册相比,本翻译版可能不是最新的。 This translation was done by MySQL ...

    MySQL-5.1-Manual_zh.rar_12.21_mysql api_mysql manual chm_mysql5.

    MySQL5.1 中文手册 这是MySQL参考手册的翻译版本,关于MySQL参考手册,请访问dev.mysql.com。 原始参考手册为英文版。 -------------------------------------------------------------------------------- ...

    MySql.Data数据库链接器5.1.7.0版

    MySql.Data数据库链接器5.1.7.0版 修改了之前版本在调用后关闭软件时提示错误的问题。 很好用的MySQL数据库链接器,大家放心的下吧。 只是一个dll类库哦,如果需要Mysql数据库操作类源代码的话,可以到我的资源...

    将shp文件导入到mysql的命令.rar

    1.安装mysql5.1略 2.安装geoserver2.3.1 略 3.准备shp文件shp2mysql_0_4.zip文件,里面有三个文件,将cygwin1.dll复制到window/system32或syswow64目录下。双击运行DOShere文件。在命令行中输入shp2mysql会出现shp...

    MySQL内幕揭秘:探索MySQL调优指南,解锁MySQL的强大功能

    2008年:MySQL 5.1发布,引入了一些新的特性,如事件调度器和复制增量流等。 2010年:Oracle收购Sun Microsystems,也就接管了MySQL。 2012年:MySQL 5.6发布,带来了全文搜索、NoSQL接口和多线程复制等新特性。 ...

    win2003 安装2个mysql实例做主从同步服务配置

    将其中的内容复制到D盘的mysql5.1目录下。 2:安装mysql5.1.50 进入cmd. cd d:\mysql5.1\bin mysqld install mysql5.1 //安装mysql服务,名称为mysql5.1 3:配置my.ini。其中以下为必须的 default-characte

    lampbrother mysql高级教程笔记 超详细

    记录了以下五大部分 一、grant用户授权 二、开启mysql bin-log日志 三、mysql主从复制 四、mysql分区技术,仅中mysql5.1之后的版本中支持。 五、mysql性能优化

    基于ThinkPHP5.1+Mysql+Layui PHP台账管理系统.zip

    实现业务员提成和客户对账,基于ThinkPHP5.1+Mysql+Layui。模块:商品,用户,客户,台账明细,台账审核,日志,角色权限,区域分类 MySQL 是一款广受欢迎的开源关系型数据库管理系统(RDBMS),由瑞典MySQL AB公司...

    Mysql数据库引擎大揭秘

    MySQL是一个流行的开源关系型数据库管理系统,由于其灵活性和易用性,成为...Sun继续投入资源来推动MySQL的发展,并在2008年发布了MySQL 5.1版本,引入了复制、触发器和分区等功能。 2010年,Oracle收购了Sun Micros

Global site tag (gtag.js) - Google Analytics