スタンバイテナントが継続同期モードに入ると、ビューを通じてスタンバイテナントのログ同期の進捗状況をリアルタイムで確認し、適時に調整を加えることができます。
プライマリテナントについては、各プライマリテナントは少なくとも2つのログストリームを持ちます。すなわち、1つのシステムログストリームと1つの一般ログストリームです。スタンバイテナントもプライマリテナントと同じ数のログストリームを持ち、少なくとも2つのログストリームがあります。そのため、ログ同期の進捗状況は複数のログストリームの合計で考慮する必要があります。
同一テナント内では、異なるログストリーム間の同期時間は比較可能であり、スタンバイテナント全体の同期進捗状況は各ログストリームの同期進捗状況のうち最小値となります。
システムテナントによるスタンバイテナントの同期進捗状況の確認
システムテナントは、すべてのテナントまたは指定したテナントの同期進捗状況を確認できます。
管理者ユーザーとして、スタンバイテナントが存在するクラスタの
sysテナントにログインします。以下のステートメントを実行し、指定したスタンバイテナントの同期進捗状況を確認します。
SELECT TENANT_NAME, TENANT_ID, TENANT_ROLE, SCN_TO_TIMESTAMP(SYNC_SCN) FROM oceanbase.DBA_OB_TENANTS WHERE TENANT_NAME = 'standby_tenant';クエリ結果は次のとおりです:
+----------------+-----------+-------------+----------------------------+ | TENANT_NAME | TENANT_ID | TENANT_ROLE | SCN_TO_TIMESTAMP(SYNC_SCN) | +----------------+-----------+-------------+----------------------------+ | standby_tenant | 1004 | STANDBY | 2023-04-14 16:38:53.938774 | +----------------+-----------+-------------+----------------------------+ 1 row in setクエリ結果では、
SCN_TO_TIMESTAMP(SYNC_SCN)列にスタンバイテナントの現在の同期進捗状況が表示されます。この時間を実際の時間と比較し、差が大きい場合は、スタンバイテナントの同期進捗がプライマリテナントに遅れていることを意味します。DBA_OB_TENANTSビューの詳細については、DBA_OB_TENANTSを参照してください。(オプション)スタンバイテナントの同期進捗が遅いことを確認した後、以下のコマンドを実行して、同期進捗が最も遅いログストリームをさらに確認できます。
SELECT LS_ID, SCN_TO_TIMESTAMP(END_SCN) FROM oceanbase.GV$OB_LOG_STAT WHERE TENANT_ID = 1004 AND ROLE = 'LEADER';クエリ結果は次のとおりです:
+-------+----------------------------+ | LS_ID | SCN_TO_TIMESTAMP(END_SCN) | +-------+----------------------------+ | 1 | 2023-04-14 16:42:34.249988 | | 1001 | 2023-04-14 16:42:34.295123 | +-------+----------------------------+クエリ結果によると、ログストリーム
1の同期進捗が遅いことがわかります。
スタンバイテナントにおける自身のテナントの同期進捗状況の確認
スタンバイテナントでも、自身のテナントの現在の同期進捗状況を確認できます。
管理者ユーザーでスタンバイテナントにログインします。
以下のステートメントを実行して、スタンバイテナントの同期進捗状況を確認します。
MySQLモード
SELECT TENANT_NAME, TENANT_ROLE, SCN_TO_TIMESTAMP(SYNC_SCN) FROM oceanbase.DBA_OB_TENANTS;クエリ結果は次のとおりです:
+----------------+-------------+----------------------------+ | TENANT_NAME | TENANT_ROLE | SCN_TO_TIMESTAMP(SYNC_SCN) | +----------------+-------------+----------------------------+ | standby_tenant | STANDBY | 2023-04-14 16:38:53.938774 | +----------------+-------------+----------------------------+Oracleモード
SELECT TENANT_NAME, TENANT_ROLE, SCN_TO_TIMESTAMP(SYNC_SCN) FROM SYS.DBA_OB_TENANTS;クエリ結果は次のとおりです:
+----------------+-------------+------------------------------+ | TENANT_NAME | TENANT_ROLE | SCN_TO_TIMESTAMP(SYNC_SCN) | +----------------+-------------+------------------------------+ | standby_tenant | STANDBY | 14-APR-23 16:38:53.938774 PM | +----------------+-------------+------------------------------+
クエリ結果において、
SCN_TO_TIMESTAMP(SYNC_SCN)列はスタンバイテナントの現在の同期進捗状況を示しています。この時間を実際の時間と比較し、差が大きい場合は、スタンバイテナントの同期進捗がプライマリテナントに遅れていることを意味します。DBA_OB_TENANTSビューの詳細については、DBA_OB_TENANTS(MySQLモード)およびDBA_OB_TENANTS(Oracleモード)を参照してください。(オプション)スタンバイテナントの同期進捗が遅いことを確認した後、以下のコマンドを実行して、同期進捗が最も遅いログストリームをさらに詳しく照会できます。
MySQLモード
SELECT LS_ID, SCN_TO_TIMESTAMP(END_SCN) FROM oceanbase.GV$OB_LOG_STAT WHERE ROLE = 'LEADER';クエリ結果は次のとおりです:
+-------+----------------------------+ | LS_ID | SCN_TO_TIMESTAMP(END_SCN) | +-------+----------------------------+ | 1 | 2023-04-14 16:42:34.249988 | | 1001 | 2023-04-14 16:42:34.295123 | +-------+----------------------------+Oracleモード
SELECT LS_ID, SCN_TO_TIMESTAMP(END_SCN) FROM SYS.GV$OB_LOG_STAT WHERE ROLE = 'LEADER';クエリ結果は次のとおりです:
+-------+-----------------------------+ | LS_ID | SCN_TO_TIMESTAMP(END_SCN) | +-------+-----------------------------+ | 1 | 14-APR-23 16:42:34.249988 PM| | 1001 | 14-APR-23 16:42:34.295123 PM| +-------+-----------------------------+
クエリ結果によると、ログストリーム
1の同期進捗が遅いことがわかります。