このページは機械翻訳したものです。
このセクションでは、アップグレードプロセスのトラブルシューティングについて説明します。
MySQL Shell は、指定された接続パラメータのホスト値を、AdminAPI 操作、つまりメタデータへのインスタンスの登録 (dba.createCluster()
および
操作) に使用されるターゲットホスト名として使用します。 ただし、接続パラメータに使用される実際のホストは、Group Replication によって使用または報告される Cluster
.addInstance()hostname
と一致しない可能性があります。この場合は、定義時に report_host
システム変数の値が使用されます (つまり、NULL
ではありません)。それ以外の場合は、hostname
の値が使用されます。 したがって、AdminAPI は、インスタンス接続パラメータのホスト値を使用するかわりに、同じロジックに従ってメタデータにターゲットインスタンスを登録し、インスタンスの group_replication_local_address
変数のデフォルト値として登録するようになりました。 report_host
変数が空に設定されている場合、グループレプリケーションではホストに空の値が使用されますが、AdminAPI では (dba.checkInstanceConfiguration()
, dba.configureInstance()
, dba.createCluster()
などのコマンドで) ホスト名が使用された値としてレポートされ、これは Group Replication によって報告された値と矛盾しています。 report_host
システム変数に空の値が設定されている場合、エラーが生成されます。 (Bug #28285389)
8.0.16 より前のバージョンの MySQL Shell を使用して作成されたクラスタの場合、バージョン 8.0.16 以上を使用して実行された完全な停止からクラスタを再起動しようとすると、このエラーが発生します。 これは、メタデータ値がインスタンスによって報告された report_host
または hostname
値と一致しないことが原因です。 回避策は次のとおりです:
「seed」 であるインスタンス、つまり最新の GTID セットを持つインスタンスを識別します。
dba.rebootClusterFromCompleteOutage()
操作は、インスタンスがシードであるかどうかを検出し、現行のセッションが最新のインスタンスに接続されていない場合はエラーを生成します。-
report_host
システム変数を、ターゲットインスタンスのメタデータスキーマに格納されている値に設定します。 この値は、クラスタ作成時にインスタンス定義で使用されるhostname:port
ペアです。 この値は、mysql_innodb_cluster_metadata.instances
テーブルをクエリーすることで参照できます。たとえば、次の一連のコマンドを使用してクラスタが作成されたとします:
mysql-js> \c clusterAdmin@localhost:3306 mysql-js> dba.createCluster("myCluster")
したがって、メタデータに格納されるホスト名の値は 「localhost」 であり、そのため、シードで
report_host
を 「localhost」 に設定する必要があります。 シードインスタンスのみを使用してクラスタを再起動します。 対話型プロンプトでは、残りのインスタンスはクラスタに追加されません。
を使用して、他のインスタンスをクラスタに追加します。Cluster
.rescan()クラスタからシードインスタンスを削除
シードインスタンスで mysqld を停止し、強制
report_host
設定を削除するか (ステップ 2)、メタデータ値に以前格納されていた値で置き換えます。シードインスタンスを再起動し、
を使用してクラスタに追加しなおしますCluster
.addInstance()
これにより、クラスタを最新の MySQL Shell バージョンにスムーズかつ完全にアップグレードできます。 ユースケースに依存する別の可能性は、クラスタの作成時にメタデータスキーマに登録されているものと一致するように、すべてのクラスタメンバーで report_host
の値を設定することです。