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 という名前のカスタムタグを 設定できます。