フィジカル・スタンバイ・データベースの同期性能は、データベースの負荷、ストレージメディア、ネットワーク帯域幅など、さまざまな要因に影響されます。これらの要因を考慮しない場合、ログアーカイブに基づくフィジカル・スタンバイ・データベースでは、ログアーカイブとログ復元の並列度をそれぞれ制御するための2つの構成パラメータlog_archive_concurrencyとlog_restore_concurrencyが提供されています。
注意事項
注意
log_archive_concurrencyとlog_restore_concurrencyの2つの構成パラメータのデフォルト値を引き上げると、ログアーカイブおよびログ復元により多くの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の詳細については、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が2コアまたは4コアのテナント)では、デフォルト値を使用し、この構成パラメータの値を変更しないことを推奨します。
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を参照してください。