Différence entre la réplication basée sur les lignes et basée sur les instructions dans MySQL?

12

Quelle est la différence réelle entre la réplication basée sur les lignes et celle basée sur les instructions. Je cherche en fait en termes d'effet de réplication sur l'esclave.

Si j'utilise la réplication basée sur des lignes, quel est l'effet sur l'esclave et si j'utilise une instruction, alors quel est l'effet?

Veuillez également prendre en compte les paramètres suivants:

   replicate-ignore-db  and replicate-do-db 

Merci....!

Abdul Manaf
la source

Réponses:

15

La réplication basée sur les instructions (SBR) répliquera les instructions SQL. Il est plus facile à lire en utilisant le programme de vidage mysqlbinlog.

La réplication basée sur les lignes (RBR) répliquera les modifications réelles des données. Les journaux binaires et les journaux de relais croîtront beaucoup plus rapidement que SBR. Vous ne pouvez pas non plus identifier le SQL qui a généré les modifications.
(Veuillez lire les informations mises à jour pour MySQL 5.6.2 ci-dessous)

Voici une liste plus complète des avantages et inconvénients: http://www.databasejournal.com/features/mysql/article.php/3922266/Comparing-MySQL-Statement-Based-and-Row-Based-Replication.htm

MySQL autorisera les deux types de formats de déclaration / ligne dans ses journaux binaires. Je recommande basé sur STATEMENT. Le format de journal binaire par défaut est MIXTE, ce qui est OK.

Puisque vous utilisez replicate-ignore-dbet replicate-do-db, je ferais confiance à la réplication basée sur les instructions.


Mise à jour pour MySQL 5.6.2:

Introduite dans MySQL 5.6.2, la binlog_rows_query_log_eventsvariable système oblige un serveur MySQL 5.6.2 ou une version ultérieure à écrire des événements de journal d'informations tels que des événements de journal de requête de ligne dans son journal binaire. Nous pouvons donc identifier le SQL qui a généré les modifications.

Référence: 17.1.4.4 Options et variables du journal binaire

RolandoMySQLDBA
la source
quel est le mode de réplication par défaut SBR ou RBR ... ??
Abdul Manaf
1
SBR - Déclaration
RolandoMySQLDBA
3
Le mode par défaut est MIXTE depuis 5.1.8, qui utilise principalement la réplication basée sur les instructions, mais passe automatiquement à RBR lorsque des requêtes qui ne sont pas sécurisées avec SBR sont exécutées. dev.mysql.com/doc/refman/5.1/en/replication-formats.html
Aaron Brown
9

Dans MySQL 5.5, le format basé sur les instructions est le format par défaut. Mais il vaut mieux utiliser le format mixte. Parce que dans ce cas, la journalisation basée sur les instructions est utilisée par défaut, mais passe automatiquement à la journalisation basée sur les lignes dans les cas où cela est nécessaire.

shantanuo
la source