• 検索結果がありません。

InnoDB クラスタ の構成

ドキュメント内 MySQL Shell 8.0 (ページ 86-91)

6.2 MySQL InnoDB クラスタ

6.2.6 InnoDB クラスタ の構成

このセクションでは、AdminAPI を使用して InnoDB クラスタ を構成する方法について説明します。

• InnoDB クラスタ のオプションの設定

• InnoDB クラスタs のカスタマイズ

• 選任プロセスの設定

• フェイルオーバーの一貫性の構成

• インスタンスの自動再結合の構成

• パラレルレプリケーションアプリケーションの構成

• クラスタの保護

• サーバーの許可リストの作成

InnoDB クラスタ のオプションの設定

インスタンスがオンラインのときに、InnoDB クラスタ の設定を確認および変更できます。 クラスタの現在の設定を 確認するには、次の操作を使用します:

Cluster.options():クラスタとそのインスタンスの構成オプションをリストします。 ブールオプション all を指定し

て、すべての Group Replication システム変数に関する情報を出力に含めることもできます。

InnoDB クラスタ のオプションは、インスタンスをオンラインのまま、クラスタレベルまたはインスタンスレベルで 構成できます。 これにより、InnoDB クラスタ オプションを変更するために、インスタンスを削除して再構成し、再 度追加する必要がなくなります。 次の操作を使用します:

Cluster.setOption(option, value):すべてのクラスタインスタンスの設定をグローバルに変更するか、clusterName な

どのクラスタグローバル設定を変更します。

• 個々のクラスタインスタンスの設定を変更する Cluster.setInstanceOption(instance, option, value)

リストされている操作で InnoDB クラスタ オプションを使用する方法は、オプションをすべてのインスタンスで同じ になるように変更できるかどうかによって異なります。 これらのオプションは、クラスタレベル (すべてのインスタ ンス) とインスタンスレベルの両方で変更できます:

InnoDB クラスタ の構成

autoRejoinTries: 促進後にインスタンスがクラスタへの再参加を試行する回数を定義する整数値。 インスタンスの

自動再結合の構成を参照してください。

exitStateAction: Group Replication の終了状態アクションを示す文字列値。 インスタンスの自動再結合の構成を参

照してください。

memberWeight: フェイルオーバー時の自動プライマリ選択の重みの割合を示す整数値。 選任プロセスの設定を参照

してください。

tag:option : クラスタに関連付ける組込みタグおよびユーザー定義タグ。 セクション6.2.9「メタデータのタグ付

け」を参照してください。

これらのオプションは、クラスタレベルでのみ変更できます:

clusterName: クラスタ名を定義する文字列値

disableClone: クラスタでクローンの使用を無効にするために使用されるブール値。 dba.createCluster() および

MySQL クローンを参照してください。

expelTimeout: クラスタから削除する前に、クラスタメンバーが応答しないメンバーを待機する期間 (秒) を定義す

る整数値。 クラスタの作成を参照してください。

failoverConsistency: クラスタが提供する一貫性保証を示す文字列値。 インスタンスの自動再結合の構成を参照して

ください。

このオプションは、インスタンスごとのレベルでのみ変更できます:

label: インスタンスの文字列識別子

InnoDB クラスタs のカスタマイズ

クラスタを作成してインスタンスを追加すると、グループ名、ローカルアドレス、シードインスタンスなどの値が AdminAPI によって自動的に構成されます。 これらのデフォルト値はほとんどのデプロイメントで推奨されますが、

上級ユーザーは次のオプションを dba.createCluster() および Cluster.addInstance() に渡すことでデフォルトをオー バーライドできます。

InnoDB クラスタ によって作成されたレプリケーショングループの名前をカスタマイズするには、dba.createCluster() コマンドに groupName オプションを渡します。 これにより、group_replication_group_name システム変数が設定さ れます。 名前は有効な UUID である必要があります。

インスタンスが他のインスタンスからの接続用に提供するアドレスをカスタマイズするには、localAddress オプショ ンを dba.createCluster() および cluster.addInstance() コマンドに渡します。 host:port の形式でアドレスを指定しま す。 これにより、インスタンスに group_replication_local_address システム変数が設定されます。 アドレスは、クラ スタ内のすべてのインスタンスからアクセス可能であり、内部クラスタ通信専用に予約されている必要があります。

つまり、インスタンスとの通信にこのアドレスを使用しないでください。

インスタンスがクラスタに参加するときにシードとして使用されるインスタンスをカスタマイズするに

は、groupSeeds オプションを dba.createCluster() および Cluster.addInstance() 操作に渡します。 シードインスタン スは、新しいインスタンスがクラスタに参加したときに接続され、新しいインスタンスにデータを提供するために使 用されます。 シードインスタンスのアドレスは、host1:port1、host2:port2 などのカンマ区切りリストとして指定され ます。 これにより、group_replication_group_seeds システム変数が構成されます。 新しいインスタンスがクラスタ に追加されると、必要に応じて新しいインスタンスを使用してグループに再度参加できるように、このインスタンス のローカルアドレスがすべてのオンラインクラスタメンバーのグループシードのリストに自動的に追加されます。

注記

シードリスト内のインスタンスは、リストに表示される順序に従って使用されます。 つま り、ユーザー指定のシードが最初に使用され、自動的に追加されたインスタンスよりも優先 されます。

詳細は、これらの AdminAPI オプションで構成されるシステム変数のドキュメントを参照してください。

選任プロセスの設定

このページは機械翻訳したものです。

InnoDB クラスタ の構成

オプションで、単一プライマリクラスタが新しいプライマリを選択する方法を構成できます。たとえば、あるインス タンスをフェイルオーバー先の新しいプライマリとして優先できます。 memberWeight オプションを使用して、ク ラスタの作成時に dba.createCluster() および Cluster.addInstance() メソッドに渡します。 memberWeight オプショ ンは、フェイルオーバー時の自動プライマリ選択のパーセンテージ加重である 0 から 100 までの整数値を受け入れ ます。 インスタンスに memberWeight によって設定されたより大きい事前番号がある場合、単一プライマリクラス タでプライマリとして選択される可能性が高くなります。 プライマリ選択が行われると、複数のインスタンスが同じ

memberWeight 値を持つ場合、インスタンスは辞書順 (最低) でサーバー UUID に基づいて優先順位が付けられ、最初

のインスタンスが選択されます。

memberWeight の値を設定すると、インスタンスの group_replication_member_weight システム変数が構成されま

す。 グループレプリケーションでは、値の範囲が 0 から 100 に制限され、高い値または低い値が指定された場合は自 動的に調整されます。 値が指定されていない場合、グループレプリケーションではデフォルト値の 50 が使用されま す。 詳しくはシングルプライマリモードをご覧ください。

たとえば、現在のプライマリである ic-1 が予期せず memberWeight を使用する場合に、ic-3 がフェイルオーバー先の 優先インスタンスであるクラスタを構成するには、次のようにします:

dba.createCluster('cluster1', {memberWeight:35}) var mycluster = dba.getCluster()

mycluster.addInstance('icadmin@ic2', {memberWeight:25}) mycluster.addInstance('icadmin@ic3', {memberWeight:50})

フェイルオーバーの一貫性の構成

グループレプリケーションでは、プライマリフェイルオーバーが単一プライマリモードで発生した場合にフェイル オーバー保証 (最終的または「「書き込みを読む」」) を指定できます (トランザクション一貫性保証の構成 を参照)。

作成時に InnoDB クラスタ のフェイルオーバー保証を構成するには、consistency オプション (バージョン 8.0.16 より 前のこのオプションは failoverConsistency オプションで、現在は非推奨) を dba.createCluster() 操作に渡して、シー ドインスタンスで group_replication_consistency システム変数を構成します。 このオプションは、単一プライマリグ ループで新しいプライマリが選択されたときに使用される新しいフェンシングメカニズムの動作を定義します。 フェ ンシングは、古いプライマリ (「「書き込みを読む」」とも呼ばれる) からの保留中の変更のバックログが適用される まで、新しいプライマリからの接続の書込みおよび読取りを制限します。 フェンシングメカニズムが設定されてい る間は、バックログが適用されている間、アプリケーションは短時間前に進む時間を事実上認識しません。 これによ り、アプリケーションは新しく選択されたプライマリから失効した情報を読み取らないようになります。

consistency オプションは、ターゲット MySQL サーバーのバージョンが 8.0.14 以上で、consistency オプション

で構成されたクラスタに追加されたインスタンスが、そのオプションをサポートするすべてのクラスタメンバー で group_replication_consistency が同じになるように自動的に構成されている場合にのみサポートされます。

変数のデフォルト値は Group Replication によって制御され、EVENTUAL の場合は、consistency オプションを

BEFORE_ON_PRIMARY_FAILOVER に変更してフェンシングメカニズムを有効にします。 または、consistency=0

for EVENTUAL および consistency=1 for BEFORE_ON_PRIMARY_FAILOVER を使用します。

注記

マルチプライマリ InnoDB クラスタ で consistency オプションを使用しても効 果はありませんが、後でクラスタをシングルプライマリモードに変更できるた め、Cluster.switchToSinglePrimaryMode() 操作を使用できます。

インスタンスの自動再結合の構成

MySQL 8.0.16 以降を実行しているインスタンスでは、グループレプリケーションの自動再結合機能がサポートされて いるため、明示的にクラスタに自動的に再参加するようにインスタンスを構成できます。 背景情報は、障害検出およ びネットワークパーティション化へのレスポンス を参照してください。AdminAPI には、削除後にインスタンスがク ラスタへの再参加を試行する回数を構成する autoRejoinTries オプションが用意されています。 デフォルトでは、イ ンスタンスはクラスタに自動的に再参加しません。 次のコマンドを使用して、クラスタレベルまたは個々のインスタ ンスのいずれかで autoRejoinTries オプションを構成できます:

dba.createCluster()

Cluster.addInstance()

Cluster.setOption()

ドキュメント内 MySQL Shell 8.0 (ページ 86-91)