MySQLの行ベースのレプリケーションとステートメントベースのレプリケーションの違いは?


12

行ベースのレプリケーションとステートメントベースのレプリケーションの実際の違いは何ですか。私は実際にスレーブへの複製の効果の観点から見ています。

行ベースのレプリケーションを使用している場合、スレーブにどのような影響がありますか。ステートメントベースのレプリケーションを使用している場合、どのような影響がありますか?

次のパラメータも考慮してください。

   replicate-ignore-db  and replicate-do-db 

ありがとう....!

回答:


15

Statement-Based Replication(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-dbしているためreplicate-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 -ステートメント
RolandoMySQLDBA

3
デフォルトモードは、主にステートメントベースのレプリケーションを使用する5.1.8以降のMIXEDですが、SBRで安全でないクエリが実行されると自動的にRBRに切り替わります。 dev.mysql.com/doc/refman/5.1/en/replication-formats.html
アーロンブラウン

9

MySQL 5.5では、ステートメントベースのフォーマットがデフォルトです。ただし、混合形式を使用することをお勧めします。その場合、デフォルトでは文ベースのロギングが使用されますが、必要に応じて行ベースのロギングに自動的に切り替わります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.