Documentation Home
MySQL Shell 8.0
Download this Manual
PDF (US Ltr) - 1.4Mb
PDF (A4) - 1.4Mb
HTML Download (TGZ) - 449.4Kb
HTML Download (Zip) - 463.6Kb


MySQL Shell 8.0  /  ...  /  InnoDB クラスタ の監視

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

6.2.3 InnoDB クラスタ の監視

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

Cluster.describe() の使用

InnoDB クラスタ 自体の構造に関する情報を取得するには、Cluster.describe() 関数を使用します:

mysql-js> cluster.describe();
{
    "clusterName": "testCluster",
    "defaultReplicaSet": {
        "name": "default",
        "topology": [
            {
                "address": "ic-1:3306",
                "label": "ic-1:3306",
                "role": "HA"
            },
            {
                "address": "ic-2:3306",
                "label": "ic-2:3306",
                "role": "HA"
            },
            {
                "address": "ic-3:3306",
                "label": "ic-3:3306",
                "role": "HA"
            }
        ]
    }
}

この関数の出力には、すべての構成情報などを含む InnoDB クラスタ の構造が表示されます。 アドレス、ラベルおよびロールの値は、Cluster.status() によるクラスタステータスの確認 で説明されている値と一致します。

Cluster.status() によるクラスタステータスの確認

クラスタオブジェクトには、クラスタの実行方法を確認できる status() メソッドが用意されています。 InnoDB クラスタ のステータスを確認するには、そのインスタンスに接続して InnoDB クラスタ オブジェクトへの参照を取得する必要があります。 ただし、クラスタの構成を変更する場合は、R/W インスタンスに接続する必要があります。 status() を発行すると、接続しているサーバーインスタンスが認識しているクラスタのビューに基づいてクラスタのステータスが取得され、ステータスレポートが出力されます。

重要

クラスタ内のインスタンスの状態は、ステータスレポートに表示される情報に直接影響します。 したがって、接続しているインスタンスのステータスが ONLINE であることを確認してください。

InnoDB クラスタ の実行方法の詳細は、クラスタ status() メソッドを使用してください:

mysql-js> var cluster = dba.getCluster()
mysql-js> cluster.status()
{
    "clusterName": "testcluster",
    "defaultReplicaSet": {
        "name": "default",
        "primary": "ic-1:3306",
        "ssl": "REQUIRED",
        "status": "OK",
        "statusText": "Cluster is ONLINE and can tolerate up to ONE failure.",
        "topology": {
            "ic-1:3306": {
                "address": "ic-1:3306",
                "mode": "R/W",
                "readReplicas": {},
                "role": "HA",
                "status": "ONLINE"
            },
            "ic-2:3306": {
                "address": "ic-2:3306",
                "mode": "R/O",
                "readReplicas": {},
                "role": "HA",
                "status": "ONLINE"
            },
            "ic-3:3306": {
                "address": "ic-3:3306",
                "mode": "R/O",
                "readReplicas": {},
                "role": "HA",
                "status": "ONLINE"
            }
        }
    },
    "groupInformationSourceMember": "mysql://icadmin@ic-1:3306"
}

Cluster.status() の出力には、次の情報が表示されます:

  • clusterName: dba.createCluster() 中にこのクラスタに割り当てられた名前。

  • defaultReplicaSet : InnoDB クラスタ に属し、データセットを含むサーバーインスタンス。

  • primary: クラスタがシングルプライマリモードで動作している場合にのみ表示されます。 現在のプライマリインスタンスのアドレスを表示します。 このフィールドが表示されない場合、クラスタはマルチプライマリモードで動作しています。

  • ssl: セキュアな接続がクラスタで使用されているかどうか。 createCluster() または addInstance() 中に memberSslMode オプションがどのように構成されたかに応じて、REQUIRED または DISABLED の値が表示されます。 このパラメータによって返される値は、インスタンス上の group_replication_ssl_mode サーバー変数の値に対応します。 クラスタの保護を参照してください。

  • status: クラスタのこの要素のステータス。 クラスタ全体について、このクラスタによって提供される高可用性について説明します。 ステータスは次のいずれかです:

    • ONLINE: インスタンスはオンラインで、クラスタに参加しています。

    • OFFLINE: インスタンスは他のインスタンスへの接続を失いました。

    • RECOVERING: インスタンスは、ONLINE メンバーになる前に必要なトランザクションを取得して、クラスタと同期しようとしています。

    • UNREACHABLE: インスタンスはクラスタとの通信を失いました。

    • ERROR: リカバリフェーズ中またはトランザクションの適用中にインスタンスでエラーが発生しました。

      重要

      インスタンスが ERROR 状態になると、super_read_only オプションは ON に設定されます。 ERROR の状態のままにするには、super_read_only=OFF を使用してインスタンスを手動で構成する必要があります。

    • (MISSING): 構成済クラスタの一部であるが、現在使用できないインスタンスの状態。

      注記

      MISSING の状態は InnoDB クラスタ に固有であり、Group Replication によって生成される状態ではありません。MySQL Shell はこの状態を使用して、メタデータに登録されているが、ライブクラスタビューに見つからないインスタンスを示します。

  • topology: クラスタに追加されたインスタンス。

  • Host name of instance : インスタンスのホスト名 (localhost:3310 など)。

  • role: このインスタンスがクラスタ内で提供する機能。 現在は HA のみで、高可用性を実現しています。

  • mode: サーバーが読取り/書込み ("R/W") か読取り専用 ("R/O") か。 バージョン 8.0.17 から、これはインスタンス上の super_read_only 変数の現在の状態、およびクラスタにクォーラムがあるかどうかから導出されます。 以前のバージョンでは、mode の値は、インスタンスがプライマリインスタンスとして機能していたかセカンダリインスタンスとして機能していたかから導出されていました。 通常、インスタンスがプライマリの場合、モードは R/W で、インスタンスがセカンダリの場合、モードは R/O です。 表示可能なクォーラムがないクラスタ内のインスタンスは、super_read_only 変数の状態に関係なく、R/O としてマークされます。

  • groupInformationSourceMember: URI のような接続文字列として表示される、クラスタに関する情報の取得に使用される内部接続。 通常は、クラスタの作成に最初に使用される接続です。

クラスタの詳細を表示するには、extended オプションを使用します。 バージョン 8.0.17 からは、extended オプションで整数またはブール値がサポートされます。 Cluster.status({'extended':value}) が提供する追加情報を構成するには、次の値を使用:

  • 0: 追加情報を無効にします (デフォルト)

  • 1: には、Group Replication Protocol Version、Group name、クラスタメンバー UUID、クラスタメンバー役割よび Group Replication によって報告される状態、およびフェンシングされたシステム変数のリストに関する情報が含まれています

  • 2: 接続および適用者によって処理されたトランザクションに関する情報が含まれます

  • 3: には、各クラスタメンバーによって実行されるレプリケーションに関するより詳細な統計が含まれます。

ブール値を使用して extended を設定することは、整数値 0 および 1 を設定することと同等です。 8.0.17 より前のバージョンでは、extended オプションはブールのみでした。 同様に、以前のバージョンでは、queryMembers ブールオプションを使用して、クラスタ内のインスタンスの詳細情報を提供していました。これは、extended を 3 に設定することと同等です。 queryMembers オプションは非推奨であり、将来のリリースで削除される予定です。

Cluster.status({'extended':1}) を発行するか、extended オプションが true に設定されている場合、出力には次のものが含まれます:

  • defaultReplicaSet オブジェクトの次の追加属性:

    • GRProtocolVersion は、クラスタで使用されるグループレプリケーションプロトコルバージョンです。

      ヒント

      InnoDB クラスタ は、自動的に使用される Group Replication Protocol のバージョンを管理します。詳細は、InnoDB クラスタ およびグループのレプリケーションプロトコル を参照してください。

    • groupName はグループ名 (UUID) です。

  • topology オブジェクトの各オブジェクトについて、次の追加属性:

    • fenceSysVars は、AdminAPI によって構成されたフェンシングされたシステム変数の名前を含むリストです。 現在考慮されるフェンシングされたシステム変数は、read_onlysuper_read_only および offline_mode です。 システム変数は、その値に関係なくリストされます。

    • インスタンスごとの instanceErrors。インスタンスで検出可能な診断情報が表示されます。 たとえば、インスタンスがセカンダリで、super_read_only 変数が ON に設定されていない場合、警告が表示されます。 この情報は、エラーのトラブルシューティングに使用できます。

    • memberId 各クラスタメンバー UUID。

    • Group Replication プラグインによって報告されたメンバーロールを memberRole します。replication_group_members テーブルの MEMBER_ROLE カラムを参照してください。

    • Group Replication プラグインによって報告されたメンバー状態を memberState します。replication_group_members テーブルの MEMBER_STATE カラムを参照してください。

リカバリおよび通常のトランザクションの I/O,アプライヤワーカースレッド統計とラグ、適用側コーディネータ統計 (パラレルレプリケーションアプライヤが有効な場合)、エラー、および受信側と適用側のスレッドからのその他の情報に関する情報を表示するには、extended に 2 または 3 の値を使用します。 これらの値を使用すると、クラスタ内の各インスタンスへの接続がオープンされ、追加のインスタンス固有の統計をクエリーすることができます。 出力に含まれる正確な統計は、インスタンスの状態と構成およびサーバーバージョンによって異なります。 この情報は、replication_group_member_stats テーブルに示されている情報と一致します。詳細は、一致するカラムの説明を参照してください。 ONLINE であるインスタンスには、出力に transactions セクションが含まれます。 RECOVERING であるインスタンスには、出力に recovery セクションが含まれます。 どちらの場合も、extended を 2 に設定すると、これらのセクションには次の内容を含めることができます:

  • appliedCount: COUNT_TRANSACTIONS_REMOTE_APPLIED を参照

  • checkedCount: COUNT_TRANSACTIONS_CHECKED を参照

  • committedAllMembers: TRANSACTIONS_COMMITTED_ALL_MEMBERS を参照

  • conflictsDetectedCount: COUNT_CONFLICTS_DETECTED を参照

  • inApplierQueueCount: COUNT_TRANSACTIONS_REMOTE_IN_APPLIER_QUEUE を参照

  • inQueueCount: COUNT_TRANSACTIONS_IN_QUEUE を参照

  • lastConflictFree: LAST_CONFLICT_FREE_TRANSACTION を参照

  • proposedCount: COUNT_TRANSACTIONS_LOCAL_PROPOSED を参照

  • rollbackCount: COUNT_TRANSACTIONS_LOCAL_ROLLBACK を参照

extended を 3 に設定すると、connection セクションに replication_connection_status テーブルの情報が表示されます。 値 3 は、非推奨の queryMembers オプションを true に設定することと同等です。 connection セクションには、次のものを含めることができます:

currentlyQueueing セクションには、現在キューに入れられているトランザクションに関する情報が表示されます:

  • immediateCommitTimestamp: QUEUEING_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP を参照

  • immediateCommitToNowTime: QUEUEING_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP から NOW() を引いた値を参照

  • originalCommitTimestamp: QUEUEING_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP を参照

  • originalCommitToNowTime: QUEUEING_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP から NOW() を引いた値を参照

  • startTimestamp: QUEUEING_TRANSACTION_START_QUEUE_TIMESTAMP を参照

  • transaction: QUEUEING_TRANSACTION を参照

  • lastHeartbeatTimestamp: LAST_HEARTBEAT_TIMESTAMP を参照

lastQueued セクションには、最後にキューに入れられたトランザクションに関する情報が表示されます:

  • endTimestamp: LAST_QUEUED_TRANSACTION_END_QUEUE_TIMESTAMP を参照

  • immediateCommitTimestamp: LAST_QUEUED_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP を参照

  • immediateCommitToEndTime: LAST_QUEUED_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP マイナス NOW()

  • originalCommitTimestamp: LAST_QUEUED_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP を参照

  • originalCommitToEndTime: LAST_QUEUED_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP マイナス NOW()

  • queueTime: LAST_QUEUED_TRANSACTION_END_QUEUE_TIMESTAMP マイナス LAST_QUEUED_TRANSACTION_START_QUEUE_TIMESTAMP

  • startTimestamp: LAST_QUEUED_TRANSACTION_START_QUEUE_TIMESTAMP を参照

  • transaction: LAST_QUEUED_TRANSACTION を参照

  • receivedHeartbeats: COUNT_RECEIVED_HEARTBEATS を参照

  • receivedTransactionSet: RECEIVED_TRANSACTION_SET を参照

  • threadId: THREAD_ID を参照

マルチスレッドレプリカを使用しているインスタンスには、ワーカースレッドに関する情報を含む workers セクションがあり、replication_applier_status_by_worker テーブルに表示される情報と一致します。

lastApplied セクションには、ワーカーによって最後に適用されたトランザクションに関する次の情報が表示されます:

  • applyTime: LAST_APPLIED_TRANSACTION_END_APPLY_TIMESTAMP から LAST_APPLIED_TRANSACTION_START_APPLY_TIMESTAMP を引いた値を参照

  • endTimestamp: LAST_APPLIED_TRANSACTION_END_APPLY_TIMESTAMP を参照

  • immediateCommitTimestamp: LAST_APPLIED_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP を参照

  • immediateCommitToEndTime: LAST_APPLIED_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP から NOW() を引いた値を参照

  • originalCommitTimestamp: LAST_APPLIED_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP を参照

  • originalCommitToEndTime: LAST_APPLIED_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP から NOW() を引いた値を参照

  • startTimestamp: LAST_APPLIED_TRANSACTION_START_APPLY_TIMESTAMP を参照

  • transaction: LAST_APPLIED_TRANSACTION を参照

currentlyApplying セクションには、ワーカーによって現在適用されているトランザクションに関する次の情報が表示されます:

  • immediateCommitTimestamp: APPLYING_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP を参照

  • immediateCommitToNowTime: APPLYING_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP から NOW() を引いた値を参照

  • originalCommitTimestamp: APPLYING_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP を参照

  • originalCommitToNowTime: APPLYING_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP から NOW() を引いた値を参照

  • startTimestamp: APPLYING_TRANSACTION_START_APPLY_TIMESTAMP を参照

  • transaction: APPLYING_TRANSACTION を参照

lastProcessed セクションには、ワーカーが最後に処理したトランザクションに関する次の情報が表示されます:

  • bufferTime: LAST_PROCESSED_TRANSACTION_END_BUFFER_TIMESTAMP マイナス LAST_PROCESSED_TRANSACTION_START_BUFFER_TIMESTAMP

  • endTimestamp: LAST_PROCESSED_TRANSACTION_END_BUFFER_TIMESTAMP を参照

  • immediateCommitTimestamp: LAST_PROCESSED_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP を参照

  • immediateCommitToEndTime: LAST_PROCESSED_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP マイナス LAST_PROCESSED_TRANSACTION_END_BUFFER_TIMESTAMP

  • originalCommitTimestamp: LAST_PROCESSED_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP を参照

  • originalCommitToEndTime: LAST_PROCESSED_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP マイナス LAST_PROCESSED_TRANSACTION_END_BUFFER_TIMESTAMP

  • startTimestamp: LAST_PROCESSED_TRANSACTION_START_BUFFER_TIMESTAMP を参照

  • transaction: LAST_PROCESSED_TRANSACTION を参照

パラレルレプリケーションアプライヤが有効になっている場合は、transactions または recovery の workers 配列内のオブジェクト数が構成済ワーカー数と一致し、追加のコーディネータオブジェクトが含まれます。 表示される情報は、replication_applier_status_by_coordinator テーブルの情報と一致します。 オブジェクトには、次のものを含めることができます:

currentlyProcessing セクションには、ワーカーが処理しているトランザクションに関する次の情報が表示されます:

  • immediateCommitTimestamp: PROCESSING_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP を参照

  • immediateCommitToNowTime: PROCESSING_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP マイナス NOW()

  • originalCommitTimestamp: PROCESSING_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP を参照

  • originalCommitToNowTime: PROCESSING_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP マイナス NOW()

  • startTimestamp: PROCESSING_TRANSACTION_START_BUFFER_TIMESTAMP を参照

  • transaction: PROCESSING_TRANSACTION を参照

replication_applier_status_by_worker テーブルでエラーが検出された場合、worker オブジェクトには次の情報が含まれます:

  • lastErrno: LAST_ERROR_NUMBER を参照

  • lastError: LAST_ERROR_MESSAGE を参照

  • lastErrorTimestamp: LAST_ERROR_TIMESTAMP を参照

replication_connection_status テーブルでエラーが検出された場合、connection オブジェクトには次の情報が含まれます:

  • lastErrno: LAST_ERROR_NUMBER を参照

  • lastError: LAST_ERROR_MESSAGE を参照

  • lastErrorTimestamp: LAST_ERROR_TIMESTAMP を参照

replication_applier_status_by_coordinator テーブルでエラーが検出された場合、coordinator オブジェクトには次の情報が含まれます:

  • lastErrno: LAST_ERROR_NUMBER を参照

  • lastError: LAST_ERROR_MESSAGE を参照

  • lastErrorTimestamp: LAST_ERROR_TIMESTAMP を参照

リカバリ操作の監視

Cluster.status() の出力には、RECOVERING 状態のインスタンスのリカバリ操作の進行状況に関する情報が表示されます。 MySQL クローンまたは増分リカバリのいずれかを使用してリカバリするインスタンスの情報が表示されます。 次のフィールドをモニターします:

  • recoveryStatusText フィールドには、使用されているリカバリのタイプに関する情報が含まれます。 MySQL クローンが機能している場合、このフィールドには「クローニング進行中」と表示されます。 増分リカバリが機能している場合、このフィールドには「分散リカバリの進行中」と表示されます。

  • MySQL クローンが使用されている場合、recovery フィールドには次のフィールドを含むディクショナリが含まれます:

    • cloneStartTime: クローンプロセスの開始のタイムスタンプ

    • cloneState: クローン進行状況の状態

    • currentStage: クローンプロセスが到達した現在のステージ

    • currentStageProgress: 現在のステージの進行状況 (完了率)

    • currentStageState: 現在のステージ状態

    簡潔にするために切り捨てられた Cluster.status() 出力の例:

    ...
    "recovery": {
    "cloneStartTime": "2019-07-15 12:50:22.730",
    "cloneState": "In Progress",
    "currentStage": "FILE COPY",
    "currentStageProgress": 61.726837675213865,
    "currentStageState": "In Progress"
    },
    "recoveryStatusText": "Cloning in progress",
    ...
  • 増分リカバリが使用されており、extended オプションが 1 以上に設定されている場合、recovery フィールドには次のフィールドを含むディクショナリが含まれます:

    • state: group_replication_recovery チャネルの状態

    • recoveryChannel : 増分リカバリを実行しているインスタンス、またはリカバリチャネルのステータスがオフでないインスタンスに対して表示されます。 増分リカバリでは受信者スレッドを使用してソースからトランザクションを受信し、適用者スレッドでは受信したトランザクションをインスタンスに適用します。 次の情報が表示されます:

      • applierQueuedTransactionSetSize: 適用を待機している、現在キューに入っているトランザクションの数。

      • applierState: レプリケーションアプライアンスの現在の状態 (ON または OFF)。

      • applierStatus: アプライヤスレッドの現在のステータス。 applierThreadState フィールドに表示される状態の集計。 次のいずれかを指定できます:

        • APPLIED_ALL: 適用を待機中のキュー済トランザクションはありません

        • APPLYING: 適用中のトランザクションがあります

        • ON: スレッドは接続されており、キューに入っているトランザクションはありません

        • ERROR: トランザクションの適用中にエラーが発生しました

        • OFF: アプライヤスレッドが無効です

      • applierThreadState: 任意の適用者スレッドの現在の状態。 アプライヤスレッドが実行している処理に関する詳細情報を提供します。 詳細は、レプリケーション SQL スレッドの状態を参照してください。

      • receiverStatus: 受信者スレッドの現在のステータス。 receiverThreadState フィールドに表示される状態の集計。 次のいずれかを指定できます:

        • ON: 受信側スレッドは正常に接続され、受信する準備ができています

        • CONNECTING: 受信者スレッドがソースに接続しています

        • ERROR: トランザクションの受信中にエラーが発生しました

        • OFF: 受信者スレッドが正常に切断されました

      • receiverThreadState: 受信者スレッドの現在の状態。 受信者スレッドが実行している処理に関する詳細情報を提供します。 詳細は、レプリケーション I/O スレッドの状態を参照してください。

      • source: 適用されるトランザクションのソース。

    簡潔にするために切り捨てられた Cluster.status() 出力の例:

    ...
    "recovery": {
                        "recoveryChannel": {
                            "applierQueuedTransactionSetSize": 2284, 
                            "applierStatus": "APPLYING", 
                            "applierThreadState": "Opening tables", 
                            "receiverStatus": "ON", 
                            "receiverThreadState": "Queueing master event to the relay log", 
                            "source": "ic-2:3306"
                        }, 
                        "state": "ON"
                    },
    ...

InnoDB クラスタ およびグループのレプリケーションプロトコル

MySQL 8.0.16 から、グループレプリケーションにはグループの通信プロトコルの概念があります。バックグラウンド情報は、グループ通信プロトコルバージョンの設定 を参照してください。 Group Replication 通信プロトコルのバージョンは通常、明示的に管理する必要があり、グループでサポートする最も古い MySQL Server バージョンに対応するように設定する必要があります。 ただし、クラスタトポロジが AdminAPI 操作を使用して変更されるたびに、InnoDB クラスタ はそのメンバーの通信プロトコルバージョンを自動的かつ透過的に管理します。 クラスタでは、現在クラスタの一部であるか参加しているすべてのインスタンスでサポートされている最新の通信プロトコルバージョンが常に使用されます。

  • クラスタに対してインスタンスが追加、削除または再結合されたり、再スキャンまたは再起動操作が実行されると、通信プロトコルバージョンは、現在最も古い MySQL Server バージョンであるインスタンスでサポートされているバージョンに自動的に設定されます。

  • クラスタからインスタンスを削除してローリングアップグレードを実行し、それらをアップグレードしてクラスタに再度追加すると、古い MySQL Server バージョンの残りのインスタンスがアップグレード前にクラスタから削除されたときに、通信プロトコルバージョンが自動的にアップグレードされます。

クラスタで使用されている通信プロトコルのバージョンを確認するには、extended オプションを有効にして Cluster.status() 関数を使用します。 クラスタにクォーラムがあり、アクセスできないクラスタメンバーがない場合、通信プロトコルバージョンが GRProtocolVersion フィールドに返されます。

インスタンスでの MySQL バージョンの確認

次の操作では、インスタンスで実行されている MySQL Server のバージョンに関する情報をレポートできます:

  • Cluster.status()

  • Cluster.describe()

  • Cluster.rescan()

動作は、Cluster オブジェクトセッションの MySQL Server バージョンによって異なります。

  • Cluster.status()

    次のいずれかの要件が満たされると、topology オブジェクトのインスタンス JSON オブジェクトごとに version 文字列属性が返されます:

    • Cluster オブジェクトの現在のセッションは、8.0.11 以降のバージョンです。

    • Cluster オブジェクトの現在のセッションで、バージョン 8.0.11 より前のバージョンが実行されていますが、extended オプションが 3 に設定されています (または、非推奨の queryMemberstrue です)。

    たとえば、バージョン 8.0.16 を実行しているインスタンスでは、次のようになります:

    "topology": {
        "ic-1:3306": {
            "address": "ic-1:3306",
            "mode": "R/W",
            "readReplicas": {},
            "role": "HA",
            "status": "ONLINE",
            "version": "8.0.16"
    }

    たとえば、バージョン 5.7.24 を実行しているインスタンスでは、次のようになります:

    "topology": {
        "ic-1:3306": {
            "address": "ic-1:3306",
            "mode": "R/W",
            "readReplicas": {},
            "role": "HA",
            "status": "ONLINE",
            "version": "5.7.24"
    }
  • Cluster.describe()

    Cluster オブジェクトの現在のセッションがバージョン 8.0.11 以降の場合、topology オブジェクトのインスタンス JSON オブジェクトごとに version 文字列属性が返されます

    たとえば、バージョン 8.0.16 を実行しているインスタンスでは、次のようになります:

    "topology": [
        {
            "address": "ic-1:3306",
            "label": "ic-1:3306",
            "role": "HA",
            "version": "8.0.16"
        }
    ]
  • Cluster.rescan()

    Cluster オブジェクトの現在のセッションがバージョン 8.0.11 以降で、 Cluster.rescan() 操作によってクラスタに属していないインスタンスが検出された場合、newlyDiscoveredInstance オブジェクトのインスタンス JSON オブジェクトごとに version 文字列属性が返されます。

    たとえば、バージョン 8.0.16 を実行しているインスタンスでは、次のようになります:

    "newlyDiscoveredInstances": [
        {
            "host": "ic-4:3306",
            "member_id": "82a67a06-2ba3-11e9-8cfc-3c6aa7197deb",
            "name": null,
            "version": "8.0.16"
        }
    ]