日常の運用では、システムパラメータ data_backup_dest で指定されたデフォルトパスではなく、任意のストレージディレクトリにデータをバックアップする必要が生じることがあります。データバックアップの開始時に TO 構文でバックアップ先パスを指定すると、そのパスにバックアップデータが書き込まれます。この指定は一回限りの操作に適用され、システムパラメータを変更したり、後続の自動スケジュールによるバックアップに影響したりすることはありません。
説明
V4.4.2系では、この機能はV4.4.2 BP3からサポートされています。
前提条件
指定ディレクトリへのバックアップを開始する前に、以下を確認してください:
アーカイブモードが有効になっており、ログアーカイブタスクの
STATUSがDOINGであること。ログアーカイブタスクの状態を確認する操作については、アーカイブ進捗状況の確認を参照してください。
アーカイブモードを有効にする操作については、アーカイブモードの有効化を参照してください。
バックアップ先パスが利用可能であること。バックアップ先では、NFS、Alibaba Cloud OSS、AWS S3、およびS3互換のオブジェクトストレージなどのストレージメディアを使用できます。
dest_pathの形式は、使用するバックアップメディアのパス規則に従う必要があります。各バックアップメディアの詳細な要件については、バックアップ前の準備を参照してください。
使用上の制限
クラスタのバージョンはV4.4.2 BP3以降である必要があります。それより前のバージョンでは、システムはエラーコード
ERROR 1235 (0A000) : %s not supportedを返します。これは、クラスタのバージョンが最低要件を満たしていないことを示します。クラスタをアップグレードしてから、この機能を使用してください。アーカイブモードが無効であるか、ログアーカイブタスクの状態が
DOINGではないときにバックアップを開始すると、システムはエラーコードERROR 9040 (HY000) : backup can not startを返します。データバックアップはアーカイブログに依存するため、先にアーカイブモードを有効にし、ログアーカイブタスクが正常に実行されていることを確認してから、バックアップを開始してください。システムテナントが
TO構文でバックアップを開始する場合、指定できるテナントは1つだけです。複数のテナントに対して同時にバックアップを開始することや、TENANT句を省略することはできません。これらの制約に違反すると、システムはエラーコードERROR 1235 (0A000) : %s not supportedを返します。- システムテナントが
BACKUP TENANT = t1, t2 TO 'dest_path'を実行して複数のテナントを指定すると、同じバックアップ先ルートパスが共有されるため、異なるテナントのバックアップセットが互いに上書きされます。 - システムテナントが
BACKUP DATABASE TO 'dest_path'を実行してTENANT句を指定しない場合、対象テナントの情報がないため、どのテナントのバックアップを開始すべきか判断できません。
- システムテナントが
ユーザーテナントは、自身のテナントに対してのみバックアップを実行できます。
TENANT句で他のテナントを指定することはできません。指定すると、システムはエラーコードERROR 1235 (0A000) : %s not supportedを返します。指定するバックアップ先パスは、有効でアクセス可能である必要があります。そうでない場合、システムはエラーコード
ERROR 9116 (HY000) : no I/O operation permission of the object storageを返します。指定したバックアップ先パスに過去のバックアップがない場合(初回バックアップ)、増分バックアップは自動的にフルバックアップに切り替わります。
TO構文でバックアップを開始しても、システムパラメータdata_backup_destの値は変更されません。その後、TO構文を使用せずにバックアップを開始すると、引き続きシステムパラメータで設定されたデフォルトパスが使用されるか、エラーが返されます。
指定ディレクトリへのバックアップの開始
上記の前提条件を満たしたら、以下の手順で指定ディレクトリへのバックアップを開始できます。
システムテナントによる指定ディレクトリへのバックアップの開始
sys テナントは、クラスタ内の指定したテナントのフルバックアップまたは増分バックアップを開始し、指定ディレクトリにデータをバックアップできます。
rootユーザーでクラスタのsysテナントにログインします。(オプション)テナントのバックアップの並列度を設定します。
バックアップの並列度は、テナントレベルの構成パラメータ
ha_low_thread_scoreで制御します。この構成パラメータは、バックアップやバックアップクリーンアップなどの中・低優先度のタスクキューで使用するスレッド数を指定します。値の範囲は [0, 100]、デフォルト値は0です。バックアップの開始前に、構成パラメータha_low_thread_scoreの値を適切に引き上げることができます。変更する際は、毎回値を2倍にすることを推奨します。構成パラメータha_low_thread_scoreを確認する操作については、データバックアップ関連パラメータの確認を参照してください。構成パラメータ
ha_low_thread_scoreの詳細については、ha_low_thread_scoreを参照してください。クラスタ内のすべてのテナントのバックアップ並列度を設定する
obclient [(none)]> ALTER SYSTEM SET ha_low_thread_score = 10 TENANT = all_user;または
obclient [(none)]> ALTER SYSTEM SET ha_low_thread_score = 10 TENANT = all;説明
OceanBaseデータベースV4.2.1以降では、
TENANT = all_userとTENANT = allは同じ意味を持ちます。すべてのユーザーテナントに適用する場合は、TENANT = all_userの使用を推奨します。TENANT = allは今後廃止され、使用できなくなります。クラスタ内の指定したテナントのバックアップ並列度を設定する
obclient [(none)]> ALTER SYSTEM SET ha_low_thread_score = 10 TENANT = mysql_tenant;
以下のステートメントを実行し、指定ディレクトリへのバックアップを開始します。
システムテナントでは、以下の方法で指定パスへのフルバックアップと増分バックアップを実行できます:
フルバックアップ
ALTER SYSTEM BACKUP TENANT = <tenant_name> TO 'dest_path' [PLUS ARCHIVELOG];増分バックアップ
ALTER SYSTEM BACKUP INCREMENTAL TENANT = <tenant_name> TO 'dest_path' [PLUS ARCHIVELOG];
ここで、
tenant_nameはバックアップ対象のテナント名、dest_pathはバックアップ先パスです。PLUS ARCHIVELOGはオプションです。PLUS ARCHIVELOGを追加すると、データバックアップと同時にアーカイブログも指定ディレクトリにバックアップできます。最終的に、バックアップディレクトリにアーカイブログを含む完全なデータセットが生成されます。このデータセットはリストアに使用できるため、アーカイブログに依存せずに、テナントのデータをMIN_RESTORE_SCNの位置までリストアできます。説明
システムテナントが `TO` 構文で指定できるテナントは1つだけです。複数のテナントに対して同時にバックアップを開始することや、`TENANT` 句を省略することはできません。
例:
テナント
mysql_tenantのフルバックアップを指定ディレクトリに作成します。obclient [(none)]> ALTER SYSTEM BACKUP TENANT = mysql_tenant TO 'file:///data/backup/sys_one_time_dest';コマンドが正常に実行されると、システムはテナント
mysql_tenantの全データを指定ディレクトリ/data/backup/sys_one_time_destにバックアップします。テナント
mysql_tenantの増分バックアップを指定ディレクトリに作成します。obclient [(none)]> ALTER SYSTEM BACKUP INCREMENTAL TENANT = mysql_tenant TO 'file:///data/backup/sys_one_time_dest';コマンドが正常に実行されると、システムはテナント
mysql_tenantの増分データを指定ディレクトリ/data/backup/sys_one_time_destにバックアップします。テナント
mysql_tenantのフルバックアップを開始し、アーカイブログも指定ディレクトリにバックアップします。obclient [(none)]> ALTER SYSTEM BACKUP TENANT = mysql_tenant TO 'file:///data/backup/self_contained_dest' PLUS ARCHIVELOG;コマンドが正常に実行されると、システムは指定ディレクトリ
/data/backup/self_contained_destに、アーカイブログを含む完全なデータセットを生成します。テナント
mysql_tenantの増分バックアップを開始し、アーカイブログも指定ディレクトリにバックアップします。obclient [(none)]> ALTER SYSTEM BACKUP INCREMENTAL TENANT = mysql_tenant TO 'file:///data/backup/self_contained_dest' PLUS ARCHIVELOG;コマンドが正常に実行されると、システムはテナント
mysql_tenantの増分データを指定ディレクトリ/data/backup/self_contained_destにバックアップし、アーカイブログも同じディレクトリにバックアップします。
バックアップ中は、進捗状況をリアルタイムで確認できます。具体的な操作については、データバックアップの進捗状況の確認を参照してください。
ユーザーテナントによる指定ディレクトリへのバックアップの開始
ユーザーテナントは、自身のテナントのフルバックアップまたは増分バックアップを開始し、指定ディレクトリにデータをバックアップできます。他のテナントには影響しません。
テナント管理者がデータベースにログインします。
この例では、
rootユーザーでmysql_tenantテナントにログインするか、SYSユーザーでoracle_tenantテナントにログインできます。(オプション)自身のテナントのバックアップ並列度を設定します。
バックアップの並列度は、テナントレベルの構成パラメータ
ha_low_thread_scoreで制御します。この構成パラメータは、バックアップやバックアップクリーンアップなどの中・低優先度のタスクキューで使用するスレッド数を指定します。値の範囲は [0, 100]、デフォルト値は0です。バックアップの開始前に、構成パラメータha_low_thread_scoreの値を適切に引き上げることができます。変更する際は、毎回値を2倍にすることを推奨します。構成パラメータha_low_thread_scoreを確認する操作については、データバックアップ関連パラメータの確認を参照してください。構成パラメータ
ha_low_thread_scoreの詳細については、ha_low_thread_scoreを参照してください。obclient [(none)]> ALTER SYSTEM SET ha_low_thread_score = 10;以下のステートメントを実行し、指定ディレクトリへのバックアップを開始します。
ユーザーテナントでは、以下の方法で指定パスへのフルバックアップと増分バックアップを実行できます:
フルバックアップ
ALTER SYSTEM BACKUP DATABASE TO 'dest_path' [PLUS ARCHIVELOG];増分バックアップ
ALTER SYSTEM BACKUP INCREMENTAL DATABASE TO 'dest_path' [PLUS ARCHIVELOG];
ここで、
dest_pathはバックアップ先パスです。PLUS ARCHIVELOGはオプションです。PLUS ARCHIVELOGを追加すると、データバックアップと同時にアーカイブログも指定ディレクトリにバックアップできます。最終的に、バックアップディレクトリにアーカイブログを含む完全なデータセットが生成されます。このデータセットはリストアに使用できるため、アーカイブログに依存せずに、テナントのデータをMIN_RESTORE_SCNの位置までリストアできます。例:
自身のテナントのフルバックアップを指定ディレクトリに作成します。
obclient [(none)]> ALTER SYSTEM BACKUP DATABASE TO 'file:///data/backup/one_time_dest';コマンドが正常に実行されると、システムは自身のテナントの全データを指定ディレクトリ
/data/backup/one_time_destにバックアップします。自身のテナントの増分バックアップを指定ディレクトリに作成します。
obclient [(none)]> ALTER SYSTEM BACKUP INCREMENTAL DATABASE TO 'file:///data/backup/one_time_dest';コマンドが正常に実行されると、システムは自身のテナントの増分データを指定ディレクトリ
/data/backup/one_time_destにバックアップします。自身のテナントのフルバックアップを開始し、アーカイブログも指定ディレクトリにバックアップします。
obclient [(none)]> ALTER SYSTEM BACKUP DATABASE TO 'file:///data/backup/self_contained_dest' PLUS ARCHIVELOG;コマンドが正常に実行されると、システムは指定ディレクトリ
/data/backup/self_contained_destに、アーカイブログを含む完全なデータセットを生成します。自身のテナントの増分バックアップを開始し、アーカイブログも指定ディレクトリにバックアップします。
obclient [(none)]> ALTER SYSTEM BACKUP INCREMENTAL DATABASE TO 'file:///data/backup/self_contained_dest' PLUS ARCHIVELOG;コマンドが正常に実行されると、システムは自身のテナントの増分データを指定ディレクトリ
/data/backup/self_contained_destにバックアップし、アーカイブログも同じディレクトリにバックアップします。
バックアップ中は、進捗状況をリアルタイムで確認できます。具体的な操作については、データバックアップの進捗状況の確認を参照してください。
ユーザーテナントの動作
フルバックアップ(BACKUP DATABASE)を開始した場合の、設定の組み合わせごとの動作を以下の表に示します。
TO構文 |
システムパラメータ data_backup_dest |
実行結果 |
|---|---|---|
TO 'dest_path' を指定 |
未設定 | バックアップが正常に実行され、全データが dest_path に書き込まれます。 |
TO 'dest_path' を指定 |
設定済み | バックアップが正常に実行されます。TO 構文で指定したバックアップ先パスが優先され、全データが dest_path に書き込まれます。 |
TO を指定しない |
未設定 | バックアップが失敗し、システムはエラーコード ERROR 9040 (HY000) : backup can not start を返します。この場合は、TO 構文でバックアップ先パスを指定するか、システムパラメータ data_backup_dest を設定してからバックアップを開始してください。 |
TO を指定しない |
設定済み | バックアップが正常に実行され、全データがシステムパラメータ data_backup_dest で設定されたデフォルトパスに書き込まれます。それ以前に TO 構文で開始したバックアップは、この動作に影響しません。 |
増分バックアップ(BACKUP INCREMENTAL DATABASE)を開始した場合の、状況ごとの動作を以下の表に示します。
TO構文 |
バックアップ先パスにフルバックアップが存在するか |
実行結果 |
|---|---|---|
TO 'dest_path' を指定 |
存在する | 増分バックアップが正常に実行され、バックアップセットがバックアップ先パスの既存のバックアップチェーンに追加されます。 |
TO 'dest_path' を指定 |
存在しない | バックアップが正常に実行されます。システムは増分バックアップを自動的にフルバックアップに切り替えます。 |