基于语句复制的优点
从 MySQL 3.23 起就已经支持基于语句复制了
不用把大量的数据写进日志文件。当删除或者更新大量的数据时,日志的储存空间增长速度不会很快
日志记录了那些数据更改的SQL语句,保证数据库的一致。
基于语句复制的缺点
- 基于语句的复制中,以下语句是不安全的。使用基于语句的复制中,并非所有的修改数据(例如 INSERT DELETE, UPDATE和 REPLACE语句)语句都可以成功被复制。在使用基于语句的复制中,任何不确定的行为是难以复制的。诸如这类数据修改语言(Data Modification Language),还有以下这些
-
依赖于一个UDF(用户定义的函数)或存储的程序的语句是不确定的。因为返回的值是通过一个UDF或存储程序或依赖于其他以外的因素而不是提供给它的参数。(但是,基于行的复制,简单地复制UDF或存储程序的返回值,在主服务器和从从服务器上表中那些受影响的行和数据是相同的)。
-
DELETE
和UPDATE
语句中使用一个LIMIT
子句但没有ORDER BY
语句是不确定的。 -
使用基于语句的复制,语句使用以下函数不能正常地复制:
- 在基于行的复制中,对于 INSERT ... SELECT 的 SQL 语句,需要行级别的锁定。
- 在需要进行表扫描(因为 WHERE 子句中没有用到索引)的UPDATE 语句中,在基于行的复制中必须锁定行
- 对于使用InnoDB引擎的:一个使用 AUTO_INCREMENT 的 INSERT 语句,会阻塞其他不冲突的 INSERT 语句。
- 对于复杂的语句,语句必须先被从服务器识别和执行,再进行更新或插入操作。基于行的复制,从服务器只会修改受影响的行,不执行所有语句。
- 在从服务器上在识别出现错误的话,特别是在执行复杂的语句时,基于语句的复制会随着时间的推移,那些受影响的行可能会慢慢增加误差。
- 存储函数调用语句时会执行相同的 NOW()值。
- 用户自定义的函数功能必须是唯一确定的,才能适用于从服务器
- 在主服务器和从服务器之间,表的定义必须保持一致
基于行复制的优点
- 所有的改变都能被复制,这在复制中是最安全的一种方式。
mysql 数据库不会被复制, mysql 数据库不会被看作一个节点特定的数据库。但是,基于语句的复制会复制这些信息,包括 GRANT、REVOKE 还有触发器,存储过程和视图,都会被从服务器复制。
对于这些语句 CREATE TABLE ... SELECT,用 CREATE 语句创建表,都是用基于语句的复制的格式。而数据的插入则是使用 行复制。
对于下面的语句,在主服务器上只要很少的行锁定,能支持高并发。
INSERT ... SELECT
带有 AUTO_INCREMENT 的 INSERT 语句
UPDATE or DELETE statements with WHERE clauses that do not use keys or do not change most of the examined rows.
Row-Based 日志和复制的用法
- RBL,非事务表和停止从服务器。 如果用 row-based 记录时,当从服务器在更新一个非事务表时,从服务器忽然被停止了,从服务器的数据库的可能会处于非一致的状态。所以当用 row-based 记录时,推荐用支持事务的引擎,如 InnoDB。
- 数据库级别的复制选项。这些 --replicate-do-db, --replicate-ignore-db, 和 --replicate-rewrite-db 选项在基于 row-based 和 statement-based 来记录时,区别是很大的。基于这一点,尽量避免使用数据库级别的选项而改用表级别的选项,诸如 --replicate-do-table 和 --replicate-ignore-table
- 不支持过滤 server ID 系统变量。经常会遇到这样一个场景:在 UPDATE 或者 DELETE 语句中通过 WHERE 中用 @@server_id <> id_value 语句来过滤掉从服务器的改变。如 WHERE @@server_id <> 1 。这个在用 row-based 来记录时,不能正常的工作。如果你一定要用 server_id 系统变量来声明过滤,要有 --binlog_format=STATEMENT.你也可以在 CHANGE MASTER TO 语句中 用IGNORE_SERVER_IDS 选项来过掉server_id 系统变量的影响。
- 二进制日志缺乏校验
- 当系统变量 slave_exec_mode 的值是 IDEMPOTENT 时,未能将更改应用于row-based 记录。因为无法找到原来的行不触发一个错误或会导致复制失败。这意味着更新不能成功的应用于从服务器上。所以主服务器和从服务器不会再同步。
相关推荐
这份"MySQL5.5.zip"压缩包包含了一个名为"mysql 5.5 chm 中文手册"的文件,这是一个CHM(Compiled HTML Help)格式的文档,专门针对MySQL 5.5版本,对于学习和理解MySQL 5.5的各种特性和操作非常有帮助。 MySQL 5.5...
标题中的"MySQL安装文件MySQL5.5.zip"指的是包含MySQL 5.5版本安装程序的压缩包。这个压缩文件通常包含了安装MySQL所需的所有组件,包括服务器、客户端工具、连接器以及相关的文档。"mysql-5.5.21.msi"是MySQL ...
6. **并行复制**:在MySQL5.5中,可以配置多个线程来并行复制二进制日志事件,提高数据复制速度。 7. **更大的元数据限制**:允许更大的表名、字段名和索引长度,以适应更复杂的应用需求。 8. **更好的内存管理**:...
MySQL 5.5是MySQL数据库管理系统的一个重要版本,它在2010年发布,带来了许多性能提升和新特性。`.tar.gz`是Linux和Unix系统中常用的文件压缩格式,用于将多个文件打包成一个单一的压缩文件,方便存储和传输。在本...
8. **JSON支持**:虽然不全面,但MySQL 5.5开始对JSON格式的数据提供基本支持,为后续版本的JSON功能打下基础。 作为“程序员物资”,这个安装包不仅提供了MySQL数据库服务,还附带了安装教程,帮助用户顺利地完成...
5. **复制功能**:MySQL 5.5改进了复制特性,包括半同步复制,确保主库上的事务在被复制到从库之前已经提交,增强了数据一致性。 6. **Performance Schema**:MySQL 5.5引入了Performance Schema,这是一个内置的...
本文将详细介绍如何安装MySQL 5.5,这是MySQL的一个稳定版本,提供了强大的数据存储和管理功能。 首先,我们来理解一下MySQL 5.5的主要特点: 1. **更高的性能**:MySQL 5.5通过InnoDB存储引擎的优化,提升了查询...
MySQL 5.5引入了更强大的SQL查询优化器,提升了InnoDB存储引擎的性能,并增强了复制功能,使得数据同步更加可靠。 总之,MySQL 5.5是一个强大且广泛使用的数据库管理系统,其安装过程相对简单,但配置和管理需要...
MySQL 5.5是MySQL数据库管理系统的一个重要版本,它在2010年发布,带来了许多性能提升和功能增强。这个一键安装包旨在简化安装过程,让用户能够快速、简便地在计算机上设置MySQL服务器。 首先,MySQL 5.5引入了...
MySQL5.5是MySQL数据库系统的一个重要版本,它在2010年发布,提供了许多增强功能和性能改进。MySQL是一种流行的开源关系型数据库管理系统(RDBMS),广泛应用于Web应用、数据存储和数据分析等领域。以下是对MySQL5.5...
4. **并行复制**:虽然MySQL5.5的复制功能没有达到后来版本的多线程复制,但它已经引入了一定程度的并行性,允许在一个主服务器上执行多个写操作,从而提高了整体的复制效率。 5. **性能提升**:MySQL5.5通过优化...
这个“mysql5.5免安装.rar”文件是一个绿色免安装版的MySQL 5.5.22,适用于那些希望快速部署数据库而不想经历传统安装过程的用户。下面我们将详细探讨MySQL 5.5的一些关键知识点。 首先,MySQL 5.5在性能上的提升...
再者,MySQL 5.5提供了更好的数据复制功能。主从复制是MySQL中常见的高可用性和负载均衡解决方案。这个版本引入了半同步复制,确保至少有一个从服务器接收到并写入数据后,主服务器才确认事务的完成,从而提高了数据...
MySQL 5.5 是 MySQL 数据库的一个重要版本,它在功能和性能上都有显著的提升。配合图形界面工具,MySQL 5.5 可以提供更直观、便捷的数据库管理和开发体验。以下是一些关于 MySQL 5.5 和图形界面工具的关键知识点: ...
MySQL5.5是MySQL数据库管理系统的一个重要版本,它在MySQL的演化历程中占据了显著的地位,提供了许多增强特性和性能优化。MySQL是一个开源的关系型数据库管理系统(RDBMS),基于SQL语言,广泛应用于互联网上的中...
3. **数据导入导出**:可以方便地将数据从CSV、Excel等格式导入到MySQL,或将MySQL数据导出为各种格式。 4. **备份与恢复**:提供一键备份和恢复功能,保障数据安全。 5. **查询工具**:支持编写和执行SQL查询,查看...
以下是关于“mysql5.5安装程序”的详细知识点: 1. **MySQL 5.5的主要改进**: - **性能优化**:MySQL 5.5引入了InnoDB存储引擎的并行插入,提高了写入性能。此外,查询优化器也进行了升级,对于复杂查询的处理...
本文将详细解析“win-mysql5.5安装包”的关键知识点,帮助用户顺利进行安装和配置。 首先,MySQL 5.5是MySQL的第五个主版本,发布于2010年,它在性能、安全性和易用性上都有显著提升。此版本引入了许多新特性,例如...
在提供的压缩包中,"mysql5.5安装程序"可能包含了安装MySQL 5.5所需的所有文件,包括服务器和客户端组件,以及可能的配置工具。"数据库安装教程"则可能提供了详细的步骤指导,帮助用户正确安装和配置MySQL 5.5服务器...
这个“Mysql5.5数据库安装包”包含了MySQL 5.5.12的Windows 32位版本,适合在32位操作系统上安装和运行。以下是关于MySQL 5.5的一些核心知识点: 1. **存储引擎**:MySQL 5.5默认使用InnoDB存储引擎,提供事务处理...