MySQL 8.0 リファレンスマニュアル


18.4.1.2 グループモードの変更

このセクションでは、グループが実行されているモード (単一プライマリまたはマルチプライマリ) を変更する方法について説明します。 グループモードの変更に使用される関数は、任意のメンバーで実行できます。

シングルプライマリモードへの変更

group_replication_switch_to_single_primary_mode() UDF を使用して、マルチプライマリモードで実行されているグループをシングルプライマリモードに変更するには、次を発行します:

SELECT group_replication_switch_to_single_primary_mode()

シングルプライマリモードに変更すると、シングルプライマリモード (group_replication_enforce_update_everywhere_checks=OFF) での必要に応じて、すべてのグループメンバーで厳密な整合性チェックも無効になります。

文字列が渡されない場合、結果の単一プライマリグループでの新しいプライマリの選択は、セクション18.1.3.1「シングルプライマリモード」 で説明されている選択ポリシーに従います。 選択プロセスを上書きし、マルチプライマリグループの特定のメンバーをプロセスの新しいプライマリとして構成するには、メンバーの server_uuid を取得して group_replication_switch_to_single_primary_mode() に渡します。 たとえば、次のコマンドを発行します:

SELECT group_replication_switch_to_single_primary_mode(member_uuid);

8.0.17 から MySQL Server バージョンを実行しているメンバーで UDF を発行し、すべてのメンバーが MySQL Server バージョン 8.0.17 以上を実行している場合、パッチバージョンに基づいて、グループ内の最下位の MySQL Server バージョンを実行している新規プライマリメンバーのみを指定できます。 この保護策は、グループが新しい機能との互換性を維持するために適用されます。 新しいプライマリメンバーを指定しない場合、選択プロセスではグループメンバーのパッチバージョンが考慮されます。

いずれかのメンバーが MySQL 8.0.13 と MySQL 8.0.16 の間で MySQL Server バージョンを実行している場合、この保護策はグループに適用されず、新しいプライマリメンバーを指定できますが、グループ内で最も低い MySQL Server バージョンを実行しているプライマリを選択することをお薦めします。 新しいプライマリメンバーを指定しない場合、選択プロセスではグループメンバーのメジャーバージョンのみが考慮されます。

アクションの実行中に、次のコマンドを発行して進行状況を確認できます:

SELECT event_name, work_completed, work_estimated FROM performance_schema.events_stages_current WHERE event_name LIKE "%stage/group_rpl%";
+----------------------------------------------------------------------------+----------------+----------------+
| event_name                                                                 | work_completed | work_estimated |
+----------------------------------------------------------------------------+----------------+----------------+
| stage/group_rpl/Primary Switch: waiting for pending transactions to finish |              4 |             20 |
+----------------------------------------------------------------------------+----------------+----------------+
マルチプライマリモードへの変更

group_replication_switch_to_multi_primary_mode() UDF を使用して、単一プライマリモードで実行されているグループをマルチプライマリモードに変更するには、次のように発行します:

SELECT group_replication_switch_to_multi_primary_mode()

データの安全性と一貫性を確保するために調整されたグループ操作の後、グループに属するすべてのメンバーがプライマリになります。

シングルプライマリモードで実行されていたグループをマルチプライマリモードで実行するように変更すると、MySQL 8.0.17 以上を実行しているメンバーは、グループに存在する最低バージョンより上位の MySQL サーバーバージョンを実行している場合、自動的に読取り専用モードになります。 MySQL 8.0.16 以下を実行しているメンバーはこのチェックを実行せず、常に読取り/書込みモードになります。

アクションの実行中に、次のコマンドを発行して進行状況を確認できます:

SELECT event_name, work_completed, work_estimated FROM performance_schema.events_stages_current WHERE event_name LIKE "%stage/group_rpl%";
+----------------------------------------------------------------------+----------------+----------------+
| event_name                                                           | work_completed | work_estimated |
+----------------------------------------------------------------------+----------------+----------------+
| stage/group_rpl/Multi-primary Switch: applying buffered transactions |              0 |              1 |
+----------------------------------------------------------------------+----------------+----------------+

関連キーワード:  グループ, メンバー, 実行, バージョン, group, 変更, リカバリ, 分散, replication, シングルプライマリモード