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

メタデータのタグ付け

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

6.2 MySQL InnoDB クラスタ

6.2.9 メタデータのタグ付け

メタデータのタグ付け

mysql-js> \c clusterAdmin@localhost:3306 mysql-js> dba.createCluster("myCluster")

したがって、メタデータに格納されるホスト名の値は 「localhost」 であり、そのため、シードで report_host を 「localhost」 に設定する必要があります。

3. シードインスタンスのみを使用してクラスタを再起動します。 対話型プロンプトでは、残りのインスタンス はクラスタに追加されません。

4.

Cluster.rescan() を使用して、他のインスタンスをクラスタに追加します。

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

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

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

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

メタデータのタグ付け

} } }

このクラスタには、値 US East を持つ location という名前のグローバルタグがあり、インスタンス ic-1 にタグが 付けられています。

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

インスタンスレベルでタグを設定できます。これにより、たとえば、インスタンスを使用不可としてマークし て、アプリケーションおよびルーターでオフラインとして処理できます。 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": [], "ic-2:3306": [],

InnoDB クラスタ のヒント

"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 (ページ 91-94)