レプリケーションによって,1つのMySQLデータベースサーバー(マスター)のデータを,1つまたは複数のMySQLデータベースサーバー(スレーブ)に複製できます。レプリケーションはデフォルトで非同期であるため,スレーブはマスターから更新を受け取るために永続的に接続されている必要はありません。これは,長距離間接続でも,さらにダイアルアップサービスのような一時的または断続的接続上でも更新が可能であることを意味しています。構成に応じて,すべてのデータベース,選択したデータベース,さらにデータベース内の選択したテーブルを複製できます。
MySQL复制をはじめて使用する人がよくする質問の回答については,セクション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ステートメント全体を複製する声明基于复制(SBR:ステートメントベースレプリケーション),もう1つは変更があった行だけを複製する基于连续复制(RBR:行ベースレプリケーション)です。基于3つ目の混合复制(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 "レプリケーションの実装"を参照してください。