AzureクラウドでOracleデータベースを保護
NetAppソリューションエンジニアリング担当Allen Cao氏
このセクションでは、azacsnapツールを使用してOracleデータベースを保護し、Azure Blobに対してスナップショットのバックアップ、リストア、およびスナップショットの階層化を行う方法について説明します。
AzAcSnapツールを使用して、Oracleデータベースをスナップショットとともにバックアップします
Azure Application-consistent Snapshotツール(AzAcSnap)は、サードパーティデータベースのデータ保護を可能にするコマンドラインツールです。このツールでは、ストレージスナップショットを取得する前に、それらをアプリケーションと整合性のある状態にするために必要なすべてのオーケストレーションを処理し、データベースを運用状態に戻します。
Oracleの場合は、データベースをバックアップモードにしてSnapshotを作成し、データベースをバックアップモードから解除します。
バックアップデータとログボリューム
データベース・サーバ・ホストでは、snapshotコマンドを実行する単純なシェル・スクリプトを使用して、バックアップを設定できます。スクリプトは'crontabから実行するようにスケジュールできます
一般に、バックアップの頻度はRTOとRPOに左右されます。Snapshotを頻繁に作成すると、より多くのストレージスペースが消費されバックアップの頻度とスペース消費のどちらを重視するかで差はありません。
通常、データボリュームはログボリュームよりも多くのストレージスペースを消費します。したがって、数時間ごとにデータボリュームにSnapshotを作成し、ログボリュームには15~30分ごとにSnapshotを作成することができます。
バックアップスクリプトおよびスケジュールの例を次に示します。
データボリュームSnapshotの場合:
# /bin/sh
cd /home/azacsnap/bin
. ~/.bash_profile
azacsnap -c backup --volume data --prefix acao-ora01-data --retention 36
azacsnap -c backup --volume other --prefix acao-ora01-log --retention 250
ログボリュームSnapshotの場合:
# /bin/sh
cd /home/azacsnap/bin
. ~/.bash_profile
azacsnap -c backup --volume other --prefix acao-ora01-log --retention 250
crontabスケジュール:
15,30,45 * * * * /home/azacsnap/snap_log.sh 0 */2 * * * /home/azacsnap/snap_data.sh
バックアップを設定する場合 azacsnap.json 構成ファイルで、バイナリボリュームを含むすべてのデータボリュームをに追加します dataVolume すべてのログボリュームをに追加します otherVolume 。Snapshotの最大保持数は250個です。
|
Snapshotを検証します
Azure portal > Azure NetApp Files / volumesに移動して、Snapshotが正常に作成されているかどうかを確認します。
ローカルバックアップからのOracleのリストアとリカバリ
Snapshotバックアップには、ソースデータベースボリュームと共存できるという大きなメリットがあります。プライマリデータベースボリュームは、ほぼ瞬時にロールバックできます。
プライマリ・サーバ上のOracleのリストアとリカバリ
次の例は、同じOracleホストのAzureダッシュボードとCLIからOracleデータベースをリストアおよびリカバリする方法を示しています。
-
リストアするデータベースにテストテーブルを作成します。
[oracle@acao-ora01 ~]$ sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on Mon Sep 12 19:02:35 2022 Version 19.8.0.0.0 Copyright (c) 1982, 2019, Oracle. All rights reserved. Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.8.0.0.0 SQL> create table testsnapshot( id integer, event varchar(100), dt timestamp); Table created. SQL> insert into testsnapshot values(1,'insert a data marker to validate snapshot restore',sysdate); 1 row created. SQL> commit; Commit complete. SQL> select * from testsnapshot; ID ---------- EVENT -------------------------------------------------------------------------------- DT --------------------------------------------------------------------------- 1 insert a data marker to validate snapshot restore 12-SEP-22 07.07.35.000000 PM
-
Snapshotバックアップのあとにテーブルを削除します。
[oracle@acao-ora01 ~]$ sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on Tue Sep 13 14:20:22 2022 Version 19.8.0.0.0 Copyright (c) 1982, 2019, Oracle. All rights reserved. Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.8.0.0.0 SQL> drop table testsnapshot; Table dropped. SQL> select * from testsnapshot; select * from testsnapshot * ERROR at line 1: ORA-00942: table or view does not exist SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> exit Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.8.0.0.0
-
Azure NetApp Files ダッシュボードで、ログボリュームを最新の使用可能なSnapshotにリストアします。「ボリュームを元に戻す」を選択します。
-
ボリュームの復元を確認し、*復帰*をクリックして、ボリュームを使用可能な最新のバックアップに復元します。
-
データボリュームに対して同じ手順を繰り返し、リカバリするテーブルがバックアップに含まれていることを確認します。
-
ボリュームが復元されたことを再度確認し、[元に戻す]をクリックします。
-
制御ファイルのコピーが複数ある場合は、それらの制御ファイルを再同期し、古い制御ファイルを使用可能な最新のコピーに置き換えます。
[oracle@acao-ora01 ~]$ mv /u02/oradata/ORATST/control01.ctl /u02/oradata/ORATST/control01.ctl.bk [oracle@acao-ora01 ~]$ cp /u03/orareco/ORATST/control02.ctl /u02/oradata/ORATST/control01.ctl
-
OracleサーバVMにログインしてsqlplusを使用してデータベースリカバリを実行してください。
[oracle@acao-ora01 ~]$ sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on Tue Sep 13 15:10:17 2022 Version 19.8.0.0.0 Copyright (c) 1982, 2019, Oracle. All rights reserved. Connected to an idle instance. SQL> startup mount; ORACLE instance started. Total System Global Area 6442448984 bytes Fixed Size 8910936 bytes Variable Size 1090519040 bytes Database Buffers 5335154688 bytes Redo Buffers 7864320 bytes Database mounted. SQL> recover database using backup controlfile until cancel; ORA-00279: change 3188523 generated at 09/13/2022 10:00:09 needed for thread 1 ORA-00289: suggestion : /u03/orareco/ORATST/archivelog/2022_09_13/o1_mf_1_43__22rnjq9q_.arc ORA-00280: change 3188523 for thread 1 is in sequence #43 Specify log: {<RET>=suggested | filename | AUTO | CANCEL} ORA-00279: change 3188862 generated at 09/13/2022 10:01:20 needed for thread 1 ORA-00289: suggestion : /u03/orareco/ORATST/archivelog/2022_09_13/o1_mf_1_44__29f2lgb5_.arc ORA-00280: change 3188862 for thread 1 is in sequence #44 ORA-00278: log file '/u03/orareco/ORATST/archivelog/2022_09_13/o1_mf_1_43__22rnjq9q_.arc' no longer needed for this recovery Specify log: {<RET>=suggested | filename | AUTO | CANCEL} ORA-00279: change 3193117 generated at 09/13/2022 12:00:08 needed for thread 1 ORA-00289: suggestion : /u03/orareco/ORATST/archivelog/2022_09_13/o1_mf_1_45__29h6qqyw_.arc ORA-00280: change 3193117 for thread 1 is in sequence #45 ORA-00278: log file '/u03/orareco/ORATST/archivelog/2022_09_13/o1_mf_1_44__29f2lgb5_.arc' no longer needed for this recovery Specify log: {<RET>=suggested | filename | AUTO | CANCEL} ORA-00279: change 3193440 generated at 09/13/2022 12:01:20 needed for thread 1 ORA-00289: suggestion : /u03/orareco/ORATST/archivelog/2022_09_13/o1_mf_1_46_%u_.arc ORA-00280: change 3193440 for thread 1 is in sequence #46 ORA-00278: log file '/u03/orareco/ORATST/archivelog/2022_09_13/o1_mf_1_45__29h6qqyw_.arc' no longer needed for this recovery Specify log: {<RET>=suggested | filename | AUTO | CANCEL} cancel Media recovery cancelled. SQL> alter database open resetlogs; Database altered. SQL> select * from testsnapshot; ID ---------- EVENT -------------------------------------------------------------------------------- DT --------------------------------------------------------------------------- 1 insert a data marker to validate snapshot restore 12-SEP-22 07.07.35.000000 PM SQL> select systimestamp from dual; SYSTIMESTAMP --------------------------------------------------------------------------- 13-SEP-22 03.28.52.646977 PM +00:00
この画面は、削除されたテーブルがローカルスナップショットバックアップを使用してリカバリされたことを示しています。