目次
- 17.1 レプリケーションの構成
- 17.2 レプリケーションの実装
- 17.3 レプリケーションのセキュリティ
- 17.4 レプリケーションソリューション
- 17.4.1 バックアップ用にレプリケーションを使用する
- 17.4.2 レプリカの予期しない停止の処理
- 17.4.3 行ベースのレプリケーションの監視
- 17.4.4 異なるソースおよびレプリカのストレージエンジンでのレプリケーションの使用
- 17.4.5 スケールアウトのためにレプリケーションを使用する
- 17.4.6 異なるレプリカへの異なるデータベースのレプリケート
- 17.4.7 レプリケーションパフォーマンスを改善する
- 17.4.8 フェイルオーバー中のソースの切替え
- 17.4.9 非同期接続フェイルオーバーによるソースの切替え
- 17.4.10 準同期レプリケーション
- 17.4.11 遅延レプリケーション
- 17.5 レプリケーションの注釈とヒント
レプリケーションを使用すると、ある MySQL データベースサーバー (ソースと呼ばれる) のデータを、複数の MySQL データベースサーバー (レプリカと呼ばれる) にコピーできます。 レプリケーションはデフォルトで非同期です。ソースから更新を受信するためにレプリカを永続的に接続する必要はありません。 構成に応じて、すべてのデータベース、選択したデータベース、さらにデータベース内の選択したテーブルを複製できます。
MySQL のレプリケーションの長所は次のとおりです。
スケールアウトソリューション - 複数のレプリカに負荷を分散して、パフォーマンスを向上させます。 この環境では、すべての書込みおよび更新がソースサーバーで実行される必要があります。 ただし、1 つまたは複数のレプリカで読み取りが行われる場合があります。 このモデルでは、(ソースが更新専用であるため) 書込みのパフォーマンスを向上させる一方で、レプリカの数の増加に伴って読取り速度を大幅に向上させることができます。
データセキュリティ - レプリカはレプリケーションプロセスを一時停止できるため、対応するソースデータを破損させることなくレプリカでバックアップサービスを実行できます。
アナリティクス - ライブデータはソースで作成できますが、情報の分析はソースのパフォーマンスに影響を与えることなくレプリカで実行できます。
長距離データ分散 - レプリケーションを使用すると、ソースに永続的にアクセスせずに、リモートサイトで使用するデータのローカルコピーを作成できます。
このようなシナリオでレプリケーションを使用する方法については、セクション17.4「レプリケーションソリューション」 を参照してください。
MySQL 8.0 は、様々なレプリケーション方法をサポートしています。 従来の方法は、ソースバイナリログからのイベントのレプリケートに基づいており、ソースとレプリカ間で同期するためにログファイルとその中の位置が必要です。 グローバルトランザクション識別子 (GTID) に基づく新しい方法はトランザクションであるため、これらのファイル内のログファイルや位置を操作する必要はなく、多くの一般的なレプリケーションタスクが大幅に簡略化されます。 GTID を使用したレプリケーションでは、ソースでコミットされたすべてのトランザクションがレプリカにも適用されているかぎり、ソースとレプリカの間の一貫性が保証されます。 MySQL での GTID および GTID ベースレプリケーションの詳細は、セクション17.1.3「グローバルトランザクション識別子を使用したレプリケーション」 を参照してください。 バイナリログファイルの位置ベースのレプリケーションの使用方法については、セクション17.1「レプリケーションの構成」 を参照してください。
MySQL でのレプリケーションでは、様々なタイプの同期がサポートされます。 元のタイプの同期は、一方向の非同期レプリケーションであり、一方のサーバーはソースとして機能し、もう一方のサーバーはレプリカとして機能します。 これは NDB Cluster の特性である同期レプリケーションとは対照的です (第23章「MySQL NDB Cluster 8.0」 を参照)。 MySQL 8.0 では、組込み非同期レプリケーションに加えて、準同期レプリケーションがサポートされています。 準同期レプリケーションでは、トランザクションを実行したセッションに戻る前に、ソースで実行されたコミットは、トランザクションのイベントを受信して記録したことを少なくとも 1 つのレプリカが確認するまでブロックされます。セクション17.4.10「準同期レプリケーション」 を参照してください。 MySQL 8.0 は、レプリカが少なくとも指定された時間だけソースから意図的に遅れるような遅延レプリケーションもサポートしています。セクション17.4.11「遅延レプリケーション」 を参照してください。 同期レプリケーションが必要なシナリオでは、NDB Cluster を使用します (第23章「MySQL NDB Cluster 8.0」 を参照)。
サーバー間のレプリケーションを設定するために使用できるソリューションは多数あり、使用する最適な方法は、使用しているデータの存在とエンジンタイプによって異なります。 利用可能なオプションの詳細については、セクション17.1.2「バイナリログファイルの位置ベースのレプリケーションの設定」を参照してください。
レプリケーション形式の主要なタイプは 2 つあり、1 つは、SQL ステートメント全体を複製する Statement Based Replication (SBR: ステートメントベースレプリケーション)、もう 1 つは変更があった行だけを複製する Row Based Replication (RBR: 行ベースレプリケーション) です。 また、3 種類目の混合ベースのレプリケーション (MBR) を使用することもできます。 さまざまなレプリケーション形式の詳細については、セクション17.2.1「レプリケーション形式」を参照してください。
レプリケーションは、いくつかのオプションと変数によって制御されます。 詳細は、セクション17.1.6「レプリケーションおよびバイナリロギングのオプションと変数」を参照してください。 セクション17.3「レプリケーションのセキュリティ」 で説明されているように、レプリケーショントポロジに追加のセキュリティ対策を適用できます。
レプリケーションを使用すると、パフォーマンス、様々なデータベースのバックアップのサポート、システム障害を軽減する大規模なソリューションの一部など、様々な問題を解決できます。 これらの問題の対処方法については、セクション17.4「レプリケーションソリューション」を参照してください。
レプリケーション機能の詳細、バージョンの互換性、アップグレード、潜在的な問題とその解決方法など、レプリケーション中の様々なデータ型およびステートメントの処理方法に関するノートおよびヒントは、セクション17.5「レプリケーションの注釈とヒント」 を参照してください。 MySQL Replication をはじめて使用する人がよくする質問の回答については、セクションA.14「MySQL 8.0 FAQ: レプリケーション」を参照してください。
レプリケーションの実装、レプリケーションの動作、バイナリログのプロセスと内容、バックグラウンドスレッド、およびステートメントの記録とレプリケート方法を決定するために使用される規則の詳細は、セクション17.2「レプリケーションの実装」 を参照してください。