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


MySQL 5.6 リファレンスマニュアル  /  レプリケーション

第 17 章 レプリケーション

目次

17.1 レプリケーション構成
17.1.1 レプリケーションのセットアップ方法
17.1.2 レプリケーション形式
17.1.3 グローバルトランザクション識別子を使用したレプリケーション
17.1.4 レプリケーションおよびバイナリロギングのオプションと変数
17.1.5 一般的なレプリケーション管理タスク
17.2 レプリケーションの実装
17.2.1 レプリケーション実装の詳細
17.2.2 レプリケーションリレーおよびステータスログ
17.2.3 サーバーがレプリケーションフィルタリングルールをどのように評価するか
17.3 レプリケーションソリューション
17.3.1 バックアップ用にレプリケーションを使用する
17.3.2 異なるマスターおよびスレーブストレージエンジンでレプリケーションを使用する
17.3.3 スケールアウトのためにレプリケーションを使用する
17.3.4 異なるデータベースを異なるスレーブに複製する
17.3.5 レプリケーションパフォーマンスを改善する
17.3.6 フェイルオーバー中にマスターを切り替える
17.3.7 SSL を使用してレプリケーションをセットアップする
17.3.8 準同期レプリケーション
17.3.9 遅延レプリケーション
17.4 レプリケーションの注釈とヒント
17.4.1 レプリケーションの機能と問題
17.4.2 MySQL バージョン間のレプリケーション互換性
17.4.3 レプリケーションセットアップをアップグレードする
17.4.4 レプリケーションのトラブルシューティング
17.4.5 レプリケーションバグまたは問題を報告する方法

レプリケーションによって、1 つの MySQL データベースサーバー (マスター) のデータを、1 つまたは複数の MySQL データベースサーバー (スレーブ) に複製できます。レプリケーションはデフォルトで非同期であるため、スレーブはマスターから更新を受け取るために永続的に接続されている必要はありません。これは、長距離間接続でも、さらにダイアルアップサービスのような一時的または断続的接続上でも更新が可能であることを意味しています。構成に応じて、すべてのデータベース、選択したデータベース、さらにデータベース内の選択したテーブルを複製できます。

MySQL Replication をはじめて使用する人がよくする質問の回答については、セクションA.13「MySQL 5.6 FAQ: レプリケーション」を参照してください。

MySQL のレプリケーションの長所は次のとおりです。

  • スケールアウトソリューション - パフォーマンスの向上のために複数のスレーブに負荷を分散します。この環境では、すべての書き込みと更新をマスターサーバーで実行する必要があります。ただし、読み取りの場合は、1 つ以上のスレーブで実行してもかまいません。このモデルでは、書き込みのパフォーマンスを向上させながら (マスターが更新専用であるため)、スレーブ数が増加しても読み取り速度を劇的に速めることができます。

  • データセキュリティー - データはスレーブに複製され、スレーブはレプリケーションプロセスを一時停止できるため、対応するマスターデータを壊すことなくスレーブでバックアップサービスを実行できます。

  • 分析 - マスターでライブデータを作成しながら、スレーブで情報の分析を実行できるため、マスターのパフォーマンスに影響しません。

  • 長距離データ配布 - 支店でメインデータのコピーを使用して作業する場合に、レプリケーションを使用してデータのローカルコピーを作成してそれらを使用できます (マスターへの永続的なアクセスは不要)。

MySQL のレプリケーションの特徴は、一方向の非同期レプリケーションをサポートしていることであり、1 つのサーバーがマスターとして機能し、1 つまたは複数のサーバーがスレーブとして機能します。これは、MySQL クラスタの特徴である同期レプリケーションとは対照的です (第18章「MySQL Cluster NDB 7.3 および MySQL Cluster NDB 7.4を参照してください)。MySQL 5.6 では、組み込みの非同期レプリケーションに加えて、準同期レプリケーションへのインタフェースがサポートされています。準同期レプリケーションでは、マスター側で実行されたコミットは、トランザクションを実行したセッションに戻る前に、少なくとも 1 つのスレーブがトランザクションのイベントを受け取ってログに記録したことを通知するまでブロックされます。セクション17.3.8「準同期レプリケーション」を参照してください。MySQL 5.6 は、スレーブサーバーが、少なくとも指定した時間だけ意図的にマスターより遅れるような遅延レプリケーションもサポートしています。セクション17.3.9「遅延レプリケーション」を参照してください。

2 つのサーバー間でレプリケーションをセットアップするために使用できるソリューションはいくつかありますが、最善の使用方法はデータの存在や使用しているエンジンタイプによって異なります。利用可能なオプションの詳細については、セクション17.1.1「レプリケーションのセットアップ方法」を参照してください。

レプリケーション形式の主要なタイプは 2 つあり、1 つは、SQL ステートメント全体を複製する Statement Based Replication (SBR: ステートメントベースレプリケーション)、もう 1 つは変更があった行だけを複製する Row Based Replication (RBR: 行ベースレプリケーション) です。3 つ目の Mixed Based Replication (MBR: ミックスベースレプリケーション) を使用することもできます。さまざまなレプリケーション形式の詳細については、セクション17.1.2「レプリケーション形式」を参照してください。MySQL 5.6 では、ステートメントベースの形式がデフォルトです。

MySQL 5.6.5 以降では、グローバルトランザクション ID (GTID) に基づくトランザクションレプリケーションをサポートしています。このタイプのレプリケーションを使用するときは、ログファイルまたはこれらのファイル内の位置と直接連携する必要がないため、共通する多くのレプリケーションタスクが大幅に単純化されます。GTID を使用するレプリケーションは完全にトランザクション対応であるため、マスターで確定されたすべてのトランザクションがスレーブでも適用されるかぎり、マスターとスレーブとの一貫性は保証されます。GTID および GTID ベースのレプリケーションの詳細については、セクション17.1.3「グローバルトランザクション識別子を使用したレプリケーション」を参照してください。

レプリケーションは、いくつかのオプションと変数によって制御されます。これらは、レプリケーション、タイムアウト、データベース、およびデータベースとテーブルに適用できるフィルターのコア操作を制御します。利用可能なオプションの詳細については、セクション17.1.4「レプリケーションおよびバイナリロギングのオプションと変数」を参照してください。

レプリケーションを使用することで、いくつかの異なる問題を解決できます (パフォーマンスの問題、異なるデータベースのバックアップのサポート、より大きなソリューションの一部としてシステム障害を軽減する、など)。これらの問題の対処方法については、セクション17.3「レプリケーションソリューション」を参照してください。

レプリケーション機能の詳細、バージョン互換性、アップグレード、および問題とその解決 (FAQ を含む) など、さまざまなデータ型とステートメントがレプリケーション中にどのように処理されるかに関する説明とヒントについては、セクション17.4「レプリケーションの注釈とヒント」を参照してください。

レプリケーションの実装、レプリケーションの仕組み、バイナリログのプロセスと内容、バックアップスレッド、およびステートメントの記録とレプリケーションの方法を決めるために使用されるルールの詳細については、セクション17.2「レプリケーションの実装」を参照してください。