グループレプリケーションをデプロイする最も一般的な方法は、複数のサーバーインスタンスを使用して高可用性を提供することです。 テスト目的などで、グループレプリケーションをローカルにデプロイすることもできます。 このセクションでは、グループレプリケーションをローカルにデプロイする方法について説明します。
グループレプリケーションは、高可用性が保証されるため、通常は複数のホストにデプロイされます。 すべての MySQL サーバーインスタンスが同じ単一ホスト上で実行されているため、このセクションの手順は本番デプロイメントには適していません。 このホストに障害が発生した場合、グループ全体が失敗します。 したがって、この情報はテスト目的で使用する必要があり、本番環境では使用しないでください。
このセクションでは、1 つの物理マシン上に 3 つの MySQL Server インスタンスを持つレプリケーショングループを作成する方法について説明します。 これは、3 つのデータディレクトリ (サーバーインスタンスごとに 1 つ) が必要であり、各インスタンスを個別に構成する必要があることを意味します。 これは - この手順では、MySQL Server がダウンロードおよび解凍されていることを前提としています - mysql-8.0
という名前のディレクトリに格納します。 各 MySQL サーバーインスタンスには、特定のデータディレクトリが必要です。 data
という名前のディレクトリを作成し、そのディレクトリに各サーバーインスタンス (s1、s2 および s3 など) のサブディレクトリを作成して、それぞれを初期化します。
mysql-8.0/bin/mysqld --initialize-insecure --basedir=$PWD/mysql-8.0 --datadir=$PWD/data/s1
mysql-8.0/bin/mysqld --initialize-insecure --basedir=$PWD/mysql-8.0 --datadir=$PWD/data/s2
mysql-8.0/bin/mysqld --initialize-insecure --basedir=$PWD/mysql-8.0 --datadir=$PWD/data/s3
data/s1
, data/s2
, data/s3
内には初期化されたデータディレクトリがあり、mysql システムデータベースや関連テーブルなどが含まれています。 初期化手順の詳細は、セクション2.10.1「データディレクトリの初期化」 を参照してください。
本番環境では -initialize-insecure
を使用しないでください。チュートリアルを簡略化するためにここでのみ使用します。 セキュリティ設定の詳細は、セクション18.5「グループレプリケーションセキュリティ」 を参照してください。
セクション18.2.1.2「グループレプリケーション用のインスタンスの構成」 をフォローしている場合、前のセクションで追加したデータディレクトリの構成を追加する必要があります。 例:
[mysqld]
# server configuration
datadir=<full_path_to_data>/data/s1
basedir=<full_path_to_bin>/mysql-8.0/
port=24801
socket=<full_path_to_sock_dir>/s1.sock
これらの設定では、以前に作成したデータディレクトリと、サーバーが受信接続のリスニングを開始するポートを使用するように MySQL サーバーを構成します。
このチュートリアルでは、3 つのサーバーインスタンスが同じホスト名を使用するため、24801 のデフォルト以外のポートが使用されます。 3 つの異なるマシンがあるセットアップでは、これは必要ありません。
グループレプリケーションでは、メンバー間のネットワーク接続が必要です。つまり、各メンバーは他のすべてのメンバーのネットワークアドレスを解決できる必要があります。 たとえば、このチュートリアルでは、3 つのインスタンスすべてが 1 つのマシンで実行されるため、メンバーが相互に接続できるように、report_host=127.0.0.1
などのオプションファイルに行を追加できます。
その後、各メンバーは group_replication_local_address
上の他のメンバーに接続できる必要があります。 たとえば、メンバー s1 のオプションファイルで、次のように追加します:
group_replication_local_address= "127.0.0.1:24901"
group_replication_group_seeds= "127.0.0.1:24901,127.0.0.1:24902,127.0.0.1:24903"
これにより、シードメンバーとの内部グループ通信にポート 24901 を使用するように s1 が構成されます。 グループに追加するサーバーインスタンスごとに、メンバーのオプションファイルでこれらの変更を行います。 メンバーごとに一意のアドレスを指定する必要があるため、group_replication_local_address
のインスタンスごとに一意のポートを使用します。 通常、すべてのメンバーを、グループに参加しており、グループで処理されたトランザクションを取得していないメンバーのシードとして機能させる必要があります。 この場合は、前述のように、すべてのポートを group_replication_group_seeds
に追加します。
セクション18.2.1「単一プライマリモードでのグループレプリケーションのデプロイ」 の残りのステップは、この方法でローカルにデプロイしたグループにも同様に適用されます。