このセクションでは、バイナリログファイルの位置ベースのレプリケーションを使用するように MySQL サーバーを設定する方法について説明します。 レプリケーションを設定するには様々な方法があり、使用する正確な方法はレプリケーションの設定方法、およびレプリケートするソース上のデータベースにデータがすでにあるかどうかによって異なります。
MySQL の複数のインスタンスをデプロイするには、MySQL Shell で MySQL サーバーインスタンスのグループを簡単に管理できるようにする InnoDB クラスタ を使用できます。InnoDB クラスタ は MySQL Group Replication をプログラム環境でラップするため、MySQL インスタンスのクラスタを簡単にデプロイして高可用性を実現できます。 また、InnoDB クラスタ は MySQL Router とシームレスにインタフェースするため、アプリケーションは独自のフェイルオーバープロセスを記述せずにクラスタに接続できます。 ただし、高可用性を必要としない同様のユースケースでは、InnoDB ReplicaSet を使用できます。 MySQL Shell のインストール手順は、here にあります。
すべての設定に共通の汎用タスクがいくつかあります:
ソースで、バイナリロギングが有効になっていることを確認し、一意のサーバー ID を構成する必要があります。 これには、サーバーの再起動が必要となる場合があります。 セクション17.1.2.1「レプリケーションソース構成の設定」を参照してください。
ソースに接続する各レプリカで、一意のサーバー ID を構成する必要があります。 これには、サーバーの再起動が必要となる場合があります。 セクション17.1.2.2「レプリカ構成の設定」を参照してください。
必要に応じて、レプリケーション用のバイナリログを読み取るときに、ソースとの認証中にレプリカで使用する別のユーザーを作成します。 セクション17.1.2.3「レプリケーション用ユーザーの作成」を参照してください。
データスナップショットを作成したり、レプリケーションプロセスを開始したりする前に、ソースで現在の位置をバイナリログに記録するようにしてください。 レプリカがイベントの実行を開始するバイナリログ内の場所を認識できるように、レプリカを構成するときにこの情報が必要になります。 セクション17.1.2.4「レプリケーションソースのバイナリログ座標の取得」を参照してください。
すでにソースにデータがあり、それを使用してレプリカを同期する場合は、データスナップショットを作成してレプリカにデータをコピーする必要があります。 使用しているストレージエンジンは、スナップショットの作成方法に影響します。
MyISAM
を使用している場合は、ソース上のステートメントの処理を停止して読み取りロックを取得し、その現在のバイナリログ座標を取得してそのデータをダンプしてから、ソースがステートメントの実行を続行できるようにする必要があります。 ステートメントの実行を停止しないと、データダンプとソースステータス情報が一致しなくなり、レプリカ上のデータベースの一貫性または破損が発生します。MyISAM
ソースのレプリケートの詳細は、セクション17.1.2.4「レプリケーションソースのバイナリログ座標の取得」 を参照してください。InnoDB
を使用している場合、読取りロックは必要なく、データスナップショットの転送に十分な長さのトランザクションで十分です。 詳細は、セクション15.19「InnoDB と MySQL レプリケーション」を参照してください。ホスト名、ログイン資格証明、バイナリログファイルの名前と位置など、ソースに接続するための設定でレプリカを構成します。 セクション17.1.2.7「レプリカでのソース構成の設定」を参照してください。
システムに応じて、ソースおよびレプリカにレプリケーション固有のセキュリティ対策を実装します。 セクション17.3「レプリケーションのセキュリティ」を参照してください。
セットアッププロセスのあるステップでは、SUPER
権限が必要です。 この権限がないと、レプリケーションを有効にできない可能性があります。
基本オプションを構成したあとは、次のシナリオを選択します。
データを含まないソースおよびレプリカのフレッシュインストールのレプリケーションを設定するには、セクション17.1.2.6.1「新しいソースおよびレプリカを使用したレプリケーションの設定」 を参照してください。
既存の MySQL サーバーのデータを使用して新しいソースのレプリケーションを設定するには、セクション17.1.2.6.2「既存のデータによるレプリケーションのセットアップ」 を参照してください。
既存のレプリケーション環境にレプリカを追加するには、セクション17.1.2.8「レプリケーション環境へのレプリカの追加」 を参照してください。
MySQL レプリケーションサーバーを管理する前に、この章全体を読み、セクション13.4.1「ソースサーバーを制御する SQL ステートメント」とセクション13.4.2「レプリケーションサーバーを制御するための SQL ステートメント」で説明したすべてのステートメントを試みてください。 また、セクション17.1.6「レプリケーションおよびバイナリロギングのオプションと変数」で説明されたレプリケーションの起動オプションについても習得してください。