`
grzrt
  • 浏览: 187759 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MYSQL5.1复制参数binlogformat(转)

 
阅读更多

http://apps.hi.baidu.com/share/detail/31674919


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的款式,除非以下几种情形:

1. 存储过程可能引发器其中

2. 启用了NDB

3. 目前会话试用 RBR 形式,并且已敞开了临时表

万一binlog批准了 MIXED 形式,那么在以下几种情形下会积极将binlog的形式由 SBR 形式改成 RBR 形式。

1. 当DML语句更新一个NDB表时

2. 当函数中包括 UUID() 时

3. 2个及以上包括 AUTO_INCREMENT 字段的表被更新时

4. 行任何 INSERT DELAYED 语句时

5. 用 UDF 时

6. 视图中定然要求利用 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 的优点:

1. 历史悠久,技巧成熟

2. binlog文件较小

3. binlog中包括了所有数据库改动消息,能够据此来核实数据库的平安等情形

4. binlog能够用于实时的还原,而不但仅用于复制

5. 主从版本能够不一样,从服务器版本能够比主服务器版本高

SBR 的缺点:

1. 不是所有的UPDATE语句都能被复制,尤其是包括不确定垄断的时候。

2. 调用具有不确定因素的 UDF 时复制也可能出问题

3. 利用以下函数的语句也无法被复制:
* LOAD_FILE()
* UUID()
* USER()
* FOUND_ROWS()
* SYSDATE() (除非启用时启用了 --sysdate-is-now 选项)

4. INSERT ... SELECT 会发生比 RBR 更多的行级锁

5. 复制必需举行全表扫描(WHERE 语句中没利于用到索引)的 UPDATE 时,必需比 RBR 哀求更多的行级锁

6. 对于有 AUTO_INCREMENT 字段的 InnoDB表而言,INSERT 语句会阻塞其他 INSERT 语句

7. 对于一些混杂的语句,在从服务器上的耗资源情形会更严重,而 RBR 形式下,只会对那个发生改变的登记发生波及

8. 存储函数(不是存储过程)在被调用的同时也会厉行顺次 NOW() 函数,这个能够说是坏事也可能是好事

9. 确定了的 UDF 也必需在从服务器上厉行

10. 数据表定然几乎和主服务器坚持统一才行,否则可能会导致复制出错

11. 厉行混杂语句万一出错的话,会花费更多资源

RBR 的优点:

1. 任何情形都能够被复制,这对复制来说是最平安可靠的

2. 和其他大多数数据库系统的复制技巧一样

3. 多数情形下,从服务器上的表万一有主键的话,复制就会快了许多

4. 复制以下几种语句时的行锁更少:
* INSERT ... SELECT
* 包括 AUTO_INCREMENT 字段的 INSERT
* 未曾附带条件可能并未曾修正许多登记的 UPDATE 或 DELETE 语句

5. 厉行 INSERT,UPDATE,DELETE 语句时锁更少

6. 从服务器上批准多线程来厉行复制成为可能

RBR 的缺点:

1. binlog 大了许多

2. 混杂的回滚时 binlog 中会包括许多的数据

3. 主服务器上厉行 UPDATE 语句时,所有发生改变的登记都会写到 binlog 中,而 SBR 只会写顺次,这会导致频繁发生


binlog 的并发写问题

4. UDF 发生的大 BLOB 值会导致复制变慢

5. 无法从 binlog 中看到都复制了写什么语句

6. 当在非事务表上厉行一段堆积的SQL语句时,良好批准 SBR 形式,否则很轻率导致主从服务器的数据不统一情形发生

另外,针对系统库 mysql 里面的表发生改变时的处理法定如下:

1. 万一是批准 INSERT,UPDATE,DELETE 直接垄断表的情形,则日志款式依据 binlog_format 的设定而登记

2. 万一是批准 GRANT,REVOKE,SET PASSWORD 等管教语句来做的话,那么无论如何都批准 SBR 形式登记

注:批准 RBR 形式后,能处理许多本来揭示的主键重复问题例如Pro Publica,SunlightFoundation和维基解密,开始添补鞭策媒体滑坡留下的空白。

分享到:
评论

相关推荐

    MySQL管理之道 性能调优、高可用与监控.part2.rar

    1.8 性能测试:mysql5.5与mysql5.1 60 第2章 半同步复制 62 2.1 半同步复制简介 62 2.2 半同步复制安装配置 63 2.3 参数说明 63 2.4 功能测试 64 2.4.1 如何验证半同步复制是否正常工作 64 2.4.2 半同步复制...

    数据库mysql5.6安装部署

    - **binlog_format**: 设置二进制日志格式。 - **innodb_buffer_pool_size**: InnoDB缓存池大小,对性能有很大影响。 - **max_connections**: 最大连接数。 #### 五、MySQL管理与维护 **5.1 日常管理** - **备份与...

    MySQL主从部署方案最佳实践.docx

    MySQL主从部署方案是...在实际应用中,可以根据业务需求调整复制参数,优化性能和容错能力,同时考虑与其他高级集群方案(如Galera Cluster、Percona XtraDB Cluster等)的结合,以应对更大规模和更复杂场景的需求。

    Maxwell 安装、配置和使用说明书.docx

    - 当需要重新配置 binlog 或者重启 MySQL 时,记得更新 `server-id`,以避免复制冲突。 - Maxwell 默认可能不输出包含 DDL 的 JSON,如果需要捕获表结构的变更,需要配置相关选项。 通过以上步骤,你就可以成功地...

    windows环境Canal总结

    - **广泛的兼容性**:支持MySQL多个版本,包括5.1.x, 5.5.x, 5.6.x, 5.7.x, 8.0.x等。 - **丰富的应用场景**:除了常见的数据库镜像和实时备份外,还可以用于索引构建与维护、业务缓存刷新以及复杂的数据处理任务等...

    cdh5-MariaDB 配置

    binlog_format = ROW ``` ##### 5.5 AppArmor配置 如果MariaDB运行在启用了AppArmor的主机上,可能需要对AppArmor进行额外配置,以允许MariaDB写入二进制日志。 #### 六、确保MariaDB服务自启动 通过以下命令,...

Global site tag (gtag.js) - Google Analytics