Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 27.1Mb
PDF (A4) - 27.1Mb
EPUB - 7.5Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


17.1.2 レプリケーション形式

レプリケーションが機能するのは、バイナリログに書き込まれたイベントがマスターから読み取られ、スレーブで処理されるためです。イベントは、イベントタイプに従ってさまざまな形式でバイナリログに記録されます。使用されるさまざまなレプリケーション形式は、イベントがマスターのバイナリログに記録されたときに使用されたバイナリロギング形式に対応しています。バイナリロギング形式とレプリケーションで使用される用語との関係は次のとおりです。

  • ステートメントベースのバイナリロギングを使用する場合、マスターは SQL ステートメントをバイナリログに書き込みます。マスターからスレーブへのレプリケーションは、スレーブで SQL ステートメントを実行することによって機能します。これはステートメントベースのレプリケーション (SBR と短縮されることが多い) と呼ばれ、標準 MySQL ステートメントベースのバイナリロギング形式に対応します。MySQL バージョン 5.1.4 以前のレプリケーション機能では、この形式だけが使用されました。

  • 行ベースのロギングを使用する場合、マスターは、各テーブル行がどのように変更されたかを表すイベントをバイナリログに書き込みます。マスターからスレーブへのレプリケーションは、テーブル行が変更されたことを表すイベントをスレーブにコピーすることによって機能します。これは行ベースのレプリケーション (RBRと短縮されることが多い) と呼ばれます。行ベースのレプリケーションでは、マスターは、各テーブル行がどのように変更されたかを表すイベントをバイナリログに書き込みます。

  • 変更ログが記録されるときにステートメントベースと行ベースのどちらが適しているかによって、これらのロギングの組み合わせを使用するように MySQL を構成することもできます。これは混合形式のロギングと呼ばれます。混合形式のロギングを使用する場合、デフォルトでステートメントベースのログが使用されます。ステートメントに応じて、また使用されるストレージエンジンに応じて、ログは特定のケースで行ベースに自動的に切りかえられます。混合形式を使用するレプリケーションは多くの場合、混合ベースのレプリケーションまたは混合形式のレプリケーションと呼ばれます。詳細については、セクション5.2.4.3「混合形式のバイナリロギング形式」を参照してください。

MySQL 5.6 では、ステートメントベースの形式がデフォルトです。

MySQL Cluster  すべての MySQL Cluster NDB 7.3 および MySQL Cluster NDB 7.4 リリースのデフォルトバイナリロギング形式は 混合 です。MySQL Cluster Replication は常に行ベースのレプリケーションを使用し、NDB ストレージエンジンはステートメントベースのレプリケーションを使用できません。詳細については、セクション18.6.2「MySQL Cluster レプリケーションの一般要件」を参照してください。

混合形式を使用する場合、バイナリロギング形式は、使用されているストレージエンジンと実行されているステートメントによってある程度決定されます。混合形式のロギング、および異なるロギング形式のサポートを管理するルールの詳細は、セクション5.2.4.3「混合形式のバイナリロギング形式」を参照してください。

実行中 MySQL サーバーのロギング形式は、binlog_format サーバーシステム変数を設定することで制御されます。この変数はセッションまたはグローバルスコープで設定できます。新しい設定が有効になるタイミングと方法を管理するルールは、ほかの MySQL サーバーシステム変数と同じです。現在のセッションの変数を設定すると、そのセッションが終わるまで持続し、変更はほかのセッションに可視でなく、変数をグローバルに設定した場合、有効にするにはサーバーの再起動が必要です。詳細については、セクション13.7.4「SET 構文」を参照してください。

実行時にバイナリロギング形式を変更できない、つまりそのようにするとレプリケーションが失敗する状況があります。セクション5.2.4.2「バイナリログ形式の設定」を参照してください。

グローバルまたはセッション binlog_format 値を設定するには、SUPER 権限が必要です。

ステートメントベースと行ベースのレプリケーション形式には、異なる問題と制限があります。関連するメリットとデメリットの比較は、セクション17.1.2.1「ステートメントベースおよび行ベースレプリケーションのメリットとデメリット」を参照してください。

ステートメントベースのレプリケーションでは、ストアドルーチンまたはトリガーの複製で問題が発生する場合があります。代わりに行ベースのレプリケーションを使用することで、これらの問題を回避できます。詳細については、セクション20.7「ストアドプログラムのバイナリロギング」を参照してください。


User Comments
Sign Up Login You must be logged in to post a comment.