目次
レプリケーションは1 つの MySQL サーバ (マスタ) にあるデータベースを別のサーバ (スレーブ) に複製できるレプリケーション機能があります。レプリケーションは非同期、つまり複製スレーブをマスタから更新するときに常時接続である必要がなく、接続距離が離れていても更新することができ、ダイヤルアップなどの一時的なソリューションとしても利用することができます。コンフィギュレーションによっては、すべてのデータベースまたは選択したデータベースを複製でき、さらにデータベース内で選択したテーブルを取り込むこともできます。
以下は、MySQL のレプリケーションの使用例です。
スケールアウト ソリューション - パフォーマンス向上のために複数のスレーブにロードを分散します。この環境では、すべての書き込みと更新をマスタ サーバで実行する必要があります。読み込みの際には、一つ以上のスレーブでの実行が必要になる場合があります。このモデルは、スレーブ数が増加しても読み込みスピードが劇的に向上し、さらにマスタが更新専用になるために書き込み性能も向上します。
データ セキュリティ - スレーブでデータを複製するため、スレーブは複製プロセスを一時停止することでき、後続のマスタデータを破壊することなくスレーブにバックアップ サービスを実行できます。
分析 ‐ マスタでライブ データの作成を行い、スレーブで情報分析を行うため、マスタのパフォーマンスに支障をきたしません。
長距離データ配布 - マスタへの常時接続を不要とするため、別の場所でメイン データを利用したいときなどに、複製をデータのローカル コピーとして使用できます。
MySQL の レプリケーションは、一方向性の非同期複製のサポートを特徴とし、一つのサーバがマスタとして機能し、別のサーバがスレーブとして機能します。これは、 MySQL クラスタ の特徴である同期複製とは対照的です。(参照 章 14. MySQL Cluster)
二つのサーバ間でレプリケーションを設定するには、いくつかのソリューションがあり、データ形状や使用しているエンジン タイプにあわせて最適設定することが可能です。利用可能なオプションの詳細については、項5.1.1. 「レプリケーションのセットアップ方法」 を参照してください。
レプリケーション形式には、SQL すべてのステートメントを複製する Statement Based Replication (SBR: クエリ ベース レプリケーション)、変更があった row (行列) だけを複製する Row Based Replication (RBR: 行ベース レプリケーション) の 2 種類があります。また、第 3 の形式、Mixed Based Replication (MBR) を使用することも可能です。これは、MySQL 5.1.14 以上のデフォルト モードです。レプリケーション形式の詳細については、項5.1.2. 「レプリケーション フォーマット」 を参照してください。
レプリケーションは、様々なオプションと変数によってコントロールされます。これらは、レプリケーション、タイムアウト、データベース、フィルタなど、データベースやテーブルに適用する操作の中核をコントロールします。利用可能なオプション詳細については、項5.1.3. 「レプリケーションのオプションと変数」 を参照してください。
パフォーマンス向上に関わる課題、異なるデータベースのバックアップ サポート、またはシステム不良を回避するための保全ソリューションの一部としてなど、様々な問題を解決するためにレプリケーションを活用できます。ソリューションに関する詳細については、項5.3. 「レプリケーション ソリューション」 を参照してください。
レプリケーション機能の詳細、バージョン間の互換性、アップグレード、既知問題およびソリューション、FAQなど、レプリケーション作業中に異なるデータ タイプおよびクエリがどのように処理されるかに関する情報は、項5.4. 「レプリケーション ノートとヒント」 を参照してください。
レプリケーションの実行、レプリケーションの手順、バイナリ ログ内容とその処理、バックグラウンド スレッド、そしてステートメント (クエリ) をどのように記録するかを決めるオプションに関する詳細は、項5.5. 「レプリケーションの実装」 を参照してください。
MySQL Enterprise. MySQL Network Monitoring and Advisory Service では、レプリケーションに関する問題について迅速なフィードバックを提供する多数のアドバイザーを提供しています。詳細については、http://www-jp.mysql.com/products/enterprise/advisors.htmlをご覧ください。