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中文手册的部分概览,详细内容可在提供的"www.java1234.com]mysql5.1中文手册.chm"文件中查阅,涵盖了更深入的函数使用、性能调优、复制技术等多个方面。通过学习这本手册,用户可以全面掌握...
- **主从复制**:MySQL 5.1引入了半同步复制,确保主服务器上的事务在被复制到从服务器之前已经提交,提高了数据的一致性。 - **多线程复制**:从服务器可以并行处理多个二进制日志事件,加速了复制过程。 4. **...
MySQL 5.1是MySQL数据库管理系统的一个重要版本,它在5.0的基础上进行了多项改进和增强,为开发者提供了更高效...这个“mysql5.1详解简体中文版”的教程文件,将帮助读者深入理解这些概念,提升数据库管理和开发技能。
3. **复制功能优化**:MySQL 5.1 提供了半同步复制,确保主库上的事务在被复制到从库之前已提交,提高了数据安全性。 4. **触发器和存储过程**:MySQL 5.1 支持创建触发器和存储过程,使得数据库可以执行更复杂的...
MySQL 5.1 中文手册是一份详尽的数据库管理系统指南,主要针对MySQL 5.1版本。MySQL是一个广泛使用的开源关系型数据库管理系统(RDBMS),它以其高效、稳定和易于管理的特点,在Web开发和其他数据存储应用中占有重要...
MySQL 5.1在复制功能上也有所增强,提供了一种半同步复制模式,确保主服务器上的事务在被复制到从服务器之前已经完成,从而降低了数据丢失的风险。此外,还支持多线程复制,使得从服务器可以并行处理多个来自主...
这篇文档将基于提供的"mysql5.1CHM.zip"压缩包,深入探讨MySQL 5.1的主要特性和开发相关的知识。 1. **SQL语言与查询优化**: MySQL 5.1支持标准的SQL语法,包括SELECT、INSERT、UPDATE、DELETE等操作。其查询优化...
4. **复制功能**:MySQL 5.1的复制功能允许数据从一个服务器(主服务器)实时复制到一个或多个其他服务器(从服务器),这对于实现数据备份、负载均衡和故障恢复非常有用。 5. **查询优化器**:MySQL 5.1的查询优化...
在复制功能上,MySQL 5.1增加了半同步复制,确保在主服务器上的事务提交后,至少有一个从服务器接收到这些事务,提高了数据的一致性。此外,支持多线程复制,可以并发处理多个从服务器的复制请求,提高复制效率。 ...
这份“MYSQL5.1+简体中文参考文档”是开发者和数据库管理员的重要参考资料,它包含了关于 MySQL 5.1 的详细信息,包括 SQL 语法、数据库配置、管理操作以及性能调优等内容。 一、SQL 语法 MySQL 5.1 支持标准的 SQL...
此外,MySQL 5.1还加强了复制功能,支持异步、半同步和多线程从库,这对于高可用性和数据冗余至关重要。通过分析源代码,我们可以理解主从复制的工作流程,包括 binlog(二进制日志)的生成、传输以及在从服务器上的...
MySQL 5.1支持主从复制,用于构建高可用和负载均衡的环境。集群功能则允许多个服务器共享同一份数据,提高系统的容错性和扩展性。 八、日志与监控 MySQL的日志系统包括错误日志、查询日志、慢查询日志等,有助于...
MySQL 5.1的复制功能允许数据在多个服务器之间同步,形成主从结构或主主结构,从而提高系统的稳定性和容错性。 安全性和权限管理也是手册中的重要内容。用户可以学习如何设置账户、权限和访问控制,确保数据库系统...
MySQL5.1中文参考手册完全版是一份针对MySQL 5.1版本的官方技术文档,是MySQL开发人员和管理员的重要参考资料。这份文档详尽地涵盖了MySQL数据库系统的各个方面,包括安装、配置、使用、管理和优化等核心主题。对于...
MySQL 5.1中文文档是针对广大中文用户精心编译的一份技术资料,旨在帮助那些英语不精通或者希望用母语进行学习的开发者更轻松地掌握MySQL数据库管理系统。MySQL是一款广泛应用的关系型数据库系统,以其开源、免费、...
3. **复制改进**:MySQL 5.1改进了主从复制的性能和可靠性,支持半同步复制,确保数据的一致性。同时,通过binlog格式的优化,提高了日志传输效率。 4. **触发器和存储过程**:5.1版本增强了SQL层的功能,支持创建...
6. **复制技术**:MySQL 5.1支持主从复制,用于数据备份、负载均衡和高可用性。理解复制原理,包括基于语句的复制和基于行的复制,以及如何配置和监控复制链路。 7. **分区与分表**:大型数据库可能需要分区或分表...
4. **复制改进**:MySQL 5.1在主从复制方面进行了优化,支持半同步复制,确保数据在主服务器和从服务器间的一致性,同时增加了多线程奴隶复制,提高复制性能。 5. **触发器和存储过程**:MySQL 5.1提供了触发器和...
8. **复制与集群**:MySQL 5.1支持主从复制,用于数据冗余和故障恢复,以及集群配置,以实现高可用性和负载均衡。 9. **性能调优**:提供查询分析、查询缓存、索引优化和内存管理等方面的策略,帮助用户提升MySQL的...
在这个例子中,"MySQL5.1官方中文版"应该是包含了安装程序的压缩包。 2. **解压文件**:下载完成后,使用解压缩工具(如WinRAR或7-Zip)打开压缩包,提取所有文件。文件“说明.htm”可能会包含详细的安装指南和注意...