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....!
A Replicação Baseada em Instrução (SBR) irá replicar as Instruções SQL. É mais fácil de ler usando o programa de despejo mysqlbinlog.
A replicação baseada em linha (RBR) replicará as alterações de dados reais. Logs binários e logs de retransmissão crescerão muito mais rápido que o SBR. Também não é possível identificar o SQL que gerou as alterações.
(Por favor, leia as informações atualizadas para 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á ambos os tipos de formatos de instrução/linha em seus logs binários. Eu recomendo baseado em STATEMENT. O formato de log binário padrão é MIXED, o que é OK.
Como você está usando
replicate-ignore-db
ereplicate-do-db
, eu confiaria na replicação baseada em instrução.Atualização para MySQL 5.6.2:
Introduzida no MySQL 5.6.2, a
binlog_rows_query_log_events
variável do 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. Assim podemos identificar o SQL que gerou as alterações.Referência: 17.1.4.4 Opções e variáveis de log binário
No MySQL 5.5, o formato baseado em instrução é o padrão. Mas é melhor usar o formato misto. Porque, nesse caso, o log baseado em instrução é usado por padrão, mas alterna automaticamente para o log baseado em linha sempre que necessário.