MySQL中基于行的复制和基于语句的复制之间的区别?


12

基于行的复制和基于语句的复制之间的实际区别是什么?我实际上是在查看复制对从属服务器的影响。

如果我使用的是基于行的复制,那么对从属服务器有什么影响?如果我使用的是基于语句的复制,那么会有什么影响?

请同时考虑以下参数:

   replicate-ignore-db  and replicate-do-db 

谢谢....!

Answers:


15

基于语句的复制(SBR)将复制SQL语句。使用mysqlbinlog转储程序更容易阅读。

基于行的复制(RBR)将复制实际的数据更改。二进制日志和中继日志的增长将比SBR快得多。您也无法识别生成更改的SQL。
(请阅读下面有关MySQL 5.6.2的更新信息。)

这是一个更全面的利弊列表:http : //www.databasejournal.com/features/mysql/article.php/3922266/Comparing-MySQL-Statement-Based-and-Row-Based-Replication.htm

MySQL将在其二进制日志中允许两种类型的语句/行格式。我建议基于STATEMENT。默认的二进制日志格式为MIXED,可以。

由于您使用replicate-ignore-dbreplicate-do-db,因此我相信基于语句的复制。


MySQL 5.6.2更新:

在MySQL 5.6.2中引入的binlog_rows_query_log_events系统变量使MySQL 5.6.2或更高版本的服务器将信息日志事件(例如行查询日志事件)写入其二进制日志中。这样我们就可以确定生成更改的SQL。

参考: 17.1.4.4二进制日志选项和变量


复制SBR或RBR的默认模式是什么?
阿卜杜勒·马纳夫

1
SBR-

3
从5.1.8开始,默认模式为MIXED,该模式主要使用基于语句的复制,但是在执行使用SBR不安全的查询时会自动切换到RBR。 dev.mysql.com/doc/refman/5.1/en/replication-formats.html
亚伦·布朗

9

在MySQL 5.5中,基于语句的格式是默认格式。但是最好使用混合格式。因为在这种情况下,默认情况下使用基于语句的日志记录,但是在任何需要的情况下都会自动切换到基于行的日志记录。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.