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

メタデータのタグ付け

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

6.2 MySQL InnoDB クラスタ

6.2.9 メタデータのタグ付け

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

メタデータのタグ付け

5. クラスタからシードインスタンスを削除

6. シードインスタンスで mysqld を停止し、強制 report_host 設定を削除するか (ステップ 2)、メタデータ値に以前格 納されていた値で置き換えます。

7. シードインスタンスを再起動し、Cluster.addInstance() を使用してクラスタに追加しなおします

これにより、クラスタを最新の MySQL Shell バージョンにスムーズかつ完全にアップグレードできます。 ユースケー スに依存する別の可能性は、クラスタの作成時にメタデータスキーマに登録されているものと一致するように、すべ てのクラスタメンバーで report_host の値を設定することです。

メタデータのタグ付け

クラスタインスタンスでのタグの設定

インスタンスレベルでタグを設定できます。これにより、たとえば、インスタンスを使用不可としてマークして、ア プリケーションおよびルーターでオフラインとして処理できます。 Cluster.setInstanceOption(instance, option, value) 操作を使用して、インスタンスのタグの値を設定します。 instance 引数は、ターゲットインスタンスへの接続文字 列です。 option 引数は、namespace:option 形式の文字列である必要があります。 value パラメータは、指定した

namespace の option に割り当てる必要がある値です。 値が null の場合、option は指定された namespace から削除

されます。 クラスタに属するインスタンスの場合、setInstanceOption() 操作は tag ネームスペースのみを受け入れま す。 その他のネームスペースは ArgumentError になります。

たとえば、myCluster インスタンス ic-1 でタグ test を true に設定するには、次のように発行します:

mysql-js> myCluster.setInstanceOption(icadmin@ic-1:3306, "tag:test", true);

ルーティングからのインスタンスの削除

AdminAPI と MySQL Router が連携して動作している場合、インスタンスを非表示としてマークし、ルーティングか ら削除できる特定のタグがサポートされます。次に、MySQL Router は、このようなタグ付けされたインスタンスを ルーティング先候補リストから除外します。 これにより、サーバーインスタンスを安全にオフラインにできるため、

たとえばサーバーのアップグレードや構成の変更などのメンテナンスタスクの実行中に、アプリケーションおよび MySQL Router でサーバーインスタンスを無視できます。

_hidden タグが true に設定されている場合、クライアントアプリケーションで使用可能な宛先のリストからイン

スタンスを除外するように MySQL Router に指示します。 インスタンスはオンラインのままですが、新しい着信 接続のためにルーティングされません。 _disconnect_existing_sessions_when_hidden タグは、インスタンスへの 既存の接続を閉じる方法を制御します。 このタグは true とみなされ、_hidden タグが true の場合、InnoDB クラ スタ または InnoDB ReplicaSet に対してブートストラップされた MySQL Routers に対して、インスタンスから 既存の接続を切断するように指示します。 _disconnect_existing_sessions_when_hidden が false の場合、_hidden が true であれば、インスタンスへの既存のクライアント接続はクローズされません。 予約済の_hidden およ

び_disconnect_existing_sessions_when_hidden タグはインスタンスに固有であり、クラスタレベルでは使用できませ ん。

警告

use_gr_notifications MySQL Router オプションが有効な場合、デフォルトで 60 秒に設定さ

れます。 つまり、タグを設定すると、MySQL Router が変更を検出するまで最大 60 秒かか ります。 待機時間を短縮するには、use_gr_notifications を小さい値に変更します。

たとえば、myCluster に割り当てられた InnoDB クラスタ の一部である ic-1 インスタンスをルーティング先から削除 するとします。 setInstanceOption() 操作を使用して、_hidden および_disconnect_existing_sessions_when_hidden タ グを有効にします:

mysql-js> myCluster.setInstanceOption(icadmin@ic-1:3306, "tag:_hidden", true);

オプションをチェックすることで、メタデータの変更を確認できます。 たとえば、ic-1 に加えられた変更は、次のよ うにオプションに表示されます:

mysql-js> myCluster.options() { "cluster": {

"name": "test1", "tags": { "ic-1:3306": [ {

"option": "_disconnect_existing_sessions_when_hidden", "value": true

}, {

"option": "_hidden", "value": true }

],

"ic-2:3306": [], "ic-3:3306": [], "global": []

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

メタデータのタグ付け

} } }

MySQL Router がメタデータの変更を検出したことを確認するには、ログファイルを表示します。 ic-1 に対する変更 を検出した MySQL Router には、次のような変更が表示されます:

2020-07-03 16:32:16 metadata_cache INFO [7fa9d164c700] Potential changes detected in cluster 'testCluster' after metadata refresh 2020-07-03 16:32:16 metadata_cache INFO [7fa9d164c700] view_id = 4, (3 members)

2020-07-03 16:32:16 metadata_cache INFO [7fa9d164c700] ic-1:3306 / 33060 - mode=RW 2020-07-03 16:32:16 metadata_cache INFO [7fa9d164c700] ic-1:3306 / 33060 - mode=RO

2020-07-03 16:32:16 metadata_cache INFO [7fa9d164c700] ic-1:3306 / 33060 - mode=RO hidden=yes disconnect_when_hidden=yes

2020-07-03 16:32:16 routing INFO [7fa9d164c700] Routing routing:testCluster_x_ro listening on 64470 got request to disconnect invalid connections: metadata change 2020-07-03 16:32:16 routing INFO [7fa9d164c700] Routing routing:testCluster_x_rw listening on 64460 got request to disconnect invalid connections: metadata change 2020-07-03 16:32:16 routing INFO [7fa9d164c700] Routing routing:testCluster_rw listening on 6446 got request to disconnect invalid connections: metadata change 2020-07-03 16:32:16 routing INFO [7fa9d164c700] Routing routing:testCluster_ro listening on 6447 got request to disconnect invalid connections: metadata change

インスタンスをオンラインに戻すには、setInstanceOption() 操作を使用してタグを削除し、MySQL Router によって インスタンスがルーティング先に自動的に追加され、アプリケーションに対してオンラインになります。 例:

mysql-js> myCluster.setInstanceOption(icadmin@ic-1:3306, "tag:_hidden", false);

オプションを再度チェックして、メタデータの変更を確認します:

mysql-js> myCluster.options() { "cluster": {

"name": "test1", "tags": { "ic-1:3306": [ {

"option": "_disconnect_existing_sessions_when_hidden", "value": true

}, {

"option": "_hidden", "value": false }

],

"ic-2:3306": [], "ic-3:3306": [], "global": []

} } }

クラスタでのタグの設定

Cluster.setOption(option, value) 操作では、クラスタ全体のネームスペースオプションの値を変更できます。 option 引

数は、namespace:option 形式の文字列である必要があります。 value パラメータは、指定した namespace の option に割り当てられる値です。 値が null の場合、option は指定された namespace から削除されます。 クラスタの場 合、setOption() 操作は tag ネームスペースを受け入れます。 その他のネームスペースは ArgumentError になります。

ヒント

クラスタレベルで設定されたタグは、インスタンスレベルで設定されたタグをオーバーライ ドしません。 Cluster.setOption() を使用して、インスタンスレベルで設定されたすべてのタ グを削除することはできません。

すべてのインスタンスをオンラインにする必要はなく、クラスタにクォーラムがあることのみが必要です。

myCluster に割り当てられた InnoDB クラスタ に location タグを US East に設定してタグ付けするには、次のコマン

ドを発行します:

mysql-js> myCluster.setOption("tag:location", "US East") mysql-js> myCluster.options()

{ "cluster": { "name": "test1", "tags": { "ic-1:3306": [],

InnoDB クラスタ のヒント

"ic-2:3306": [], "ic-3:3306": [], "global": [ {

"option": "location:", "value": "US East"

} ] } } }

ユーザー定義タグ付け

AdminAPI では、特定のクラスタ、ReplicaSet またはインスタンスに関連付けられたキーと値のペアに情報を格納で きる tag ネームスペースがサポートされています。 tag ネームスペースの下のオプションは制約されません。つま り、有効な MySQL ASCII 識別子であるかぎり、選択した情報でタグ付けできます。 名前が次の構文に従っているか ぎり、タグには任意の名前と値を使用できます: _または文字の後に英数字と_文字が続きます。

namespace オプションは、namespace:option という形式のコロン区切りの文字列です。ここで、namespace は

ネームスペースの名前、option は実際のオプション名です。 タグは、インスタンスレベル、クラスタレベルまたは ReplicaSet レベルで設定および削除できます。

タグ名には、文字またはアンダースコアで始まり、オプションで英数字および_文字が続く任意の値

(^[a-zA-Z_][0-9a-zA-Z_]* など) を指定できます。 _のアンダースコア文字で始めることができるのは組込みタグのみです。

カスタムタグの使用方法はユーザーによって異なります。 クラスタにカスタムタグを設定して、そのタグが動作して いるリージョンをマークできます。 たとえば、クラスタ上で EMEA の値を持つ location という名前のカスタムタグを 設定できます。

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