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