Unterschied zwischen zeilenbasierter und anweisungsbasierter Replikation in MySQL?

12

Was ist der tatsächliche Unterschied zwischen zeilenbasierter und anweisungsbasierter Replikation? Ich suche tatsächlich in Bezug auf die Wirkung der Replikation auf den Slave.

Wenn ich die zeilenbasierte Replikation verwende, wie wirkt es sich dann auf den Slave aus, und wenn ich die anweisungsbasierte Replikation verwende, wie wirkt es sich dann aus?

Bitte beachten Sie auch folgende Parameter:

   replicate-ignore-db  and replicate-do-db 

Vielen Dank....!

Abdul Manaf
quelle

Antworten:

15

Statement-Based Replication (SBR) repliziert SQL-Anweisungen. Es ist einfacher, mit mysqlbinlog dump program zu lesen.

Die zeilenbasierte Replikation (RBR) repliziert die tatsächlichen Datenänderungen. Binäre Protokolle und Relay-Protokolle werden viel schneller wachsen als SBR. Sie können auch nicht die SQL identifizieren, die die Änderungen generiert hat.
(Bitte lesen Sie die aktualisierten Informationen für MySQL 5.6.2 weiter unten.)

Hier finden Sie eine umfassendere Liste der Vor- und Nachteile: http://www.databasejournal.com/features/mysql/article.php/3922266/Comparing-MySQL-Statement-Based-and-Row-Based-Replication.htm

MySQL erlaubt beide Arten von Anweisungen / Zeilenformaten in seinen Binärprotokollen. Ich empfehle STATEMENT basiert. Das Standard-Binärprotokollformat ist MIXED, was in Ordnung ist.

Da Sie replicate-ignore-dbund verwenden replicate-do-db, würde ich Statement-Based Replication vertrauen.


Update für MySQL 5.6.2:

Die in MySQL 5.6.2 eingeführte binlog_rows_query_log_eventsSystemvariable veranlasst einen MySQL 5.6.2-Server oder höher, informative Protokollereignisse wie z. B. Zeilenabfrageprotokollereignisse in sein Binärprotokoll zu schreiben. So können wir die SQL identifizieren, die die Änderungen generiert hat.

Referenz: 17.1.4.4 Binärprotokolloptionen und -variablen

RolandoMySQLDBA
quelle
Was ist der Standard-Replikationsmodus SBR oder RBR ...?
Abdul Manaf
1
SBR - Erklärung
RolandoMySQLDBA
3
Der Standardmodus ist MIXED seit 5.1.8, der primär anweisungsbasierte Replikation verwendet, jedoch automatisch auf RBR umschaltet, wenn Abfragen ausgeführt werden, die mit SBR nicht sicher sind. dev.mysql.com/doc/refman/5.1/en/replication-formats.html
Aaron Brown
9

In MySQL 5.5 ist das anweisungsbasierte Format der Standard. Es ist jedoch besser, das gemischte Format zu verwenden. Da in diesem Fall standardmäßig die anweisungsbasierte Protokollierung verwendet wird, wird bei Bedarf jedoch automatisch auf die zeilenbasierte Protokollierung umgeschaltet.

shantanuo
quelle