物理スタンバイデータベースの同期パフォーマンスは、データベース負荷、ストレージメディア、ネットワーク帯域幅など、さまざまな要因の影響を受けます。これらの要因を考慮しない場合、ログアーカイブに基づく物理スタンバイデータベースでは、ログアーカイブとログ復元の並列度を制御するための2つの構成パラメータ log_archive_concurrency と log_restore_concurrency が提供されています。
注意事項
注意
log_archive_concurrency と log_restore_concurrency のデフォルト値を引き上げると、ログアーカイブおよびログ復元に割り当てられるCPUとメモリリソースが増加し、通常のデータベース実行に悪影響を及ぼす可能性があります。そのため、明確なパフォーマンスボトルネックが確認され、実際に検証されていない限り、構成パラメータ log_archive_concurrency および log_restore_concurrency のデフォルト値を変更することは推奨されません。
スタンバイテナントのログ同期パフォーマンスの調整
スタンバイテナントのログ復元並列度の調整
スタンバイテナントのログ同期プロセス中に、スタンバイテナントの同期進捗がプライマリテナントと大きく異なる場合、スタンバイテナントのログ同期がプライマリテナントに遅れている可能性があります。スタンバイテナントと復元ソース間の帯域幅に余裕がある場合は、テナントレベル構成パラメータ log_restore_concurrency を変更してスタンバイテナントのログ復元並列度を調整し、ログ同期性能を向上させることができます。
スタンバイテナントのログ同期状態を詳細に確認する操作については、ログ同期進捗の確認を参照してください。
管理者ユーザーでスタンバイテナント、またはそのクラスタの
sysテナントにログインします。適切なステートメントを選択し、構成パラメータ
log_restore_concurrencyを設定します。テナントレベル構成パラメータ
log_restore_concurrencyは、ログ復元の総ワーカースレッド数を設定します。値の範囲は [0, 100] で、デフォルト値は0です。これは、OceanBaseデータベースの適応型ログ復元並列度を使用することを意味します。この構成パラメータの変更は動的に反映され、OBServerノードの再起動は不要です。デフォルト値の使用を推奨します。注意
小規模テナント(CPUが2コア、4コアのテナント)では、デフォルト値を使用し、この構成パラメータの値を調整しないことを推奨します。
スタンバイテナントと復元ソース間の帯域幅に十分な余裕があることを確認した場合、並列度を引き上げることができます。復元ソースのメディアがNFSの場合、
log_restore_concurrencyを5に設定することで、ほとんどのシナリオを満たせます。SQLステートメントは以下のとおりです:
ALTER SYSTEM SET log_restore_concurrency = value [TENANT [=] tenant_name];ステートメントの使用方法:
SET:MySQLモードでは、このキーワードはオプションです。value:変更後の構成パラメータの値を指定します。TENANT [=] tenant_name:システムテナントのみが、テナントを指定することでテナントレベル構成パラメータを設定できます。
例:
スタンバイテナントが自身のログ同期性能を調整する場合
obclient> ALTER SYSTEM SET log_restore_concurrency = 5;sysテナントが指定したテナントのログ同期性能を調整する場合obclient> ALTER SYSTEM SET log_restore_concurrency = 5 TENANT = standby_tenant;
詳細については、log_restore_concurrencyを参照してください。
ネットワークスタンバイデータベース上の並列ログ転送プロトコルを無効にする
並列ログ転送フレームワークでは、スタンバイテナント(スタンバイデータベース)がRPCを送信する頻度が高くなります。パフォーマンスや安定性を考慮して、ネットワークスタンバイデータベース上の並列ログ転送プロトコルを無効にすることで、パフォーマンスオーバヘッドを削減できます。
管理ユーザーでスタンバイテナント、またはそのスタンバイテナントが属するクラスタの
sysテナントにログインします。現在のパラメータ
_ob_enable_standby_db_parallel_log_transportの値を確認します。テナントレベルの隠れた構成パラメータ
_ob_enable_standby_db_parallel_log_transportは、ネットワークスタンバイデータベース上の並列ログ転送プロトコルを有効にするかどうかを制御します。デフォルト値はTrueで、ネットワークスタンバイデータベース上の並列ログ転送プロトコルが有効であることを示します。この構成パラメータの変更は動的に反映され、OBServerノードの再起動は不要です。MySQLモードOracleモードMySQLモードで隠れたパラメータの値を照会する:
obclient [oceanbase]> SELECT * FROM oceanbase.GV$OB_PARAMETERS WHERE NAME LIKE '_ob_enable_standby_db_parallel_log_transport';Oracleモードで隠れたパラメータの値を照会する:
obclient [SYS]> SELECT * FROM SYS.GV$OB_PARAMETERS WHERE NAME LIKE '_ob_enable_standby_db_parallel_log_transport';クエリ結果は次のとおりです:
+----------------+----------+-------+--------+-----------+----------------------------------------------+-----------+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------+-------------------+---------------+-----------+ | SVR_IP | SVR_PORT | ZONE | SCOPE | TENANT_ID | NAME | DATA_TYPE | VALUE | INFO | SECTION | EDIT_LEVEL | DEFAULT_VALUE | ISDEFAULT | +----------------+----------+-------+--------+-----------+----------------------------------------------+-----------+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------+-------------------+---------------+-----------+ | 172.xx.xxx.xxx | 2882 | zone1 | TENANT | 1004 | _ob_enable_standby_db_parallel_log_transport | NULL | True | Specifies whether the parallel log transport protocol is enabled on the standby database. The parallel log transport protocol is enabled only if this parameter is true and the primary database is compatible with the parallel log transport protocol. | LOGSERVICE | DYNAMIC_EFFECTIVE | True | YES | +----------------+----------+-------+--------+-----------+----------------------------------------------+-----------+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------+-------------------+---------------+-----------+ 1 row in set適切な構文を選択し、構成パラメータ
_ob_enable_standby_db_parallel_log_transportを設定します。SQLステートメントは次のとおりです:
ALTER SYSTEM [SET] _ob_enable_standby_db_parallel_log_transport = value [TENANT [=] tenant_name];ステートメントの使い方:
SET:MySQLモードでは、このキーワードはオプションです。value:変更後の構成パラメータの値を指定します。TENANT [=] tenant_name:システムテナントのみが、テナントを指定することでテナントレベルの構成パラメータを設定できます。
例:
スタンバイテナントが自身のテナント上の並列ログ転送プロトコルを無効にする
MySQLモードOracleモードMySQLテナントが自身のテナント上の並列ログ転送プロトコルを無効にする:
obclient> ALTER SYSTEM SET _ob_enable_standby_db_parallel_log_transport = False;Oracleテナントが自身のテナント上の並列ログ転送プロトコルを無効にする:
obclient> ALTER SYSTEM SET "_ob_enable_standby_db_parallel_log_transport" = False;sysテナントが指定したテナント上の並列ログ転送プロトコルを無効にするobclient> ALTER SYSTEM SET _ob_enable_standby_db_parallel_log_transport = False TENANT = standby_tenant;
プライマリテナントのログアーカイブ速度の調整
プライマリテナントのログアーカイブ処理中に、アーカイブポイントが現在時刻と大きく離れている場合は、ログアーカイブ速度にボトルネックがある可能性があります。この場合、テナントレベル構成パラメータ log_archive_concurrency を変更して、プライマリテナントのログアーカイブ並列度を調整し、ログアーカイブ速度を向上させることができます。
プライマリテナントのログアーカイブ進捗状況を確認する詳細な操作については、アーカイブ進捗状況の確認を参照してください。
管理者ユーザーでプライマリテナント、またはそのクラスタ内の
sysテナントにログインします。適切な構文を選択し、構成パラメータ
log_archive_concurrencyを設定します。テナントレベル構成パラメータ
log_archive_concurrencyは、ログアーカイブのワーカースレッド総数を設定します。この構成パラメータは動的に反映され、OBServerノードの再起動は不要です。値の範囲は [0, 100] で、デフォルト値は0です。これはOceanBaseデータベースの適応型ログアーカイブ並列度を使用することを意味します。デフォルト値の使用を推奨します。注意
小規模テナント(CPUが2C、4Cのテナント)では、デフォルト値を使用し、この構成パラメータの値を調整しないことを推奨します。
SQLステートメントは以下のとおりです:
ALTER SYSTEM [SET] log_archive_concurrency = value [TENANT [=] tenant_name];ステートメントの使い方:
SET:MySQLモードでは、このキーワードはオプションです。value:変更後の構成パラメータの値を指定します。TENANT [=] tenant_name:システムテナントのみが、テナントを指定することでテナントレベル構成パラメータを設定できます。
例:
プライマリテナントが自身のログアーカイブ速度を調整する場合
obclient> ALTER SYSTEM SET log_archive_concurrency = 10;sysテナントが指定したプライマリテナントのログアーカイブ速度を調整する場合obclient> ALTER SYSTEM SET log_archive_concurrency = 10 TENANT = mysql;
構成パラメータ
log_archive_concurrencyの詳細については、log_archive_concurrencyを参照してください。