アーカイブモードは、特定のテナントのログアーカイブ機能を制御するために使用されます。ログアーカイブタスクを実行できるのは、アーカイブモードが有効な場合のみです。テナントがアーカイブモードを有効にする前に、アーカイブ先が設定されており、そのアーカイブ先がENABLE状態にある場合、アーカイブモードを有効にすると、システムは自動的にログアーカイブタスクを開始します。
背景
現在のクラスタには、sys、mysql_tenant、oracle_tenant の3つのテナントが存在し、テナント mysql_tenant と oracle_tenant はどちらもアーカイブモードが有効になっていないとします。この場合、以下の3つの方法でテナントのアーカイブモードを有効にすることができます。
システムテナントが他のテナントのアーカイブモードを有効にする
sys テナントは、クラスタ内のすべてのテナントまたは指定されたテナントのアーカイブモードを有効にできます。
rootユーザーでクラスタのsysテナントにログインします。以下のステートメントを実行して、アーカイブモードを有効にします。
クラスタ内のすべてのテナントのアーカイブモードを有効にする
この方法では、現在のクラスタ内のすべてのテナントのアーカイブモードが有効になります。
注意
この操作は現在のクラスタ内のすべてのテナントにのみ適用され、この操作以降に作成されるテナントに対しては、システムが自動的にアーカイブモードを有効にしません。
obclient [(none)]> ALTER SYSTEM ARCHIVELOG [TENANT = ALL];コマンドの実行が成功した後、この例では
mysql_tenantとoracle_tenantの両方のアーカイブモードが有効になります。sysテナントのoceanbase.DBA_OB_TENANTSビューで、クラスタ内のすべてのテナントのアーカイブモードを確認できます。例:
obclient [(none)]> SELECT TENANT_NAME, LOG_MODE FROM oceanbase.DBA_OB_TENANTS WHERE TENANT_TYPE = 'USER'\G *************************** 1. row *************************** TENANT_NAME: mysql_tenant LOG_MODE: ARCHIVELOG *************************** 2. row *************************** TENANT_NAME: oracle_tenant LOG_MODE: ARCHIVELOG 2 rows in set指定されたテナントのアーカイブモードを有効にする
この方法では、指定されたテナントのアーカイブモードのみが有効になり、クラスタ内の他のテナントには影響しません。
mysql_tenantテナントのログアーカイブを有効にする例:obclient [(none)]> ALTER SYSTEM ARCHIVELOG TENANT = mysql_tenant;説明
複数のテナントを同時に指定する場合は、テナント名の間に英字のカンマ (`,`) を使用して区切ります。
コマンドの実行が成功した後、この例では
mysql_tenantテナントのみがアーカイブモードに入ります。sysテナントのoceanbase.DBA_OB_TENANTSビューで、クラスタ内のすべてのテナントのアーカイブモードを確認できます。obclient [(none)]> SELECT TENANT_NAME, LOG_MODE FROM oceanbase.DBA_OB_TENANTS WHERE TENANT_TYPE = 'USER'\G *************************** 1. row *************************** TENANT_NAME: mysql_tenant LOG_MODE: ARCHIVELOG *************************** 2. row *************************** TENANT_NAME: oracle_tenant LOG_MODE: NOARCHIVELOG 2 rows in set
ユーザーテナントが自身のテナントでアーカイブモードを有効にする
ユーザーテナントは、他のテナントに影響を与えることなく、自身のテナントで直接アーカイブモードを有効にすることもできます。
テナント管理者がデータベースにログインします。
この例では、
rootユーザーを使用してmysql_tenantテナントにログインするか、SYSユーザーを使用してoracle_tenantテナントにログインすることができます。以下のステートメントを実行して、自身のテナントのアーカイブモードを有効にします。
obclient [xxx]> ALTER SYSTEM ARCHIVELOG;コマンドの実行が成功した後、そのテナントの
DBA_OB_TENANTSビューを使用して、そのテナントのアーカイブモードを直接確認できます。obclient [SYS]> SELECT TENANT_NAME, LOG_MODE FROM DBA_OB_TENANTS\G *************************** 1. row *************************** TENANT_NAME: oracle_tenant LOG_MODE: ARCHIVELOG 1 rows in set