一部のビジネスシナリオ(例えば、リージョン間のディザスタリカバリシナリオなど)においては、スタンバイデータベースとプライマリデータベース間の帯域幅は希少なリソースであり、適切に利用し、適切な速度制限をかける必要があります。
OceanBaseデータベースでは、スタンバイデータベースの速度制限に使用するためのクラスタレベルの構成パラメータを以下の2つ提供しています:
standby_fetch_log_bandwidth_limit:スタンバイテナントが属するクラスタ内で、スタンバイテナントがプライマリテナントまたはソーステナントからログ同期に使用できる全帯域幅の合計を設定します。この構成パラメータの値の範囲は [0, 10000G] で、デフォルト値は0であり、帯域幅に制限をかけないことを意味します。この構成パラメータの変更は即時に反映されます。構成パラメータ
standby_fetch_log_bandwidth_limitの値を変更すると、OceanBaseデータベース内部では適応型の割り当てポリシーを使用して、クラスタ内の複数のOBServerノード間で個々のノードで使用可能な適切な帯域幅の上限値を再割り当てし、帯域幅リソースの利用率を最大限に引き出します。_server_standby_fetch_log_bandwidth_limit:スタンバイテナントが属するクラスタ内の単一OBServerノードにおいて、スタンバイテナントがプライマリテナントまたはソーステナントからログ同期に使用できる帯域幅を設定します。この構成パラメータの値の範囲は [0, 1000G] で、デフォルト値は0であり、サーバーレベルでの速度制限を行わず、構成パラメータstandby_fetch_log_ratelimitによって割り当てられた帯域幅を使用することを意味します。この構成パラメータの変更は即時に反映されます。構成パラメータ
_server_standby_fetch_log_bandwidth_limitの値を変更すると、速度制限が設定されたOBServerノードはこの制限値を優先的に使用し、同時にstandby_fetch_log_bandwidth_limitで設定された制限値は残りのOBServerノードに割り当てられます。つまり、構成パラメータstandby_fetch_log_bandwidth_limitと_server_standby_fetch_log_bandwidth_limitの両方が設定されている場合、クラスタで使用可能な総帯域幅はその合計となります。
注意事項
スタンバイテナントの帯域幅制限値を特に小さく設定することは推奨されません。本番環境では、速度制限の設定がもたらす可能性のある業務への影響を評価する必要があります。例えば、スタンバイデータベースの速度制限により、スタンバイデータベースが継続的に遅延したり、ログの送信が途絶えたりする可能性があります。
OceanBaseデータベースでは、名前が「_」で始まる構成パラメータは隠れた構成パラメータと呼ばれ、開発者が障害のトラブルシューティングや緊急の運用保守時にのみ使用します。
設定方法
rootユーザーでスタンバイテナントが属するクラスタのsysテナントにログインします。以下のコマンドを実行して、スタンバイテナントの制限値を設定します。
クラスタ全体の利用可能な帯域幅を設定します
ALTER SYSTEM [SET] standby_fetch_log_bandwidth_limit = value;例:
ALTER SYSTEM SET standby_fetch_log_bandwidth_limit = '50M';単一OBServerノードの利用可能な帯域幅を設定します
ALTER SYSTEM [SET] _server_standby_fetch_log_bandwidth_limit = value SERVER [=] 'svr_ip:svr_port';ステートメントの使用方法:
svr_ip:設定対象のOBServerノードのIPアドレス。svr_port:設定対象のOBServerノードのRPCポート番号。- 単一のOBServerノードのみを指定できます。
例:
ALTER SYSTEM SET _server_standby_fetch_log_bandwidth_limit = '30M' SERVER = 'xx.xx.xx.xx:17854';