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

6.2.5 InnoDBクラスタの操作

このセクションでは,InnoDBクラスタの使用方法および一般的な管理タスクの処理方法について説明します。

InnoDBクラスタからのンスタンスの削除

必要に応じて,い。これは,次の例のように,集群.removeInstance (实例メソッドを使用して実行できます:

mysql-js> cluster. removeinstance ('root@localhost:3310')实例将从InnoDB集群中移除。取决于实例是否是种子,Metadata会话可能会失效。如果是,请启动一个元数据存储读写实例的新会话。试图离开复制组…实例'localhost:3310'已成功从集群中移除。

オプションで,互动オプションを渡して,クラスタからのインスタンスの削除を確認するプロンプトを表示するかどうかを制御できます。対話モードでは,インスタンスにアクセスできない場合に備えて,インスタンスの削除を続行するかどうかを尋ねるプロンプトが表示されます。集群.removeInstance ()操作により,在线であるすべてのクラスタメンバ。

削除するインスタンスにまだ適用する必要があるトランザクションがある場合,AdminAPIは,トランザクション(GTID)が適用されるまで,MySQL壳dba.gtidWaitTimeoutオプションで構成された秒数まで待機します。MySQL壳dba.gtidWaitTimeoutオプションのデフォルト値は60秒です。デフォルトの変更の詳細は,セクション10.4“MySQL Shellオプションの構成”を参照してください。トランザクションの適用を待機しているときにdba.gtidWaitTimeoutで定義されたタムアウト値に達し,オプションが(または定義されていない)の場合は,エラ,が発行され,削除操作が中断されます。トランザクションの適用を待機しているときにdba.gtidWaitTimeoutで定義されたタムアウト値に達し,オプションが真正的に設定されている場合,操作はエラなしで続行され,ンスタンスがクラスタから削除されます。

重要

オプションは,未処理のトランザクションや遥不可及的である邮箱ンスタンスなどのエラ邮箱を無視し,クラスタで邮箱ンスタンスを再利用しない場合にのみ,集群.removeInstance (实例で使用する必要があります。クラスタからインスタンスを削除するときにエラーを無視すると,インスタンスがクラスタと同期しなくなり,後でクラスタに再参加できなくなる可能性があります。オプションは、クラスタで以及ンスタンスを使用しないことを計画している場合にのみ使用します。それ以外の場合は,常にインスタンスのリカバリを試行し,インスタンスが使用可能で正常な場合,つまりステータスが在线の場合にのみ削除する必要があります。

InnoDBクラスタの解決

InnoDBクラスタを解決するには,読取り/書込みインスタンス(単一プライマリクラスタのプライマリなど)に接続し,集群.dissolve ()コマンドを使用します。これにより,クラスタに関連付けられているすべてのメタデータおよび構成が削除され,インスタンスでのグループレプリケーションが無効になります。econンスタンス間でレプリケトされたデタは削除されません。

重要

クラスタのディゾルブを元に戻す方法はありません。再度作成するには,dba.createCluster ()を使用します。

集群.dissolve ()操作では,在线または到達可能な邮箱ンスタンスのみを構成できます。集群.dissolve ()コマンドを発行したメンバーがクラスタのメンバーに到達できない場合は,ディゾルブ操作の続行方法を決定する必要があります。クラスタから欠落として識別されたインスタンスを再結合する可能性がある場合は,ディゾルブ操作を取り消し,まず欠落しているインスタンスをオンラインに戻してから,ディゾルブ操作を続行することを強くお薦めします。これにより,すべてのインスタンスのメタデータを正しく更新でき,スプリットブレイン状況が発生する可能性がなくなります。ただし,到達できないクラスタのインスタンスが永続的に残っている場合は,選択肢はなく,ディゾルブ操作を強制することができます。。

警告

クラスタインスタンスを無視するようにディゾルブ操作を強制すると,ディゾルブ操作中に到達できなかったインスタンスが引き続き動作し,スプリットブレイン状況のリスクが発生する可能性があります。インスタンスが再度オンラインになる可能性がないことが確実な場合にのみ,欠落しているインスタンスを無視するようにディゾルブ操作を強制します。

対話型モードでは,ディゾルブ操作中にクラスタのメンバーにアクセスできない場合,対話型プロンプトが表示されます。次に例を示します:

mysql-js >集群. resolve()集群中仍然存在以下注册实例:{"clusterName": "testCluster", " defaultreplicset ": {"name": "default", "topology": [{"address": "ic-1:3306", "label": "ic-1:3306", "role": "HA"}, {"address": "ic-3:3306", "label": "ic-3:3306", "role": "HA"}]}}警告:您即将解散整个集群,失去集群提供的高可用性特性。此操作不可恢复。所有成员将从集群中删除,复制将停止,内部恢复用户帐户和集群元数据将被删除。用户数据将在所有实例中保持完整。您确定要解散群集吗?[y/N]: y ERROR:实例'ic-2:3306'不能被删除,因为它处于'(MISSING)'状态。请将实例恢复ONLINE,并尝试再次解散集群。如果实例永久不可访问,则可以选择继续操作,只从Cluster Metadata中删除实例。您是否希望继续(只有实例元数据将被删除)?[y/N]: y实例'ic-3:3306'试图离开集群… Instance 'ic-1:3306' is attempting to leave the cluster... WARNING: The cluster was successfully dissolved, but the following instance was skipped: 'ic-2:3306'. Please make sure this instance is permanently unavailable or take any necessary manual action to ensure the cluster is fully dissolved.

この例では,クラスタは3つのインスタンスで構成されており,そのうちの1つはディゾルブが発行されたときにオフラインでした。エラが捕捉され,続行方法を選択できます。この場合,欠落しているic-2ンスタンスは無視され、到達可能なメンバタが更新されます。

MySQL Shellが非対話モドで実行されている場合(バッチファルの実行時など),オプションを使用して集群.dissolve ()操作の動作を構成できます。到達不能な邮箱ンスタンスをディゾルブ操作で強制的に無視するには,次のように発行します:

mysql-js >集群.dissolve({力:真})

到達可能なereplicationンスタンスはすべてクラスタから削除され,到達不可能なereplicationンスタンスは無視されます。このセクションでは,クラスタからの欠落しているインスタンスの強制的な削除に関する警告は,この解決操作を強制するこの手法にも同様に適用されます。

集群.dissolve ()操作で互动オプションを使用して,MySQL壳が実行されているモードをオーバーライドすることもできます。たとえば,バッチスクリプトの実行時に対話型プロンプトが表示されるようにします。例:

mysql-js >集群.dissolve({互动:真})

dba.gtidWaitTimeoutMySQL Shellオプションでは,集群.dissolve ()操作がクラスタからターゲットインスタンスを削除する前にクラスタトランザクションの適用を待機する時間を構成しますが,これはターゲットインスタンスが在线の場合のみです。削除されるインスタンスのいずれかにクラスタトランザクションが適用されるのを待機しているときにタイムアウトに達すると,強制を除いてエラーが発行されます:真正が使用され,その場合はエラーがスキップされます。

注記

cluster.dissolve ()を発行すると,集群オブジェクトに割り当てられた変数は無効になります。

クラスタトポロジの変更

デフォルトでは,InnoDBクラスタはシングルプライマリモードで実行され,クラスタには読取りおよび書込みクエリー(R / W)を受け入れる単一のプライマリサーバーがあり,クラスタ内の残りのすべてのインスタンスは読取りクエリー(R / O)のみを受け入れます。マルチプライマリモードで実行するようにクラスタを構成すると,クラスタ内のすべてのインスタンスがプライマリになります。読取りクエリ(r / w)の両方を受け入れます。クラスタのすべてのインスタンスでMySQLサーバーバージョン8.0.15以降が実行されている場合は,クラスタがオンラインの間にクラスタのトポロジを変更できます。以前のバジョンでは,構成を変更するためにクラスタを完全に開放して再作成する必要がありました。これは,オンラ邮箱ングル邮箱プの構成で説明されているUDFを介して公開されるグループアクションコーディネータを使用するため,オンライングループを構成するためのルールに従う必要があります。

注記

マルチプラ邮箱マリモ邮箱ドは拡張モ邮箱ドとみなされます

通常,単一プライマリクラスタは,予期しない停止などが原因で,現在のプライマリが予期せずクラスタを離れたときに新しいプライマリを選択します。選択プロセスは通常、新しいプラ以及マリになる現在のセカンダリを選択するために使用されます。選択プロセスをオバラeconドし,特定のサeconマリにするには,集群.setPrimaryInstance (实例関数を使用します。ここで,实例は,新しいプラ电子书阅读器マリになる电子书阅读器ンスタンスへの接続を指定します。これにより,基礎となるグループレプリケーショングループを構成して,選択プロセスをバイパスして特定のインスタンスを新しいプライマリとして選択できます。

次の操作を使用して,単一プライマリとマルチプライマリの間でクラスタが実行されているモード(トポロジとも呼ばれる)を変更できます:

  • 集群.switchToMultiPrimaryMode ():クラスタをマルチプラ邮箱マリモ邮箱ドに切り替えます。すべての邮箱ンスタンスがプラ邮箱マリになります。

  • 集群.switchToSinglePrimaryMode ([实例]):クラスタをシングルプラ邮箱マリモ邮箱ドに切り替えます。实例が指定されている場合は,プラ,マリになり,他のすべての,ンスタンスがセカンダリになります。实例が指定されていない場合,新しいプライマリはメンバーの重みが最も高いインスタンス(およびメンバーの重みが結び付けられている場合はUUIDが最も低いインスタンス)です。