アーカイブモードは、特定のテナントのログアーカイブ機能を制御するために使用されます。ログアーカイブタスクを実行できるのは、アーカイブモードが有効な場合のみです。テナントでアーカイブモードを有効にする前にアーカイブの宛先が設定されており、その宛先が 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