スタンバイテナントが継続同期モードに入ると、ビューを通じてリアルタイムでスタンバイテナントのログ同期の進捗状況を確認し、適宜調整を行うことができます。
プライマリテナントについては、少なくとも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の同期進捗が遅いことがわかります。