物理スタンバイデータベースの同期パフォーマンスは、データベース負荷、ストレージメディア、ネットワーク帯域幅など、多くの要因の影響を受けます。これらの要因を考慮しない場合、ログアーカイブを利用する物理スタンバイデータベースでは、ログアーカイブとログ復元の並列度をそれぞれ制御するための構成パラメータ 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の詳細については、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.