Documentation Home
MySQL 8.0 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 36.1Mb
PDF (A4) - 36.2Mb


MySQL 8.0 リファレンスマニュアル  /  グループレプリケーション  /  グループレプリケーションシステム変数

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

18.8 グループレプリケーションシステム変数

このセクションでは、Group Replication プラグインに固有のシステム変数を一覧表示します。 すべての構成オプションには、接頭辞として "group_replication " が付きます。

Group Replication のほとんどのシステム変数は動的と記述され、その値はサーバーの実行中に変更できます。 ただし、ほとんどの場合、変更が有効になるのは、STOP GROUP_REPLICATION ステートメントの後に START GROUP_REPLICATION ステートメントを使用してグループメンバーでグループレプリケーションを停止して再起動した後のみです。 Group Replication を停止および再起動せずに、次のシステム変数への変更が有効になります:

  • group_replication_advertise_recovery_endpoints

  • group_replication_autorejoin_tries

  • group_replication_consistency

  • group_replication_exit_state_action

  • group_replication_flow_control_applier_threshold

  • group_replication_flow_control_certifier_threshold

  • group_replication_flow_control_hold_percent

  • group_replication_flow_control_max_commit_quota

  • group_replication_flow_control_member_quota_percent

  • group_replication_flow_control_min_quota

  • group_replication_flow_control_min_recovery_quota

  • group_replication_flow_control_mode

  • group_replication_flow_control_period

  • group_replication_flow_control_release_percent

  • group_replication_force_members

  • group_replication_member_expel_timeout

  • group_replication_member_weight

  • group_replication_transaction_size_limit

  • group_replication_unreachable_majority_timeout

グループレプリケーションのほとんどのシステム変数は、グループメンバーごとに異なる値を持つことができます。 次のシステム変数では、トランザクションの不要なロールバック、メッセージ配信の失敗またはメッセージリカバリの失敗を回避するために、グループのすべてのメンバーに同じ値を設定することをお薦めします:

  • group_replication_auto_increment_increment

  • group_replication_communication_max_message_size

  • group_replication_compression_threshold

  • group_replication_message_cache_size

  • group_replication_transaction_size_limit

グループレプリケーション固有のシステム変数や一般的なシステム変数など、グループレプリケーショングループメンバーの一部のシステム変数は、グループ全体の構成設定です。 これらのシステム変数は、すべてのグループメンバーで同じ値を持つ必要があり、グループレプリケーションの実行中は変更できません。また、値の変更を有効にするには、グループの完全な再起動 (group_replication_bootstrap_group=ON を使用したサーバーによるブートストラップ) が必要です。 これらの条件は、次のシステム変数に適用されます:

  • group_replication_single_primary_mode

  • group_replication_enforce_update_everywhere_checks

  • group_replication_gtid_assignment_block_size

  • default_table_encryption

  • lower_case_table_names

  • transaction_write_set_extraction

MySQL 8.0.16 から、group_replication_switch_to_single_primary_mode() および group_replication_switch_to_multi_primary_mode() UDF を使用して、グループの実行中に group_replication_single_primary_mode および group_replication_enforce_update_everywhere_checks の値を変更できます。 詳細は、セクション18.4.1.2「グループモードの変更」を参照してください。

重要
  • グループレプリケーションの多くのシステム変数は、コマンドライン引数としてサーバーに渡された場合、サーバーの起動時に完全には検証されません。 これらのシステム変数には、group_replication_group_name, group_replication_single_primary_mode, group_replication_force_members、SSL 変数およびフロー制御システム変数が含まれます。 これらは、サーバーの起動後にのみ完全に検証されます。

  • グループメンバーの IP アドレスまたはホスト名を指定するグループレプリケーションのシステム変数は、START GROUP_REPLICATION ステートメントが発行されるまで検証されません。 グループレプリケーショングループ通信システム (GCS) は、その時点まで値を検証できません。

Group Replication プラグインに固有のシステム変数は次のとおりです:

  • group_replication_advertise_recovery_endpoints

    コマンド行形式 --group-replication-advertise-recovery-endpoints=value
    導入 8.0.21
    システム変数 group_replication_advertise_recovery_endpoints
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    文字列
    デフォルト値 DEFAULT

    このシステム変数の値は、Group Replication の実行中に変更できます。 変更はすぐにメンバーに反映されます。 ただし、システム変数の以前の値をすでに受け取っている結合メンバーは、その値を引き続き使用します。 値の変更後に結合されたメンバーのみが新しい値を受け取ります。

    group_replication_advertise_recovery_endpoints は、結合メンバーが分散リカバリのために状態転送のために既存のメンバーへの接続を確立する方法を指定します。 この接続は、リモートクローニング操作とドナーのバイナリログからの状態転送の両方に使用されます。

    デフォルト設定の DEFAULT の値は、参加メンバーが MySQL Server hostname および port システム変数で指定されている既存のメンバー標準 SQL クライアント接続を使用することを意味します。 report_port システム変数で代替ポート番号が指定されている場合は、かわりにそのポート番号が使用されます。 「パフォーマンススキーマ」テーブル replication_group_members では、この接続アドレスとポート番号が MEMBER_HOST および MEMBER_PORT フィールドに表示されます。 これは、MySQL 8.0.20 までのリリースでのグループメンバーの動作です。

    DEFAULT のかわりに、既存のメンバーが使用する参加メンバーに通知する分散リカバリエンドポイントを指定できます。 分散リカバリエンドポイントを提供することで、管理者は、グループメンバーへの通常の MySQL クライアント接続とは別に分散リカバリトラフィックを制御できます。 メンバーの結合では、リストで指定された順序で各エンドポイントが順に試行されます。

    分散リカバリエンドポイントを IP アドレスとポート番号のカンマ区切りリストとして指定します。次に例を示します:

    group_replication_advertise_recovery_endpoints= "127.0.0.1:3306,127.0.0.1:4567,[::1]:3306,localhost:3306"

    IPv4 アドレスと IPv6 アドレスおよびホスト名は、任意の組合せで使用できます。 IPv6 アドレスは大カッコで囲んで指定する必要があります。 ホスト名はローカル IP アドレスに解決される必要があります。 ワイルドカードアドレス書式は使用できず、空のリストは指定できません。 標準 SQL クライアント接続は、分散リカバリエンドポイントのリストに自動的には含まれないことに注意してください。 エンドポイントとして使用する場合は、リストに明示的に含める必要があります。

    分散リカバリエンドポイントとして IP アドレスとポートを選択する方法、およびメンバーを結合する方法の詳細は、セクション18.4.3.1.1「分散リカバリエンドポイントのアドレスの選択」 を参照してください。 要件のサマリーは次のとおりです:

    • IP アドレスは MySQL Server 用に構成する必要はありませんが、サーバーに割り当てる必要があります。

    • ポートは、portreport_port または admin_port システム変数を使用して MySQL Server 用に構成する必要があります。

    • admin_port を使用する場合は、分散リカバリのレプリケーションユーザーに適切な権限が必要です。

    • group_replication_ip_allowlist または group_replication_ip_whitelist システム変数で指定された Group Replication 許可リストに IP アドレスを追加する必要はありません。

    • 接続の SSL 要件は、group_replication_recovery_ssl_* オプションで指定されたとおりです。

  • group_replication_allow_local_lower_version_join

    コマンド行形式 --group-replication-allow-local-lower-version-join[={OFF|ON}]
    システム変数 group_replication_allow_local_lower_version_join
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 OFF

    このシステム変数の値は、Group Replication の実行中に変更できますが、変更はグループメンバーで Group Replication を停止して再起動した後にのみ有効になります。

    group_replication_allow_local_lower_version_join では、現在のサーバーがグループより低いバージョンの MySQL Server を実行している場合でも、グループに参加できます。 デフォルト設定の OFF では、既存のグループメンバーより低いバージョンを実行しているサーバーはレプリケーショングループに参加できません。 この標準ポリシーは、グループのすべてのメンバーがメッセージを交換し、トランザクションを適用できることを確認します。 MySQL 8.0.17 以上を実行しているメンバーは、互換性をチェックするときにリリースのパッチバージョンを考慮することに注意してください。 MySQL 8.0.16 以下または MySQL 5.7 を実行しているメンバーには、メジャーバージョンのみが考慮されます。

    次のシナリオでのみ、group_replication_allow_local_lower_version_joinON に設定します:

    • グループのフォルトトレランスを改善するには、緊急時にサーバーをグループに追加する必要があり、古いバージョンのみを使用できます。

    • グループ全体を停止して再度ブートストラップせずに、1 つ以上のレプリケーショングループメンバーのアップグレードをロールバックする場合。

    警告

    このオプションを ON に設定しても、新しいメンバーはグループと互換性がなく、既存のメンバーによる互換性のない動作から保護されずにグループに参加できます。 新しいメンバーが正しく動作するようにするには、次の予防措置の both を使用します:

    1. 下位バージョンを実行しているサーバーがグループに参加する前に、そのサーバーでのすべての書込みを停止します。

    2. 下位バージョンを実行しているサーバーがグループに参加した時点から、グループ内の他のサーバーに対するすべての書込みを停止します。

    これらの予防措置がないと、低いバージョンを実行しているサーバーで問題が発生し、エラーで終了する可能性があります。

  • group_replication_auto_increment_increment

    コマンド行形式 --group-replication-auto-increment-increment=#
    システム変数 group_replication_auto_increment_increment
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 7
    最小値 1
    最大値 65535

    このシステム変数は、すべてのグループメンバーで同じ値を持つ必要があります。 グループレプリケーションの実行中は、このシステム変数の値を変更できません。 各グループメンバーでグループレプリケーションを停止し、システム変数の値を変更してから、グループレプリケーションを再起動する必要があります。 このプロセス中、システム変数の値はグループメンバー間で異なってもかまいませんが、グループメンバーの一部のトランザクションはロールバックされる可能性があります。

    group_replication_auto_increment_increment は、このサーバーインスタンスで実行されるトランザクションの自動増分カラムの連続する値の間隔を決定します。 間隔を追加すると、グループメンバーに対する書込みに対して重複する自動増分値が選択されないため、トランザクションがロールバックされます。 デフォルト値の 7 は、使用可能な値の数とレプリケーショングループの最大許容サイズ (9 メンバー) のバランスを表します。 グループのメンバー数が多いか少ない場合は、グループレプリケーションが開始される前に、グループメンバーの予想数と一致するようにこのシステム変数を設定できます。

    グループレプリケーションがサーバーインスタンスで開始されると、サーバーシステム変数 auto_increment_increment の値がこの値に変更され、サーバーシステム変数 auto_increment_offset の値がサーバー ID に変更されます。 グループレプリケーションが停止すると、変更は元に戻されます。 これらの変更は、auto_increment_increment および auto_increment_offset のそれぞれのデフォルト値が 1 の場合にのみ行われ、元に戻されます。 これらの値がすでにデフォルトから変更されている場合、Group Replication はそれらを変更しません。 MySQL 8.0 からは、グループレプリケーションが単一プライマリモードで、サーバー書込みが 1 つのみの場合も、システム変数は変更されません。

  • group_replication_autorejoin_tries

    コマンド行形式 --group-replication-autorejoin-tries=#
    導入 8.0.16
    システム変数 group_replication_autorejoin_tries
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 (≥ 8.0.21) 3
    デフォルト値 (≤ 8.0.20) 0
    最小値 0
    最大値 2016

    このシステム変数の値は、Group Replication の実行中に変更でき、変更はただちに有効になります。 動作が必要であることを意味する問題が発生すると、システム変数 current 値が読み取られます。

    group_replication_autorejoin_tries では、メンバーが明示された場合、または group_replication_unreachable_majority_timeout 設定に到達する前にグループの大部分にアクセスできない場合に、メンバーが自動的にグループに再参加しようとする試行回数を指定します。 メンバー削除または到達不能な大部分のタイムアウトに達すると、(現在のプラグインオプション値を使用して) 再結合を試みてから、指定された試行回数までさらに自動再結合を試みます。 自動再結合の試行に失敗すると、メンバーは次の試行の 5 分前に待機します。 指定された試行回数がメンバーの再参加または停止なしで使い果たされた場合、メンバーは group_replication_exit_state_action システム変数で指定されたアクションに進みます。

    MySQL 8.0.20 までは、デフォルト設定は 0 です。つまり、メンバーは自動的に再結合を試みません。 MySQL 8.0.21 からは、デフォルト設定は 3 です。これは、メンバーがグループへの再参加を自動的に 3 回試行し、それぞれの間に 5 分間試行することを意味します。 最大 2016 回の試行を指定できます。

    自動再結合の試行中および試行の間、メンバーはスーパー読取り専用モードのままで書込みを受け入れませんが、時間の経過とともに失効した読取りの可能性を高くして、メンバーに対して読取りを実行できます。 一定期間失効した読取りの可能性を許容できない場合は、group_replication_autorejoin_tries を 0 に設定します。 自動再結合機能、およびこのオプションの値を選択する際の考慮事項の詳細は、セクション18.6.6.3「Auto-Rejoin」 を参照してください。

  • group_replication_bootstrap_group

    コマンド行形式 --group-replication-bootstrap-group[={OFF|ON}]
    システム変数 group_replication_bootstrap_group
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 OFF

    group_replication_bootstrap_group は、グループをブートストラップするようにこのサーバーを構成します。 このシステム変数は、グループを初めて起動するとき、またはグループ全体を再起動するときに、あるサーバーおよびのみで設定する必要があります。 グループがブートストラップされたら、このオプションを OFF に設定します。 動的にも構成ファイルでも、OFF に設定する必要があります。 グループの実行中に 2 つのサーバーを起動するか、このオプションを設定して 1 つのサーバーを再起動すると、人工的なスプリットブレーン状況が発生し、同じ名前の独立した 2 つのグループがブートストラップされる場合があります。

  • group_replication_clone_threshold

    コマンド行形式 --group-replication-clone-threshold=#
    導入 8.0.17
    システム変数 group_replication_clone_threshold
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 9223372036854775807
    最小値 1
    最大値 9223372036854775807

    このシステム変数の値は、Group Replication の実行中に変更できますが、変更はグループメンバーで Group Replication を停止して再起動した後にのみ有効になります。

    group_replication_clone_threshold では、分散リカバリプロセス中に参加メンバーへの状態転送のためにリモートクローニング操作の使用をトリガーする既存のメンバー (ドナー) と参加メンバー (受信者) の間のトランザクションギャップを多数のトランザクションとして指定します。 参加メンバーと適切なドナーの間のトランザクションギャップがしきい値を超えると、グループレプリケーションはリモートクローニング操作で分散リカバリを開始します。 トランザクションギャップがしきい値を下回る場合、またはリモートクローニング操作が技術的に可能でない場合、Group Replication はドナーのバイナリログからの状態転送に直接進みます。

    警告

    アクティブグループの group_replication_clone_threshold には低い設定を使用しないでください。 リモートクローニング操作の進行中にしきい値を超える数のトランザクションがグループで発生した場合、参加メンバーは再起動後にリモートクローニング操作を再度トリガーし、これを無期限に続行できます。 この状況を回避するには、リモートクローニング操作にかかる時間内にグループ内で発生すると予想されるトランザクション数よりも大きい数をしきい値に設定してください。

    この関数を使用するには、クローニングをサポートするようにドナーと参加メンバーの両方を事前に設定する必要があります。 その手順は、セクション18.4.3.2「分散リカバリのためのクローニング」を参照してください。 リモートクローニング操作が実行されると、group_replication_start_on_boot=ON が設定されている場合は、グループレプリケーションによって管理され、必要なサーバーの再起動も含まれます。 そうでない場合は、サーバーを手動で再起動する必要があります。 リモートクローニング操作では、結合メンバーの既存のデータディクショナリが置換されますが、結合メンバーに他のグループメンバーに存在しない追加のトランザクションがある場合、これらのトランザクションはクローニング操作によって消去されるため、グループレプリケーションによってチェックされ、続行されません。

    デフォルト設定 (GTID 内のトランザクションに許可される最大シーケンス番号) は、ドナーのバイナリログからの状態転送が、クローニングではなく実質的に常に試行されることを意味します。 ただし、結合メンバーに必要なトランザクションが既存のグループメンバーのバイナリログで使用できないためなど、ドナーバイナリログからの状態転送が不可能な場合、グループレプリケーションはしきい値に関係なく常にクローニング操作を実行しようとします。 レプリケーショングループでクローニングをまったく使用しない場合は、クローンプラグインをメンバーにインストールしないでください。

  • group_replication_communication_debug_options

    コマンド行形式 --group-replication-communication-debug-options=value
    システム変数 group_replication_communication_debug_options
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    文字列
    デフォルト値 GCS_DEBUG_NONE
    有効な値

    GCS_DEBUG_NONE

    GCS_DEBUG_BASIC

    GCS_DEBUG_TRACE

    XCOM_DEBUG_BASIC

    XCOM_DEBUG_TRACE

    GCS_DEBUG_ALL

    このシステム変数の値は、Group Replication の実行中に変更できますが、変更はグループメンバーで Group Replication を停止して再起動した後にのみ有効になります。

    group_replication_communication_debug_options は、グループ通信システム (GCS) やグループ通信エンジン (XCom、Paxos バリアント) などの様々なグループレプリケーションコンポーネントに提供するデバッグメッセージのレベルを構成します。 デバッグ情報は、データディレクトリの GCS_DEBUG_TRACE ファイルに格納されます。

    文字列として指定された使用可能なオプションのセットを組み合せることができます。 次のオプションを使用できます。

    • GCS_DEBUG_NONE では、GCS と XCom の両方のデバッグレベルがすべて無効になります。

    • GCS_DEBUG_BASIC を使用すると、GCS で基本的なデバッグ情報を使用できます。

    • GCS_DEBUG_TRACE は GCS でトレース情報を有効にします。

    • XCOM_DEBUG_BASIC を使用すると、XCom の基本的なデバッグ情報を使用できます。

    • XCOM_DEBUG_TRACE を使用すると、XCom でトレース情報を使用できます。

    • GCS_DEBUG_ALL では、GCS と XCom の両方ですべてのデバッグレベルが有効になります。

    デバッグレベルを GCS_DEBUG_NONE に設定すると、他のオプションを指定せずに指定した場合にのみ有効になります。 デバッグレベルを GCS_DEBUG_ALL に設定すると、他のすべてのオプションがオーバーライドされます。

  • group_replication_communication_max_message_size

    コマンド行形式 --group-replication-communication-max-message-size=#
    導入 8.0.16
    システム変数 group_replication_communication_max_message_size
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 10485760
    最小値 0
    最大値 1073741824

    このシステム変数は、すべてのグループメンバーで同じ値を持つ必要があります。 グループレプリケーションの実行中は、このシステム変数の値を変更できません。 各グループメンバーでグループレプリケーションを停止し、システム変数の値を変更してから、グループレプリケーションを再起動する必要があります。 このプロセス中、システム変数の値はグループメンバー間で異なってもかまいませんが、グループメンバーの一部のトランザクションはロールバックされる可能性があります。

    group_replication_communication_max_message_size では、グループレプリケーション通信の最大メッセージサイズを指定します。 このサイズより大きいメッセージは、個別に送信され、受信者によって再アセンブルされるフラグメントに自動的に分割されます。 詳細は、セクション18.6.4「メッセージの断片化」を参照してください。

    10485760 バイト (10 MiB) の最大メッセージサイズがデフォルトで設定されています。つまり、MySQL 8.0.16 からのリリースでは、断片化がデフォルトで使用されます。 最大許容値は、slave_max_allowed_packet システム変数の最大値 1073741824 バイト (1 GB) と同じです。 アプライヤスレッドは slave_max_allowed_packet より大きいメッセージフラグメントを処理できないため、group_replication_communication_max_message_size の設定は slave_max_allowed_packet の設定より小さくする必要があります。 断片化をオフにするには、group_replication_communication_max_message_size にゼロ値を指定します。

    レプリケーショングループのメンバーが断片化を使用するには、グループ通信プロトコルのバージョンが MySQL 8.0.16 以上である必要があります。 group_replication_get_communication_protocol() UDF を使用して、グループ通信プロトコルのバージョンを表示します。 下位バージョンが使用されている場合、グループメンバーはメッセージを断片化しません。 すべてのグループメンバーがサポートしている場合は、group_replication_set_communication_protocol() UDF を使用して、グループ通信プロトコルを上位バージョンに設定できます。 詳細は、セクション18.4.1.4「グループ通信プロトコルバージョンの設定」を参照してください。

  • group_replication_components_stop_timeout

    コマンド行形式 --group-replication-components-stop-timeout=#
    システム変数 group_replication_components_stop_timeout
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 31536000
    最小値 2
    最大値 31536000

    このシステム変数の値は、Group Replication の実行中に変更できますが、変更はグループメンバーで Group Replication を停止して再起動した後にのみ有効になります。

    group_replication_components_stop_timeout では、グループレプリケーションが停止時に各コンポーネントを待機するタイムアウトを秒単位で指定します。

  • group_replication_compression_threshold

    コマンド行形式 --group-replication-compression-threshold=#
    システム変数 group_replication_compression_threshold
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 1000000
    最小値 0
    最大値 4294967295

    このシステム変数は、すべてのグループメンバーで同じ値を持つ必要があります。 このシステム変数の値は、Group Replication の実行中に変更できます。 変更は、メンバーでグループレプリケーションを停止して再起動した後、各グループメンバーで有効になります。 このプロセス中、システム変数の値はグループメンバー間で異なってもかまいませんが、メッセージ配信の効率はすべてのメンバーで同じではありません。

    group_replication_compression_threshold では、グループメンバー間で送信されるメッセージに圧縮が適用されるしきい値をバイト単位で指定します。 このシステム変数をゼロに設定すると、圧縮は無効になります。

    グループレプリケーションでは、LZ4 圧縮アルゴリズムを使用して、グループで送信されるメッセージを圧縮します。 LZ4 圧縮アルゴリズムでサポートされる最大入力サイズは 2113929216 バイトです。 この制限は、XCom で受け入れられる最大メッセージサイズと一致する、group_replication_compression_threshold システム変数の最大可能値を下回っています。 LZ4 圧縮アルゴリズムでは、メッセージ圧縮が有効な場合、このサイズを超えるトランザクションはコミットできないため、group_replication_compression_threshold に 2113929216 バイトを超える値を設定しないでください。

    詳細は、セクション18.6.3「メッセージ圧縮」を参照してください。

  • group_replication_consistency

    コマンド行形式 --group-replication-consistency=value
    導入 8.0.14
    システム変数 group_replication_consistency
    スコープ グローバル、セッション
    動的 はい
    SET_VAR ヒントの適用 いいえ
    列挙
    デフォルト値 EVENTUAL
    有効な値

    EVENTUAL

    BEFORE_ON_PRIMARY_FAILOVER

    BEFORE

    AFTER

    BEFORE_AND_AFTER

    このシステム変数の値は、Group Replication の実行中に変更できます。group_replication_consistency は Group Replication プラグイン固有の変数ではなくサーバーシステム変数であるため、変更を有効にするために Group Replication を再起動する必要はありません。 システム変数のセッション値の変更はただちに有効になり、グローバル値の変更は変更後に開始される新しいセッションに対して有効になります。 このシステム変数のグローバル設定を変更するには、GROUP_REPLICATION_ADMIN 権限が必要です。

    group_replication_consistency は、グループが提供するトランザクションの一貫性保証を制御します。 一貫性はグローバルに構成することも、トランザクションごとに構成することもできます。group_replication_consistency は、単一のプライマリグループで新しく選択されたプライマリによって使用されるフェンシングメカニズムも構成します。 変数の効果は、読取り専用 (RO) トランザクションと読取り/書込み (RW) トランザクションの両方で考慮する必要があります。 次のリストは、トランザクションの一貫性保証を高めるために、この変数に指定できる値を示しています:

    • EVENTUAL

      RO トランザクションと RW トランザクションはどちらも、実行前に先行するトランザクションが適用されるのを待機しません。 これは、この変数が追加される前の Group Replication の動作です。 RW トランザクションは、他のメンバーがトランザクションを適用するのを待機しません。 つまり、あるメンバーでトランザクションを外部化してから別のメンバーに外部化できます。 つまり、プライマリフェイルオーバーが発生した場合、新しいプライマリは、前のプライマリトランザクションがすべて適用される前に新しい RO および RW トランザクションを受け入れることができます。 RO トランザクションは古い値になる可能性があり、RW トランザクションは競合のためロールバックする可能性があります。

    • BEFORE_ON_PRIMARY_FAILOVER

      古いプライマリからバックログを適用している、新しく選択されたプライマリを持つ新しい RO または RW トランザクションは、バックログが適用されるまで保持されます (適用されません)。 これにより、プライマリフェイルオーバーが意図的に発生したかどうかにかかわらず、クライアントには常にプライマリの最新の値が表示されます。 これにより一貫性が保証されますが、バックログが適用されている場合、クライアントは遅延を処理できる必要があります。 通常、この遅延は最小限に抑える必要がありますが、バックログのサイズによって異なります。

    • BEFORE

      RW トランザクションは、先行するすべてのトランザクションが完了するまで待機してから適用されます。 RO トランザクションは、先行するすべてのトランザクションが完了するまで待機してから実行されます。 これにより、トランザクションのレイテンシにのみ影響を与えることで、このトランザクションが最新の値を読み取るようになります。 これにより、RO トランザクションでのみ同期が使用されるようになるため、すべての RW トランザクションでの同期のオーバーヘッドが削減されます。 この一貫性レベルには、BEFORE_ON_PRIMARY_FAILOVER によって提供される一貫性保証も含まれます。

    • AFTER

      RW トランザクションは、その変更が他のすべてのメンバーに適用されるまで待機します。 この値は RO トランザクションには影響しません。 このモードでは、トランザクションがローカルメンバーでコミットされたときに、後続のトランザクションが書込み値またはグループメンバーのより新しい値を読み取ることが保証されます。 このモードは、主に RO 操作に使用されるグループとともに使用して、適用された RW トランザクションがコミット後のすべての場所に確実に適用されるようにします。 これは、後続の読取りで最新の書込みを含む最新のデータがフェッチされるようにするために、アプリケーションで使用できます。 これにより、RW トランザクションでのみ同期が使用されるようになるため、RO トランザクションごとの同期のオーバーヘッドが削減されます。 この一貫性レベルには、BEFORE_ON_PRIMARY_FAILOVER によって提供される一貫性保証も含まれます。

    • BEFORE_AND_AFTER

      RW トランザクションは、1) 前のすべてのトランザクションが適用されるまで待機し、2) 変更が他のメンバーに適用されるまで待機します。 RO トランザクションは、先行するすべてのトランザクションが完了するまで待機してから実行されます。 この一貫性レベルには、BEFORE_ON_PRIMARY_FAILOVER によって提供される一貫性保証も含まれます。

    詳細は、セクション18.4.2「トランザクション一貫性保証」を参照してください。

  • group_replication_enforce_update_everywhere_checks

    コマンド行形式 --group-replication-enforce-update-everywhere-checks[={OFF|ON}]
    システム変数 group_replication_enforce_update_everywhere_checks
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 OFF

    このシステム変数は、グループ全体の構成設定です。 値の変更を有効にするには、すべてのグループメンバーで同じ値を持つ必要があり、グループレプリケーションの実行中は変更できず、グループ (group_replication_bootstrap_group=ON を使用したサーバーによるブートストラップ) を完全に再起動する必要があります。 MySQL 8.0.16 から、group_replication_switch_to_single_primary_mode() および group_replication_switch_to_multi_primary_mode() UDF を使用して、グループの実行中にこのシステム変数の値を変更できます。 詳細は、セクション18.4.1.2「グループモードの変更」を参照してください。

    group_replication_enforce_update_everywhere_checks は、マルチプライマリ更新の厳密な整合性チェックをどこでも有効または無効にします。 デフォルトでは、チェックは無効になっています。 シングルプライマリモードでは、すべてのグループメンバーでこのオプションを無効にする必要があります。 マルチプライマリモードでは、このオプションを有効にすると、ステートメントは次のようにチェックされ、マルチプライマリモードと互換性があることが確認されます:

    • トランザクションが SERIALIZABLE 分離レベルで実行される場合、トランザクション自体をグループと同期するとコミットは失敗します。

    • カスケード制約を持つ外部キーを持つテーブルに対してトランザクションが実行される場合、トランザクションはグループとの同期時にコミットに失敗します。

  • group_replication_exit_state_action

    コマンド行形式 --group-replication-exit-state-action=value
    導入 8.0.12
    システム変数 group_replication_exit_state_action
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    列挙
    デフォルト値 (≥ 8.0.16) READ_ONLY
    デフォルト値 (≥ 8.0.12, ≤ 8.0.15) ABORT_SERVER
    有効な値 (≥ 8.0.18)

    ABORT_SERVER

    OFFLINE_MODE

    READ_ONLY

    有効な値 (≥ 8.0.12, ≤ 8.0.17)

    ABORT_SERVER

    READ_ONLY

    このシステム変数の値は、Group Replication の実行中に変更でき、変更はただちに有効になります。 動作が必要であることを意味する問題が発生すると、システム変数 current 値が読み取られます。

    group_replication_exit_state_action では、たとえばアプライヤエラーが発生した後、大部分が失われた場合、または疑わしいタイムアウトのためにグループの別のメンバーがグループを明示する場合などに、このサーバーインスタンスが意図せずグループを離れたときのグループレプリケーションの動作を構成します。 大部分が失われた場合にメンバーがグループを離れるタイムアウト期間は group_replication_unreachable_majority_timeout システム変数によって設定され、疑わしい場合のタイムアウト期間は group_replication_member_expel_timeout システム変数によって設定されます。 削除されたグループメンバーは、グループに再接続するまで削除されたことを認識しないため、指定されたアクションが実行されるのは、メンバーが再接続を管理している場合、またはメンバーがそれ自体で疑わしいことを引き起こして削除した場合のみです。

    疑わしいタイムアウトまたは大部分の損失が原因でグループメンバーが削除された場合、メンバーの group_replication_autorejoin_tries システム変数が自動再結合の試行回数を指定するように設定されていると、最初にスーパー読取り専用モードで指定された回数試行し、次に group_replication_exit_state_action で指定されたアクションに従います。 アプライヤエラーの場合、自動再結合はリカバリできないため試行されません。

    group_replication_exit_state_actionREAD_ONLY に設定されている場合、メンバーが誤ってグループを終了するか、自動再結合の試行を使い果たすと、インスタンスは MySQL をスーパー読取り専用モードに切り替えます (システム変数 super_read_onlyON に設定します)。 READ_ONLY 終了アクションは、システム変数が導入される前の MySQL 8.0 リリースの動作であり、MySQL 8.0.16 から再度デフォルトになりました。

    group_replication_exit_state_actionOFFLINE_MODE に設定されている場合、メンバーが誤ってグループを終了するか、自動再結合の試行を使い果たすと、インスタンスは MySQL をオフラインモードに切り替えます (システム変数 offline_modeON に設定します)。 このモードでは、接続クライアントユーザーは次のリクエストで切断され、CONNECTION_ADMIN 権限 (または非推奨の SUPER 権限) を持つクライアントユーザーを除き、接続は受け入れられなくなります。 Group Replication は、システム変数 super_read_onlyON に設定することもできるため、クライアントが CONNECTION_ADMIN または SUPER 権限で接続されていても更新を行うことはできません。 OFFLINE_MODE 終了アクションは、MySQL 8.0.18 から使用できます。

    group_replication_exit_state_actionABORT_SERVER に設定されている場合、メンバーが意図せずグループを終了するか、自動再結合の試行を使い果たすと、インスタンスは MySQL を停止します。 この設定は、システム変数が MySQL 8.0.15 に追加されたときの MySQL 8.0.12 のデフォルトでした。

    重要

    メンバーがグループに正常に参加する前に障害が発生した場合、指定された終了アクション取得されません。 これは、ローカル構成チェック中に障害が発生した場合、または参加メンバーの構成とグループの構成が一致しない場合です。 このような状況では、super_read_only システム変数は元の値のままで、接続は引き続き受け入れられ、サーバーは MySQL を停止しません。 したがって、Group Replication が起動しなかったときにサーバーが更新を受け入れられないようにするには、起動時に super_read_only=ON をサーバー構成ファイルに設定することをお薦めします。これは、正常に起動された後、プライマリメンバー上の OFF にグループレプリケーションが変更されます。 この保護策は、サーバーがサーバー起動時に Group Replication (group_replication_start_on_boot=ON) を起動するように構成されている場合に特に重要ですが、START GROUP_REPLICATION コマンドを使用して Group Replication を手動で起動する場合にも役立ちます。

    このオプションの使用方法および exit アクションが実行される状況の完全なリストの詳細は、セクション18.6.6.4「終了処理」 を参照してください。

  • group_replication_flow_control_applier_threshold

    コマンド行形式 --group-replication-flow-control-applier-threshold=#
    システム変数 group_replication_flow_control_applier_threshold
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 25000
    最小値 0
    最大値 2147483647

    このシステム変数の値は、Group Replication の実行中に変更でき、変更はただちに有効になります。

    group_replication_flow_control_applier_threshold では、フロー制御をトリガーするアプライヤキュー内の待機中トランザクションの数を指定します。

  • group_replication_flow_control_certifier_threshold

    コマンド行形式 --group-replication-flow-control-certifier-threshold=#
    システム変数 group_replication_flow_control_certifier_threshold
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 25000
    最小値 0
    最大値 2147483647

    このシステム変数の値は、Group Replication の実行中に変更でき、変更はただちに有効になります。

    group_replication_flow_control_certifier_threshold では、フロー制御をトリガーする証明者キュー内の待機中トランザクションの数を指定します。

  • group_replication_flow_control_hold_percent

    コマンド行形式 --group-replication-flow-control-hold-percent=#
    システム変数 group_replication_flow_control_hold_percent
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 10
    最小値 0
    最大値 100

    このシステム変数の値は、Group Replication の実行中に変更でき、変更はただちに有効になります。

    group_replication_flow_control_hold_percent では、フロー制御下のクラスタがバックログで捕捉できるように、未使用のままになるグループ割当ての割合を定義します。 値 0 は、作業バックログを捕捉するために割当て制限の一部が予約されていないことを意味します。

  • group_replication_flow_control_max_commit_quota

    コマンド行形式 --group-replication-flow-control-max-commit-quota=#
    システム変数 group_replication_flow_control_max_commit_quota
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 0
    最小値 0
    最大値 2147483647

    このシステム変数の値は、Group Replication の実行中に変更でき、変更はただちに有効になります。

    group_replication_flow_control_max_commit_quota では、フロー制御が有効になっている間、グループの最大フロー制御割当て制限または任意の期間の最大使用可能割当て制限が定義されます。 値 0 は、最大割当て制限が設定されていないことを意味します。 このシステム変数の値は、group_replication_flow_control_min_quota および group_replication_flow_control_min_recovery_quota より小さくできません。

  • group_replication_flow_control_member_quota_percent

    コマンド行形式 --group-replication-flow-control-member-quota-percent=#
    システム変数 group_replication_flow_control_member_quota_percent
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 0
    最小値 0
    最大値 100

    このシステム変数の値は、Group Replication の実行中に変更でき、変更はただちに有効になります。

    group_replication_flow_control_member_quota_percent では、割当て制限の計算時にメンバーが使用可能とみなす必要がある割当て制限の割合が定義されます。 値 0 は、割当て制限を最後の期間のライターであったメンバー間で均等に分割する必要があることを意味します。

  • group_replication_flow_control_min_quota

    コマンド行形式 --group-replication-flow-control-min-quota=#
    システム変数 group_replication_flow_control_min_quota
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 0
    最小値 0
    最大値 2147483647

    このシステム変数の値は、Group Replication の実行中に変更でき、変更はただちに有効になります。

    group_replication_flow_control_min_quota は、最後の期間に実行された計算済の最小目標とは関係なく、メンバーに割り当てることができる最小フロー制御目標を制御します。 値 0 は、最小割当て制限がないことを意味します。 このシステム変数の値は group_replication_flow_control_max_commit_quota より大きくできません。

  • group_replication_flow_control_min_recovery_quota

    コマンド行形式 --group-replication-flow-control-min-recovery-quota=#
    システム変数 group_replication_flow_control_min_recovery_quota
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 0
    最小値 0
    最大値 2147483647

    このシステム変数の値は、Group Replication の実行中に変更でき、変更はただちに有効になります。

    group_replication_flow_control_min_recovery_quota は、最後の期間に実行された計算済の最小割当て制限とは関係なく、グループ内の別のリカバリメンバーのためにメンバーに割り当てることができる最小割当て制限を制御します。 値 0 は、最小割当て制限がないことを意味します。 このシステム変数の値は group_replication_flow_control_max_commit_quota より大きくできません。

  • group_replication_flow_control_mode

    コマンド行形式 --group-replication-flow-control-mode=value
    システム変数 group_replication_flow_control_mode
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    列挙
    デフォルト値 QUOTA
    有効な値

    DISABLED

    QUOTA

    このシステム変数の値は、Group Replication の実行中に変更でき、変更はただちに有効になります。

    group_replication_flow_control_mode では、フロー制御に使用されるモードを指定します。

  • group_replication_flow_control_period

    コマンド行形式 --group-replication-flow-control-period=#
    システム変数 group_replication_flow_control_period
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 1
    最小値 1
    最大値 60

    このシステム変数の値は、Group Replication の実行中に変更でき、変更はただちに有効になります。

    group_replication_flow_control_period では、フロー制御メッセージが送信されてフロー制御管理タスクが実行されるまで待機する秒数を定義します。

  • group_replication_flow_control_release_percent

    コマンド行形式 --group-replication-flow-control-release-percent=#
    システム変数 group_replication_flow_control_release_percent
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 50
    最小値 0
    最大値 1000

    このシステム変数の値は、Group Replication の実行中に変更でき、変更はただちに有効になります。

    group_replication_flow_control_release_percent では、フロー制御でライターメンバーを制限する必要がなくなった場合に、グループ割当て制限を解放する方法を定義します。この割合は、フロー制御期間ごとの割当て制限の増加です。 値 0 は、フロー制御しきい値が制限内になると、割当て制限が単一のフロー制御反復で解放されることを意味します。 範囲を使用すると、割当て制限を現在の割当て制限の最大 10 倍までリリースできます。これにより、主にフロー制御期間が大きく、割当て制限が非常に小さい場合に、より高度な適応が可能になります。

  • group_replication_force_members

    コマンド行形式 --group-replication-force-members=value
    システム変数 group_replication_force_members
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    文字列

    このシステム変数は、新しいグループメンバーシップを強制するために使用されます。 このシステム変数の値は、Group Replication の実行中に変更でき、変更はただちに有効になります。 システム変数の値を設定する必要があるのは、グループに残すグループメンバーのいずれかのみです。 新しいグループメンバーシップを強制的に実行する必要がある状況と、このシステム変数を使用する際に従う手順の詳細は、セクション18.4.4「ネットワークパーティション化」 を参照してください。

    group_replication_force_members では、ピアアドレスのリストをカンマ区切りリスト (host1:port1host2:port2 など) として指定します。 リストに含まれていない既存のメンバーは、グループの新しいビューを受信せず、ブロックされます。 メンバーとして続行する既存のメンバーごとに、各メンバーの group_replication_local_address システム変数で指定されているように、IP アドレスまたはホスト名とポートを含める必要があります。 IPv6 アドレスは大カッコで囲んで指定する必要があります。 例:

    "198.51.100.44:33061,[2001:db8:85a3:8d3:1319:8a2e:370:7348]:33061,example.org:33061"

    Group Replication (XCom) のグループ通信エンジンは、指定された IP アドレスが有効な形式であることをチェックし、現在アクセスできないグループメンバーが含まれていないことをチェックします。 それ以外の場合、新しい構成は検証されないため、グループのアクセス可能なメンバーであるオンラインサーバーのみを含めるように注意する必要があります。 リスト内の不正な値または無効なホスト名があると、グループが無効な構成でブロックされる可能性があります。

    新しいメンバーシップ構成を強制的に実行する前に、除外するサーバーが停止していることを確認することが重要です。 そうでない場合は、停止してから続行します。 まだオンラインのグループメンバーは新しい構成を自動的に形成でき、これがすでに行われている場合は、さらに新しい構成を強制すると、グループに人工的なスプリットブレイン状況が作成される可能性があります。

    group_replication_force_members システム変数を使用して新しいグループメンバーシップを強制し、グループのブロックを解除した後、必ずシステム変数をクリアしてください。START GROUP_REPLICATION ステートメントを発行するには、group_replication_force_members が空である必要があります。

  • group_replication_group_name

    コマンド行形式 --group-replication-group-name=value
    システム変数 group_replication_group_name
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    文字列

    このシステム変数の値は、Group Replication の実行中に変更できますが、変更はグループメンバーで Group Replication を停止して再起動した後にのみ有効になります。

    group_replication_group_name は、このサーバーインスタンスが属するグループの名前を指定します。これは有効な UUID である必要があります。 この UUID は、バイナリログ内のグループレプリケーショントランザクションの GTID を設定するときに内部的に使用されます。

    重要

    一意の UUID を使用する必要があります。

  • group_replication_group_seeds

    コマンド行形式 --group-replication-group-seeds=value
    システム変数 group_replication_group_seeds
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    文字列

    このシステム変数の値は、Group Replication の実行中に変更できますが、変更はグループメンバーで Group Replication を停止して再起動した後にのみ有効になります。

    group_replication_group_seeds は、参加メンバーが現在のすべてのグループメンバーの詳細を取得するために接続できるグループメンバーのリストです。 参加メンバーは、これらの詳細を使用してグループメンバーを選択して接続し、グループとの同期に必要なデータを取得します。 このリストは、シードメンバーの group_replication_local_address システム変数 (MySQL Server hostname および port システム変数で指定されたシードメンバーの SQL クライアント接続ではなく) で構成されている、含まれる各シードメンバーの単一の内部ネットワークアドレスまたはホスト名で構成されます。 シードメンバーのアドレスは、host1:port1host2:port2 などのカンマ区切りリストとして指定されます。 IPv6 アドレスは大カッコで囲んで指定する必要があります。 例:

    group_replication_group_seeds= "198.51.100.44:33061,[2001:db8:85a3:8d3:1319:8a2e:370:7348]:33061, example.org:33061"

    この変数に指定する値は、START GROUP_REPLICATION ステートメントが発行され、Group Communication System (GCS) が使用可能になるまで検証されないことに注意してください。

    通常、このリストはグループのすべてのメンバーで構成されますが、シードするグループメンバーのサブセットを選択できます。 リストには、少なくとも 1 つの有効なメンバーアドレスが含まれている必要があります。 各アドレスは、Group Replication の開始時に検証されます。 リストに有効なメンバーアドレスが含まれていない場合、START GROUP_REPLICATION の発行は失敗します。

    サーバーは、レプリケーショングループに参加するときに、その group_replication_group_seeds システム変数にリストされている最初のシードメンバーに接続しようとします。 接続が拒否された場合、参加メンバーはリスト内の他の各シードメンバーに順番に接続しようとします。 結合メンバーがシードメンバーに接続しても、結果としてレプリケーショングループに追加されない場合 (たとえば、シードメンバーの allowlist に結合メンバーアドレスがなく、接続を閉じているため)、結合メンバーはリスト内の残りのシードメンバーを順番に試行し続けます。

    参加メンバーは、シードメンバーが group_replication_group_seeds オプションで通知するプロトコル (IPv4 または IPv6) と同じプロトコルを使用してシードメンバーと通信する必要があります。 グループレプリケーションの IP アドレス権限のために、シードメンバーの許可リストには、シードメンバーが提供するプロトコルの参加メンバーの IP アドレス、またはそのプロトコルのアドレスに解決されるホスト名が含まれている必要があります。 このアドレスのプロトコルがシードメンバーに通知されたプロトコルと一致しない場合は、参加メンバー group_replication_local_address に加えて、このアドレスまたはホスト名を設定して許可する必要があります。 参加メンバーに適切なプロトコルの許可されたアドレスがない場合、その接続試行は拒否されます。 詳細は、セクション18.5.1「グループレプリケーション IP アドレスの権限」を参照してください。

  • group_replication_gtid_assignment_block_size

    コマンド行形式 --group-replication-gtid-assignment-block-size=#
    システム変数 group_replication_gtid_assignment_block_size
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 1000000
    最小値 1
    最大値 (64 ビットプラットフォーム) 9223372036854775807
    最大値 (32 ビットプラットフォーム) 4294967295

    このシステム変数は、グループ全体の構成設定です。 値の変更を有効にするには、すべてのグループメンバーで同じ値を持つ必要があり、グループレプリケーションの実行中は変更できず、グループ (group_replication_bootstrap_group=ON を使用したサーバーによるブートストラップ) を完全に再起動する必要があります。

    group_replication_gtid_assignment_block_size では、各グループメンバー用に予約されている連続 GTID の数を指定します。 各メンバーは独自のブロックを消費し、必要に応じてより多くのブロックを予約します。

  • group_replication_ip_allowlist

    コマンド行形式 --group-replication-ip-allowlist=value
    導入 8.0.22
    システム変数 group_replication_ip_allowlist
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    文字列
    デフォルト値 AUTOMATIC

    group_replication_ip_allowlist は、group_replication_ip_whitelist のかわりに MySQL 8.0.22 から使用できます。 グループレプリケーションの実行中は、このシステム変数の値を変更できません。

    group_replication_ip_allowlist は、グループへの接続を許可するホストを指定します。 group_replication_local_address の各グループメンバーに指定するアドレスは、レプリケーショングループ内の他のサーバーで許可されている必要があります。 この変数に指定する値は、START GROUP_REPLICATION ステートメントが発行され、Group Communication System (GCS) が使用可能になるまで検証されないことに注意してください。

    デフォルトでは、このシステム変数は、ホスト上でアクティブなプライベートサブネットワークからの接続を許可する AUTOMATIC に設定されています。 Group Replication (XCom) のグループ通信エンジンは、ホスト上のアクティブなインタフェースを自動的にスキャンし、プライベートサブネットワーク上のアドレスを持つインタフェースを識別します。 IPv4 および (MySQL 8.0.14 から) IPv6 のこれらのアドレスと localhost IP アドレスを使用して、Group Replication 許可リストを作成します。 アドレスが自動的に許可される範囲のリストについては、セクション18.5.1「グループレプリケーション IP アドレスの権限」 を参照してください。

    プライベートアドレスの自動許可リストは、プライベートネットワーク外のサーバーからの接続には使用できません。 異なるマシン上にあるサーバーインスタンス間のグループレプリケーション接続の場合、パブリック IP アドレスを指定し、明示的な許可リストとして指定する必要があります。 許可リストにエントリを指定した場合、プライベートアドレスは自動的に追加されないため、これらのいずれかを使用する場合は、明示的に指定する必要があります。 localhost IP アドレスは自動的に追加されます。

    group_replication_ip_allowlist オプションの値として、次の任意の組合せを指定できます:

    • IPv4 アドレス (198.51.100.44 など)

    • CIDR 表記を使用した IPv4 アドレス (192.0.2.21/24 など)

    • MySQL 8.0.14 からの IPv6 アドレス (2001:db8:85a3:8d3:1319:8a2e:370:7348 など)

    • MySQL 8.0.14 からの CIDR 表記の IPv6 アドレス (2001:db8:85a3:8d3::/64 など)

    • ホスト名 (example.org など)

    • CIDR 表記法を使用したホスト名 (www.example.com/24 など)

    MySQL 8.0.14 より前では、ホスト名は IPv4 アドレスにのみ解決できました。 MySQL 8.0.14 から、ホスト名は IPv4 アドレス、IPv6 アドレス、またはその両方に解決できます。 ホスト名が IPv4 アドレスと IPv6 アドレスの両方に解決される場合、IPv4 アドレスは常にグループレプリケーション接続に使用されます。 CIDR 表記をホスト名または IP アドレスと組み合せて使用すると、特定のネットワーク接頭辞を持つ IP アドレスのブロックを許可できますが、指定したサブネット内のすべての IP アドレスが制御下にあることを確認してください。

    allowlist の各エントリはカンマで区切る必要があります。 例:

    "192.0.2.21/24,198.51.100.44,203.0.113.0/24,2001:db8:85a3:8d3:1319:8a2e:370:7348,example.org,www.example.com/24"

    結合メンバーに IPv4 group_replication_local_address がある場合、またはその逆の場合に、グループのシードメンバーのいずれかが IPv6 アドレスとともに group_replication_group_seeds オプションにリストされている場合は、シードメンバーによって提供されるプロトコル (またはそのプロトコルのアドレスに解決されるホスト名) の結合メンバーの代替アドレスも設定して許可する必要があります。 詳細は、セクション18.5.1「グループレプリケーション IP アドレスの権限」を参照してください。

    たとえば、異なるサブネットを分離しておくために、セキュリティ要件に応じて異なるグループメンバーに異なる許可リストを構成できます。 ただし、これにより、グループの再構成時に問題が発生する可能性があります。 それ以外の場合に特定のセキュリティ要件がない場合は、グループのすべてのメンバーで同じ許可リストを使用します。 詳細は、セクション18.5.1「グループレプリケーション IP アドレスの権限」を参照してください。

    ホスト名の場合、名前解決は、別のサーバーによって接続リクエストが行われた場合にのみ行われます。 解決できないホスト名は許可リストの検証で考慮されず、警告メッセージがエラーログに書き込まれます。 前方確認の逆引き DNS (FCrDNS) 検証は、解決されたホスト名に対して実行されます。

    警告

    ホスト名は本質的に許可リストの IP アドレスより安全性が低くなります。 FCrDNS の検証は適切なレベルの保護を提供しますが、特定のタイプの攻撃によって危険にさらされる可能性があります。 厳密に必要な場合にのみ許可リストにホスト名を指定し、名前解決に使用されるすべてのコンポーネント (DNS サーバーなど) が制御下に保持されていることを確認します。 外部コンポーネントを使用しないように、hosts ファイルを使用して名前解決をローカルに実装することもできます。

  • group_replication_ip_whitelist

    コマンド行形式 --group-replication-ip-whitelist=value
    非推奨 8.0.22
    システム変数 group_replication_ip_whitelist
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    文字列
    デフォルト値 AUTOMATIC

    MySQL 8.0.22 からは、group_replication_ip_whitelist は非推奨であり、group_replication_ip_allowlist を使用して置き換えられます。 どちらのシステム変数の場合も、デフォルト値は AUTOMATIC です。 いずれかのシステム変数がユーザー定義値に設定されていて、もう一方が設定されていない場合は、変更された値が使用されます。 両方のシステム変数がユーザー定義の値に設定されている場合は、group_replication_ip_allowlist の値が使用されます。

    新しいシステム変数は古いシステム変数と同じように機能しますが、用語のみが変更されています。 group_replication_ip_allowlist の動作の説明は、古いシステム変数と新しいシステム変数の両方に適用されます。

  • group_replication_local_address

    コマンド行形式 --group-replication-local-address=value
    システム変数 group_replication_local_address
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    文字列

    このシステム変数の値は、Group Replication の実行中に変更できますが、変更はグループメンバーで Group Replication を停止して再起動した後にのみ有効になります。

    group_replication_local_address は、メンバーが他のメンバーからの接続用に提供するネットワークアドレスを、host:port フォーマット文字列として指定して設定します。 このアドレスは、リモート XCom インスタンス間の TCP 通信用のグループレプリケーション (XCom、Paxos バリアント) のためにグループ通信エンジンによって使用されるため、グループのすべてのメンバーがアクセスできる必要があります。 ローカルインスタンスとの通信は、共有メモリーを使用して入力チャネルを介して行われます。

    警告

    メンバーとの通信にこのアドレスを使用しないでください。 これは、MySQL サーバーの SQL プロトコルのホストおよびポートではありません。

    group_replication_local_address で指定するアドレスまたはホスト名は、グループレプリケーションによって、レプリケーショングループ内のグループメンバーの一意の識別子として使用されます。 ホスト名または IP アドレスがすべて異なるかぎり、レプリケーショングループのすべてのメンバーに同じポートを使用でき、ポートがすべて異なるかぎり、すべてのメンバーに同じホスト名または IP アドレスを使用できます。 group_replication_local_address の推奨ポートは 33061 です。 この変数に指定した値は、START GROUP_REPLICATION ステートメントが発行され、Group Communication System (GCS) が使用可能になるまで検証されないことに注意してください。

    group_replication_local_address によって構成されたネットワークアドレスは、すべてのグループメンバーが解決できる必要があります。 たとえば、各サーバーインスタンスが固定ネットワークアドレスを持つ異なるマシン上にある場合、10.0.0.1 などのマシンの IP アドレスを使用できます。 ホスト名を使用する場合は、完全修飾名を使用し、DNS、正しく構成された/etc/hosts ファイルまたはその他の名前解決プロセスを介して解決できることを確認する必要があります。 MySQL 8.0.14 からは、IPv6 アドレス (またはそれらに解決されるホスト名) と IPv4 アドレスを使用できます。 IPv6 アドレスは、ポート番号を区別するために大カッコで囲む必要があります。次に例を示します:

    group_replication_local_address= "[2001:db8:85a3:8d3:1319:8a2e:370:7348]:33061"

    サーバーインスタンスのグループレプリケーションのローカルアドレスとして指定されたホスト名が IPv4 アドレスと IPv6 アドレスの両方に解決される場合、IPv4 アドレスは常にグループレプリケーション接続に使用されます。 IPv6 ネットワークおよび IPv4 を使用するメンバーと IPv6 を使用するメンバーが混在するレプリケーショングループに対するグループレプリケーションサポートの詳細は、セクション18.4.5「IPv6 および IPv6 と IPv4 の混合グループのサポート」 を参照してください。

    グループレプリケーションの IP アドレス権限のために、group_replication_local_address の各グループメンバーに指定するアドレスを、レプリケーショングループ内の他のサーバー上の group_replication_ip_allowlist (MySQL 8.0.22 から) または group_replication_ip_whitelist システム変数のリストに追加する必要があります。 グループのシードメンバーのいずれかが IPv6 アドレスとともに group_replication_group_seeds オプションにリストされている場合このメンバーが IPV4 group_replication_local_address であれば (またはその逆の場合)、必要なプロトコル (またはそのプロトコルのアドレスに解決されるホスト名) に対してこのメンバーの代替アドレスを設定して許可する必要もあります。 詳細は、セクション18.5.1「グループレプリケーション IP アドレスの権限」を参照してください。

  • group_replication_member_expel_timeout

    コマンド行形式 --group-replication-member-expel-timeout=#
    導入 8.0.13
    システム変数 group_replication_member_expel_timeout
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 (≥ 8.0.21) 5
    デフォルト値 (≤ 8.0.20) 0
    最小値 0
    最大値 (≥ 8.0.14) 3600
    最大値 (≤ 8.0.13) 31536000

    このシステム変数の値は、Group Replication の実行中に変更でき、変更はただちに有効になります。 Group Replication がタイムアウトをチェックするたびに、システム変数の現在の値が読み取られます。 グループのすべてのメンバーが同じ設定を持つことは必須ではありませんが、予期しない実行を回避するためにお薦めします。

    group_replication_member_expel_timeout では、疑わしいグループを作成した後、メンバーが失敗した疑いがあるグループから追い出されるまでにグループレプリケーショングループメンバーが待機する期間を秒単位で指定します。 疑いが作成される前の最初の 5 秒間の検出期間は、この時間の一部としてカウントされません。 MySQL 8.0.20 まで、group_replication_member_expel_timeout の値はデフォルトで 0 に設定されます。これは、待機期間がなく、疑わしいメンバーが 5 秒間の検出期間の終了直後に実行できることを意味します。 MySQL 8.0.21 からは、値はデフォルトで 5 に設定されます。つまり、疑わしいメンバーは、5 秒間の検出期間の 5 秒後に強制的に実行されます。

    グループメンバーの group_replication_member_expel_timeout の値の変更は、そのグループメンバーの既存および将来の疑いに対してただちに有効になります。 したがって、これを方法として使用すると、疑わしいメンバーを強制的にタイムアウトして削除し、グループ構成を変更できます。 詳細は、セクション18.6.6.1「Expel タイムアウト」を参照してください。

    group_replication_member_expel_timeout の値を大きくすると、低速または安定していないネットワークで不要な削除が発生しないようにしたり、一時的なネットワークの停止やマシンの速度低下が予想される場合に役立ちます。 疑わしいメンバーがタイムアウトする前に再度アクティブになると、残りのグループメンバーによってバッファされたすべてのメッセージが適用され、オペレータの介入なしで ONLINE 状態になります。 最大 3600 秒 (1 時間) までのタイムアウト値を指定できます。 XCom メッセージキャッシュが、指定した期間内の予想されるメッセージ量と最初の 5 秒間の検出期間を含むのに十分な大きさであることを確認することが重要です。そうでない場合、メンバーは再接続できません。 group_replication_message_cache_size システム変数を使用して、キャッシュサイズ制限を調整できます。 詳細は、セクション18.6.5「XCom キャッシュ管理」を参照してください。

    タイムアウトを超えた場合、疑わしいメンバーは疑わしいタイムアウトの直後に削除する責任があります。 メンバーが通信を再開でき、削除されたビューを受信し、メンバーに自動再結合の試行回数を指定する group_replication_autorejoin_tries システム変数が設定されている場合、スーパー読取り専用モードでは、指定された回数グループへの再参加を試行します。 メンバーに自動再結合の試行が指定されていない場合、または指定された試行回数を使い果たした場合は、システム変数 group_replication_exit_state_action で指定されたアクションに従います。

    group_replication_member_expel_timeout 設定の使用の詳細は、セクション18.6.6.1「Expel タイムアウト」 を参照してください。 このシステム変数が使用できない場合に不要な削除を回避するための代替軽減戦略については、セクション18.9.2「グループレプリケーションの制限事項」 を参照してください。

  • group_replication_member_weight

    コマンド行形式 --group-replication-member-weight=#
    システム変数 group_replication_member_weight
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 50
    最小値 0
    最大値 100

    このシステム変数の値は、Group Replication の実行中に変更でき、変更はただちに有効になります。 システム変数の現在の値は、フェイルオーバー状況が発生したときに読み取られます。

    group_replication_member_weight では、既存のプライマリが単一プライマリグループから離れる場合など、フェイルオーバー時にプライマリとして選択されるメンバーの可能性に影響を与えるためにメンバーに割り当てることができる重みの割合を指定します。 プライマリのスケジュールされたメンテナンス中やフェイルオーバー時に特定のハードウェアが優先されるように、メンバーに数値の重みを割り当てて特定のメンバーが選択されるようにします。

    メンバーが次のように構成されているグループの場合:

    • member-1: group_replication_member_weight=30, server_uuid=aaaa

    • member-2: group_replication_member_weight=40, server_uuid=bbbb

    • member-3: group_replication_member_weight=40, server_uuid=cccc

    • member-4: group_replication_member_weight=40, server_uuid=dddd

    新しいプライマリの選択時に、前述のメンバーは member-2, member-3, member-4 および member-1 としてソートされます。 これにより、フェイルオーバー時に新しいプライマリとして member-2 が選択されます。 詳細は、セクション18.1.3.1「シングルプライマリモード」を参照してください。

  • group_replication_message_cache_size

    コマンド行形式 --group-replication-message-cache-size=#
    導入 8.0.16
    システム変数 group_replication_message_cache_size
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 1073741824 (1 GB)
    最小値 (64 ビットプラットフォーム, ≥ 8.0.21) 134217728 (128 MB)
    最小値 (64 ビットプラットフォーム, ≤ 8.0.20) 1073741824 (1 GB)
    最小値 (32 ビットプラットフォーム, ≥ 8.0.21) 134217728 (128 MB)
    最小値 (32 ビットプラットフォーム, ≤ 8.0.20) 1073741824 (1 GB)
    最大値 (64 ビットプラットフォーム) 18446744073709551615 (16 EiB)
    最大値 (32 ビットプラットフォーム) 315360004294967295 (4 GB)

    このシステム変数は、すべてのグループメンバーで同じ値を持つ必要があります。 このシステム変数の値は、Group Replication の実行中に変更できます。 変更は、メンバーでグループレプリケーションを停止して再起動した後、各グループメンバーで有効になります。 このプロセス中、システム変数の値はグループメンバー間で異なってもかまいませんが、切断された場合にメンバーが再接続できないことがあります。

    group_replication_message_cache_size は、グループレプリケーション (XCom) のグループ通信エンジンでメッセージキャッシュに使用可能なメモリーの最大量を設定します。 XCom メッセージキャッシュには、コンセンサスプロトコルの一部としてグループメンバー間で交換されるメッセージ (およびそのメタデータ) が保持されます。 メッセージキャッシュは、他のグループメンバーと通信できなかった期間後にグループに再接続するメンバーによる、欠落したメッセージのリカバリに使用されます。

    group_replication_member_expel_timeout システム変数は、メンバーが明示されるのではなくグループに戻るための最初の 5 秒間の検出期間に加えて許可される待機期間 (最大 1 時間) を決定します。 XCom メッセージキャッシュのサイズは、メンバーが正常に戻るために必要なすべての欠落メッセージが含まれるように、この期間内の予想されるメッセージ量を参照して設定する必要があります。 MySQL 8.0.20 までは、デフォルトは 5 秒の検出期間のみですが、MySQL 8.0.21 からは、合計 10 秒間、5 秒の検出期間後の待機期間は 5 秒です。

    MySQL Server の他のキャッシュおよびオブジェクトプールのサイズを考慮して、選択したキャッシュサイズ制限に十分なメモリーがシステムで使用可能であることを確認します。 デフォルト設定は 1073741824 バイト (1 GB) です。 最小設定は、MySQL 8.0.20 まで 1 GB です。 MySQL 8.0.21 からは、最小設定は 134217728 バイト (128 MB) で、使用可能なメモリー量が制限されたホストへのデプロイメントが可能になり、グループメンバーの接続の一時的な損失の頻度と期間を最小限に抑えるための適切なネットワーク接続が可能になります。 group_replication_message_cache_size を使用して設定された制限はキャッシュに格納されているデータにのみ適用され、キャッシュ構造には追加の 50 MB のメモリーが必要です。

    キャッシュサイズ制限は、実行時に動的に増減できます。 キャッシュサイズ制限を小さくすると、XCom では、現在のサイズが制限を下回るまで、決定および配信された最も古いエントリが削除されます。 Group Replication Group Communication System (GCS) は、現在アクセスできないメンバーによるリカバリに必要と思われるメッセージがメッセージキャッシュから削除されたときに、警告メッセージでアラートを生成します。 メッセージキャッシュサイズのチューニングの詳細は、セクション18.6.5「XCom キャッシュ管理」 を参照してください。

  • group_replication_poll_spin_loops

    コマンド行形式 --group-replication-poll-spin-loops=#
    システム変数 group_replication_poll_spin_loops
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 0
    最小値 0
    最大値 (64 ビットプラットフォーム) 18446744073709551615
    最大値 (32 ビットプラットフォーム) 4294967295

    このシステム変数の値は、Group Replication の実行中に変更できますが、変更はグループメンバーで Group Replication を停止して再起動した後にのみ有効になります。

    group_replication_poll_spin_loops では、グループ通信スレッドが通信エンジン mutex の解放を待機する回数を指定します。この回数を超えると、スレッドは追加の着信ネットワークメッセージを待機します。

  • group_replication_recovery_complete_at

    コマンド行形式 --group-replication-recovery-complete-at=value
    システム変数 group_replication_recovery_complete_at
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    列挙
    デフォルト値 TRANSACTIONS_APPLIED
    有効な値

    TRANSACTIONS_CERTIFIED

    TRANSACTIONS_APPLIED

    このシステム変数の値は、Group Replication の実行中に変更できますが、変更はグループメンバーで Group Replication を停止して再起動した後にのみ有効になります。

    group_replication_recovery_complete_at では、既存のメンバーからの状態転送後にキャッシュされたトランザクションを処理する際に、分散リカバリプロセス中に適用されるポリシーを指定します。 メンバーがグループ (TRANSACTIONS_CERTIFIED) に参加する前に見逃したすべてのトランザクションを受信して認証した後、または受信、認証および適用した後 (TRANSACTIONS_APPLIED) にのみ、メンバーをオンラインとしてマークするかどうかを選択できます。

  • group_replication_recovery_compression_algorithm

    コマンド行形式 --group-replication-recovery-compression-algorithm=value
    導入 8.0.18
    システム変数 group_replication_recovery_compression_algorithm
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Set
    デフォルト値 uncompressed
    有効な値

    zlib

    zstd

    uncompressed

    このシステム変数の値は、Group Replication の実行中に変更できますが、変更はグループメンバーで Group Replication を停止して再起動した後にのみ有効になります。

    group_replication_recovery_compression_algorithm では、ドナーバイナリログからの状態転送用のグループレプリケーション分散リカバリ接続に許可される圧縮アルゴリズムを指定します。 使用可能なアルゴリズムは、protocol_compression_algorithms システム変数の場合と同じです。 詳細は、セクション4.2.8「接続圧縮制御」を参照してください。

    この設定は、クローニングをサポートするようにサーバーが設定されており (セクション18.4.3.2「分散リカバリのためのクローニング」 を参照)、分散リカバリ中にリモートクローニング操作が使用されている場合は適用されません。 この状態転送方法では、クローンプラグインの clone_enable_compression 設定が適用されます。

  • group_replication_recovery_get_public_key

    コマンド行形式 --group-replication-recovery-get-public-key[={OFF|ON}]
    システム変数 group_replication_recovery_get_public_key
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 OFF

    このシステム変数の値は、Group Replication の実行中に変更できますが、変更はグループメンバーで Group Replication を停止して再起動した後にのみ有効になります。

    group_replication_recovery_get_public_key は、RSA キーペアベースのパスワード交換に必要な公開キーをソースからリクエストするかどうかを指定します。 group_replication_recovery_public_key_path が有効な公開キーファイルに設定されている場合は、group_replication_recovery_get_public_key よりも優先されます。 この変数は、group_replication_recovery チャネル (group_replication_recovery_use_ssl=ON) を介した分散リカバリに SSL を使用せず、グループレプリケーションのレプリケーションユーザーアカウントが caching_sha2_password プラグイン (MySQL 8.0 のデフォルト) で認証される場合に適用されます。 詳細は、セクション18.5.3.1.1「キャッシュ SHA-2 認証プラグインを使用するレプリケーションユーザー」を参照してください。

  • group_replication_recovery_public_key_path

    コマンド行形式 --group-replication-recovery-public-key-path=file_name
    システム変数 group_replication_recovery_public_key_path
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    ファイル名
    デフォルト値 NULL

    このシステム変数の値は、Group Replication の実行中に変更できますが、変更はグループメンバーで Group Replication を停止して再起動した後にのみ有効になります。

    group_replication_recovery_public_key_path では、RSA キーペアベースのパスワード交換のソースで必要な公開キーのレプリカ側コピーを含むファイルへのパス名を指定します。 ファイルは PEM 形式である必要があります。 group_replication_recovery_public_key_path が有効な公開キーファイルに設定されている場合は、group_replication_recovery_get_public_key よりも優先されます。 この変数は、group_replication_recovery チャネルを介した分散リカバリに SSL を使用しておらず (group_replication_recovery_use_sslOFF に設定されている場合)、Group Replication のレプリケーションユーザーアカウントが caching_sha2_password プラグイン (MySQL 8.0 のデフォルト) または sha256_password プラグインで認証される場合に適用されます。 (sha256_password の場合、group_replication_recovery_public_key_path の設定は、MySQL が OpenSSL を使用して構築された場合にのみ適用されます。) 詳細は、セクション18.5.3.1.1「キャッシュ SHA-2 認証プラグインを使用するレプリケーションユーザー」を参照してください。

  • group_replication_recovery_reconnect_interval

    コマンド行形式 --group-replication-recovery-reconnect-interval=#
    システム変数 group_replication_recovery_reconnect_interval
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 60
    最小値 0
    最大値 31536000

    このシステム変数の値は、Group Replication の実行中に変更できますが、変更はグループメンバーで Group Replication を停止して再起動した後にのみ有効になります。

    group_replication_recovery_reconnect_interval では、分散リカバリに適したドナーがグループに見つからなかった場合の再接続試行の間隔を秒単位で指定します。

  • group_replication_recovery_retry_count

    コマンド行形式 --group-replication-recovery-retry-count=#
    システム変数 group_replication_recovery_retry_count
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 10
    最小値 0
    最大値 31536000

    このシステム変数の値は、Group Replication の実行中に変更できますが、変更はグループメンバーで Group Replication を停止して再起動した後にのみ有効になります。

    group_replication_recovery_retry_count は、参加しているメンバーが分散リカバリに使用可能なドナーへの接続を試みる回数を指定します。

  • group_replication_recovery_ssl_ca

    コマンド行形式 --group-replication-recovery-ssl-ca=value
    システム変数 group_replication_recovery_ssl_ca
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    文字列

    このシステム変数の値は、Group Replication の実行中に変更できますが、変更はグループメンバーで Group Replication を停止して再起動した後にのみ有効になります。

    group_replication_recovery_ssl_ca は、分散リカバリ接続用の信頼できる SSL 認証局のリストを含むファイルへのパスを指定します。 分散リカバリのための SSL の構成の詳細は、セクション18.5.2「Secure Socket Layer (SSL) を使用したグループ通信接続の保護」 を参照してください。

    このサーバーがクローニングをサポートするように設定されていて (セクション18.4.3.2「分散リカバリのためのクローニング」 を参照)、group_replication_recovery_use_sslON に設定している場合、Group Replication はクローン SSL オプション clone_ssl_ca の設定を group_replication_recovery_ssl_ca の設定と一致するように自動的に構成します。

  • group_replication_recovery_ssl_capath

    コマンド行形式 --group-replication-recovery-ssl-capath=value
    システム変数 group_replication_recovery_ssl_capath
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    文字列

    このシステム変数の値は、Group Replication の実行中に変更できますが、変更はグループメンバーで Group Replication を停止して再起動した後にのみ有効になります。

    group_replication_recovery_ssl_capath は、分散リカバリ接続用の信頼できる SSL 認証局証明書を含むディレクトリへのパスを指定します。 分散リカバリのための SSL の構成の詳細は、セクション18.5.2「Secure Socket Layer (SSL) を使用したグループ通信接続の保護」 を参照してください。

  • group_replication_recovery_ssl_cert

    コマンド行形式 --group-replication-recovery-ssl-cert=value
    システム変数 group_replication_recovery_ssl_cert
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    文字列

    このシステム変数の値は、Group Replication の実行中に変更できますが、変更はグループメンバーで Group Replication を停止して再起動した後にのみ有効になります。

    group_replication_recovery_ssl_cert では、分散リカバリ用のセキュアな接続を確立するために使用する SSL 証明書ファイルの名前を指定します。 分散リカバリのための SSL の構成の詳細は、セクション18.5.2「Secure Socket Layer (SSL) を使用したグループ通信接続の保護」 を参照してください。

    このサーバーがクローニングをサポートするように設定されていて (セクション18.4.3.2「分散リカバリのためのクローニング」 を参照)、group_replication_recovery_use_sslON に設定している場合、Group Replication はクローン SSL オプション clone_ssl_cert の設定を group_replication_recovery_ssl_cert の設定と一致するように自動的に構成します。

  • group_replication_recovery_ssl_cipher

    コマンド行形式 --group-replication-recovery-ssl-cipher=value
    システム変数 group_replication_recovery_ssl_cipher
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    文字列

    このシステム変数の値は、Group Replication の実行中に変更できますが、変更はグループメンバーで Group Replication を停止して再起動した後にのみ有効になります。

    group_replication_recovery_ssl_cipher では、SSL 暗号化に許可される暗号のリストを指定します。 分散リカバリのための SSL の構成の詳細は、セクション18.5.2「Secure Socket Layer (SSL) を使用したグループ通信接続の保護」 を参照してください。

  • group_replication_recovery_ssl_crl

    コマンド行形式 --group-replication-recovery-ssl-crl=value
    システム変数 group_replication_recovery_ssl_crl
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    ファイル名

    このシステム変数の値は、Group Replication の実行中に変更できますが、変更はグループメンバーで Group Replication を停止して再起動した後にのみ有効になります。

    group_replication_recovery_ssl_crl は、証明書失効リストを含むファイルを含むディレクトリへのパスを指定します。 分散リカバリのための SSL の構成の詳細は、セクション18.5.2「Secure Socket Layer (SSL) を使用したグループ通信接続の保護」 を参照してください。

  • group_replication_recovery_ssl_crlpath

    コマンド行形式 --group-replication-recovery-ssl-crlpath=value
    システム変数 group_replication_recovery_ssl_crlpath
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    ディレクトリ名

    このシステム変数の値は、Group Replication の実行中に変更できますが、変更はグループメンバーで Group Replication を停止して再起動した後にのみ有効になります。

    group_replication_recovery_ssl_crlpath は、証明書失効リストを含むファイルを含むディレクトリへのパスを指定します。 分散リカバリのための SSL の構成の詳細は、セクション18.5.2「Secure Socket Layer (SSL) を使用したグループ通信接続の保護」 を参照してください。

  • group_replication_recovery_ssl_key

    コマンド行形式 --group-replication-recovery-ssl-key=value
    システム変数 group_replication_recovery_ssl_key
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    文字列

    このシステム変数の値は、Group Replication の実行中に変更できますが、変更はグループメンバーで Group Replication を停止して再起動した後にのみ有効になります。

    group_replication_recovery_ssl_key では、セキュアな接続の確立に使用する SSL キーファイルの名前を指定します。 分散リカバリのための SSL の構成の詳細は、セクション18.5.2「Secure Socket Layer (SSL) を使用したグループ通信接続の保護」 を参照してください。

    このサーバーがクローニングをサポートするように設定されていて (セクション18.4.3.2「分散リカバリのためのクローニング」 を参照)、group_replication_recovery_use_sslON に設定している場合、Group Replication はクローン SSL オプション clone_ssl_key の設定を group_replication_recovery_ssl_key の設定と一致するように自動的に構成します。

  • group_replication_recovery_ssl_verify_server_cert

    コマンド行形式 --group-replication-recovery-ssl-verify-server-cert[={OFF|ON}]
    システム変数 group_replication_recovery_ssl_verify_server_cert
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 OFF

    このシステム変数の値は、Group Replication の実行中に変更できますが、変更はグループメンバーで Group Replication を停止して再起動した後にのみ有効になります。

    group_replication_recovery_ssl_verify_server_cert では、分散リカバリ接続でドナーによって送信された証明書のサーバー共通名の値をチェックするかどうかを指定します。 分散リカバリのための SSL の構成の詳細は、セクション18.5.2「Secure Socket Layer (SSL) を使用したグループ通信接続の保護」 を参照してください。

  • group_replication_recovery_tls_ciphersuites

    コマンド行形式 --group-replication-recovery-tls-ciphersuites=value
    導入 8.0.19
    システム変数 group_replication_recovery_tls_ciphersuites
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    文字列
    デフォルト値 NULL

    このシステム変数の値は、Group Replication の実行中に変更できますが、変更はグループメンバーで Group Replication を停止して再起動した後にのみ有効になります。

    group_replication_recovery_tls_ciphersuites では、分散リカバリ接続の接続暗号化に TLSv1.3 が使用され、このサーバーインスタンスが分散リカバリ接続のクライアント (参加メンバー) である場合に、許可されている 1 つ以上の暗号スイートのコロン区切りリストを指定します。 TLSv1.3 の使用時にこのシステム変数が NULL に設定されている場合 (システム変数を設定しない場合のデフォルト)、セクション6.3.2「暗号化された接続 TLS プロトコルおよび暗号」 にリストされているように、デフォルトで有効になっている暗号スイートが許可されます。 このシステム変数が空の文字列に設定されている場合、暗号スイートは許可されないため、TLSv1.3 は使用されません。 このシステム変数は、MySQL 8.0.19 以降で使用できます。 分散リカバリのための SSL の構成の詳細は、セクション18.5.2「Secure Socket Layer (SSL) を使用したグループ通信接続の保護」 を参照してください。

  • group_replication_recovery_tls_version

    コマンド行形式 --group-replication-recovery-tls-version=value
    導入 8.0.19
    システム変数 group_replication_recovery_tls_version
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    文字列
    デフォルト値 TLSv1,TLSv1.1,TLSv1.2,TLSv1.3

    このシステム変数の値は、Group Replication の実行中に変更できますが、変更はグループメンバーで Group Replication を停止して再起動した後にのみ有効になります。

    group_replication_recovery_tls_version では、このサーバーインスタンスが分散リカバリ接続のクライアント (参加メンバー) である場合に、接続暗号化に許可される TLS プロトコルのカンマ区切りリストを指定します。 指定したバージョンが連続していることを確認します (たとえば、TLSv1,TLSv1.1,TLSv1.2)。 このシステム変数が設定されていない場合、デフォルトの TLSv1,TLSv1.1,TLSv1.2,TLSv1.3 が使用されます。 クライアント (参加メンバー) およびサーバー (ドナー) としての各分散リカバリ接続に含まれるグループメンバーは、どちらもサポートするように設定されている最高のプロトコルバージョンをネゴシエートします。 このシステム変数は、MySQL 8.0.19 から使用できます。 分散リカバリのための SSL の構成の詳細は、セクション18.5.2「Secure Socket Layer (SSL) を使用したグループ通信接続の保護」 を参照してください。

  • group_replication_recovery_use_ssl

    コマンド行形式 --group-replication-recovery-use-ssl[={OFF|ON}]
    システム変数 group_replication_recovery_use_ssl
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 OFF

    このシステム変数の値は、Group Replication の実行中に変更できますが、変更はグループメンバーで Group Replication を停止して再起動した後にのみ有効になります。

    group_replication_recovery_use_ssl では、グループメンバー間のグループレプリケーション分散リカバリ接続で SSL を使用するかどうかを指定します。 分散リカバリのための SSL の構成の詳細は、セクション18.5.2「Secure Socket Layer (SSL) を使用したグループ通信接続の保護」 を参照してください。

    このサーバーがクローニングをサポートするように設定されている場合 (セクション18.4.3.2「分散リカバリのためのクローニング」 を参照)、このオプションを ON に設定すると、グループレプリケーションでは、リモートクローニング操作およびドナーのバイナリログからの状態転送に SSL が使用されます。 このオプションを OFF に設定すると、グループレプリケーションはリモートクローニング操作に SSL を使用しません。

  • group_replication_recovery_zstd_compression_level

    コマンド行形式 --group-replication-recovery-zstd-compression-level=#
    導入 8.0.18
    システム変数 group_replication_recovery_zstd_compression_level
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 3
    最小値 1
    最大値 22

    このシステム変数の値は、Group Replication の実行中に変更できますが、変更はグループメンバーで Group Replication を停止して再起動した後にのみ有効になります。

    group_replication_recovery_zstd_compression_level では、zstd 圧縮アルゴリズムを使用するグループレプリケーション分散リカバリ接続に使用する圧縮レベルを指定します。 許可されるレベルは 1 から 22 で、大きい値は圧縮レベルの増加を示します。 デフォルトの zstd 圧縮レベルは 3 です。 zstd 圧縮を使用しない分散リカバリ接続の場合、この変数は無効です。

    詳細は、セクション4.2.8「接続圧縮制御」を参照してください。

  • group_replication_single_primary_mode

    コマンド行形式 --group-replication-single-primary-mode[={OFF|ON}]
    システム変数 group_replication_single_primary_mode
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 ON

    このシステム変数は、グループ全体の構成設定です。 値の変更を有効にするには、すべてのグループメンバーで同じ値を持つ必要があり、グループレプリケーションの実行中は変更できず、グループ (group_replication_bootstrap_group=ON を使用したサーバーによるブートストラップ) を完全に再起動する必要があります。 MySQL 8.0.16 から、group_replication_switch_to_single_primary_mode() および group_replication_switch_to_multi_primary_mode() UDF を使用して、グループの実行中にこのシステム変数の値を変更できます。 詳細は、セクション18.4.1.2「グループモードの変更」を参照してください。

    group_replication_single_primary_mode は、読取り/書込みワークロードを処理する単一のサーバーを自動的に選択するようにグループに指示します。 このサーバーは PRIMARY で、その他はすべて SECONDARIES です。

  • group_replication_ssl_mode

    コマンド行形式 --group-replication-ssl-mode=value
    システム変数 group_replication_ssl_mode
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    列挙
    デフォルト値 DISABLED
    有効な値

    DISABLED

    REQUIRED

    VERIFY_CA

    VERIFY_IDENTITY

    このシステム変数の値は、Group Replication の実行中に変更できますが、変更はグループメンバーで Group Replication を停止して再起動した後にのみ有効になります。

    group_replication_ssl_mode は、グループレプリケーションメンバー間のグループ通信接続のセキュリティ状態を設定します。 使用可能な値は次のとおりです:

    DISABLED

    暗号化されていない接続を確立します (デフォルト)。

    REQUIRED

    サーバーがセキュアな接続をサポートしている場合は、セキュアな接続を確立します。

    VERIFY_CA

    REQUIRED と似ていますが、さらに、構成された認証局 (CA) 証明書に対してサーバー TLS 証明書を検証します。

    VERIFY_IDENTITY

    VERIFY_CA と似ていますが、さらに、サーバー証明書が接続が試行されるホストと一致することを確認します。

    グループ通信用の SSL の構成の詳細は、セクション18.5.2「Secure Socket Layer (SSL) を使用したグループ通信接続の保護」 を参照してください。

  • group_replication_start_on_boot

    コマンド行形式 --group-replication-start-on-boot[={OFF|ON}]
    システム変数 group_replication_start_on_boot
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 ON

    このシステム変数の値は、Group Replication の実行中に変更できますが、変更はグループメンバーで Group Replication を停止して再起動した後にのみ有効になります。

    group_replication_start_on_boot では、サーバーの起動時にグループレプリケーションを自動的に起動するか (ON) 起動しないか (OFF) を指定します。 このオプションを ON に設定すると、リモートクローニング操作を分散リカバリに使用した後、グループレプリケーションが自動的に再起動されます。

    サーバーの起動時に Group Replication を自動的に起動するには、CHANGE REPLICATION SOURCE TO | CHANGE MASTER TO ステートメントを使用して、分散リカバリのユーザー資格証明をサーバー上のレプリケーションメタデータリポジトリに格納する必要があります。 ユーザー資格証明をメモリーにのみ格納する START GROUP_REPLICATION ステートメントでユーザー資格証明を指定する場合は、group_replication_start_on_bootOFF に設定されていることを確認します。

  • group_replication_tls_source

    コマンド行形式 --group-replication-tls-source=value
    導入 8.0.21
    システム変数 group_replication_tls_source
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    列挙
    デフォルト値 mysql_main
    有効な値

    mysql_main

    mysql_admin

    このシステム変数の値は、Group Replication の実行中に変更できますが、変更はグループメンバーで Group Replication を停止して再起動した後にのみ有効になります。

    group_replication_tls_source は、Group Replication の TLS 材料のソースを指定します。

  • group_replication_transaction_size_limit

    コマンド行形式 --group-replication-transaction-size-limit=#
    システム変数 group_replication_transaction_size_limit
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 150000000
    最小値 0
    最大値 2147483647

    このシステム変数は、すべてのグループメンバーで同じ値を持つ必要があります。 このシステム変数の値は、Group Replication の実行中に変更できます。 変更はグループメンバーに対して即時に有効になり、そのメンバーで開始された次のトランザクションから適用されます。 このプロセス中、システム変数の値はグループメンバー間で異なってもかまいませんが、一部のトランザクションは拒否される可能性があります。

    group_replication_transaction_size_limit は、レプリケーショングループが受け入れる最大トランザクションサイズをバイト単位で構成します。 このサイズより大きいトランザクションは受信側メンバーによってロールバックされ、グループにブロードキャストされません。 大規模なトランザクションでは、システムの速度が低下する原因となる可能性のあるメモリー割当て、または大規模なトランザクションの処理がビジー状態であるためにメンバーに障害が発生した疑いがあるネットワーク帯域幅消費の観点から、レプリケーショングループの問題が発生する可能性があります。

    このシステム変数が 0 に設定されている場合、グループが受け入れるトランザクションのサイズに制限はありません。 MySQL 8.0 からは、このシステム変数のデフォルト設定は 150000000 バイト (約 143 MB) です。 トランザクションの処理にかかる時間はそのサイズに比例することに注意して、グループが許容する必要がある最大メッセージサイズに応じて、このシステム変数の値を調整します。 group_replication_transaction_size_limit の値は、すべてのグループメンバーで同じである必要があります。 大規模トランザクションの軽減戦略の詳細は、セクション18.9.2「グループレプリケーションの制限事項」 を参照してください。

  • group_replication_unreachable_majority_timeout

    コマンド行形式 --group-replication-unreachable-majority-timeout=#
    システム変数 group_replication_unreachable_majority_timeout
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 0
    最小値 0
    最大値 31536000

    このシステム変数の値は、Group Replication の実行中に変更でき、変更はただちに有効になります。 システム変数の現在の値は、動作が必要であることを意味する問題が発生したときに読み取られます。

    group_replication_unreachable_majority_timeout では、ネットワークパーティションが不足し、大部分のメンバーがグループを離れるまで待機できないメンバーの秒数を指定します。 5 つのサーバー (S1、S2、S3、S4、S5) のグループでは、(S1、S2) と (S3、S4、S5) の間に切断がある場合、ネットワークパーティションがあります。 最初のグループ (S1、S2) は、半分を超えるグループにコンタクトできないため、少数民族になりました。 大多数のグループ (S3、S4、S5) が実行されている間、少数民族グループはネットワークの再接続を指定された時間待機します。 このシナリオの詳細は、セクション18.4.4「ネットワークパーティション化」 を参照してください。

    デフォルトでは、group_replication_unreachable_majority_timeout は 0 に設定されています。これは、ネットワークパーティションのために少数民族で自身を検索するメンバーが、グループから離れるまで永久に待機することを意味します。 タイムアウトを設定した場合、指定した時間が経過すると、その少数民族によって処理されたすべての保留中のトランザクションがロールバックされ、少数パーティション内のサーバーは ERROR 状態に移行します。 メンバーの group_replication_autorejoin_tries システム変数が自動再結合の試行回数を指定するように設定されている場合、スーパー読取り専用モードでは、指定された回数だけグループへの再結合が試行されます。 メンバーに自動再結合の試行が指定されていない場合、または指定された試行回数を使い果たした場合は、システム変数 group_replication_exit_state_action で指定されたアクションに従います。

    警告

    対称グループがあり、たとえば (S0、S2) のメンバーが 2 つのみで、ネットワークパーティションがあり、大部分がない場合、構成されたタイムアウトの後、すべてのメンバーが ERROR 状態になります。

    このオプションの使用方法の詳細は、セクション18.6.6.2「使用できない大多数のタイムアウト」 を参照してください。

グループのレプリケーションステータス変数

このセクションでは、グループレプリケーションに関する情報を提供する status 変数について説明します。 変数の意味は次のとおりです:

  • group_replication_primary_member

    グループがシングルプライマリモードで動作している場合、プライマリメンバー UUID を表示します。 グループがマルチプライマリモードで動作している場合は、空の文字列が表示されます。

    警告

    group_replication_primary_member ステータス変数は非推奨になり、将来のバージョンで削除される予定です。

    セクション18.1.3.1.2「プライマリの検索」を参照してください。