Diferença entre replicação baseada em linha e baseada em instrução no MySQL?

12

Qual é a diferença real entre replicação baseada em linha e baseada em instrução. Na verdade, estou olhando em termos do efeito da replicação no escravo.

Se estou usando replicação baseada em linha, qual é o efeito no escravo e se estou usando baseada em instrução, qual é o efeito?

Considere também os seguintes parâmetros:

   replicate-ignore-db  and replicate-do-db 

Obrigado....!

Abdul Manaf
fonte

Respostas:

15

A Replicação Baseada em Instruções (SBR) replicará Instruções SQL. É mais fácil ler usando o programa de despejo mysqlbinlog.

A replicação baseada em linha (RBR) replicará as alterações reais dos dados. Logs binários e logs de retransmissão crescerão muito mais rapidamente que o SBR. Você também não pode identificar o SQL que gerou as alterações.
(Por favor, leia as informações atualizadas para o MySQL 5.6.2. Abaixo)

Aqui está uma lista mais abrangente de prós e contras: http://www.databasejournal.com/features/mysql/article.php/3922266/Comparing-MySQL-Statement-Based-and-Row-Based-Replication.htm

O MySQL permitirá os dois tipos de formatos de declaração / linha em seus logs binários. Eu recomendo baseado em declaração. O formato de log binário padrão é MIXED, o que está OK.

Como você está usando replicate-ignore-dbe replicate-do-db, confio na Replicação Baseada em Instruções.


Atualização para o MySQL 5.6.2:

Introduzida no MySQL 5.6.2, a binlog_rows_query_log_eventsvariável de sistema faz com que um servidor MySQL 5.6.2 ou posterior grave eventos de log informativos, como eventos de log de consulta de linha, em seu log binário. Para que possamos identificar o SQL que gerou as alterações.

Referência: 17.1.4.4 Opções e variáveis ​​binárias de log

RolandoMySQLDBA
fonte
qual é o modo padrão de replicação SBR ou RBR ... ??
Abdul Manaf
1
SBR - Declaração
RolandoMySQLDBA
3
O modo padrão é MIXED desde 5.1.8, que usa principalmente replicação baseada em instruções, mas alterna automaticamente para RBR quando são executadas consultas inseguras com SBR. dev.mysql.com/doc/refman/5.1/en/replication-formats.html
Aaron Brown
9

No MySQL 5.5, o formato baseado em instruções é o padrão. Mas é melhor usar o formato misto. Como nesse caso, o log baseado em instruções é usado por padrão, mas alterna automaticamente para o log baseado em linhas nos casos em que isso for necessário.

shantanuo
fonte