Azure 클라우드에서 Oracle 데이터베이스를 보호합니다
Allen Cao, NetApp 솔루션 엔지니어링
이 섹션에서는 azacsnap 도구와 스냅샷 백업, 복원 및 스냅샷을 사용하여 Azure BLOB로 Oracle 데이터베이스를 보호하는 방법에 대해 설명합니다.
AzAcSnap 툴을 사용하여 Oracle 데이터베이스를 스냅샷으로 백업합니다
Azure Application-Consistent Snapshot Tool(AzAcSnap)은 스토리지 스냅샷을 생성하기 전에 애플리케이션 정합성 보장 상태로 전환하는 데 필요한 모든 오케스트레이션을 처리하여 타사 데이터베이스의 데이터를 보호하는 명령줄 도구입니다. 그런 다음 데이터베이스를 운영 상태로 되돌릴 수 있습니다.
Oracle의 경우 데이터베이스를 백업 모드로 전환하여 스냅샷을 생성한 다음 데이터베이스를 백업 모드에서 해제합니다.
데이터 및 로그 볼륨을 백업합니다
스냅샷 명령을 실행하는 단순 셸 스크립트를 사용하여 데이터베이스 서버 호스트에서 백업을 설정할 수 있습니다. 그런 다음 crontab에서 실행되도록 스크립트를 예약할 수 있습니다.
일반적으로 백업 빈도는 원하는 RTO 및 RPO에 따라 달라집니다. 스냅샷을 자주 생성하면 스토리지 공간이 더 많이 사용됩니다. 백업 빈도와 공간 소비 빈도는 서로 상충됩니다.
데이터 볼륨은 일반적으로 로그 볼륨보다 더 많은 스토리지 공간을 사용합니다. 따라서 데이터 볼륨에 대해 몇 시간마다 스냅샷을 생성하고 로그 볼륨에 대해 15-30분마다 더 자주 스냅샷을 생성할 수 있습니다.
백업 스크립트 및 스케줄링에 대한 다음 예를 참조하십시오.
데이터 볼륨 스냅샷의 경우:
# /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
로그 볼륨 스냅샷의 경우:
# /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 . 스냅샷의 최대 보존은 250개입니다.
|
스냅샷을 확인합니다
Azure Portal > Azure NetApp Files/volumes로 이동하여 스냅샷이 성공적으로 생성되었는지 확인합니다.
Oracle 로컬 백업에서 복원 및 복구
스냅샷 백업의 주요 이점 중 하나는 소스 데이터베이스 볼륨과 함께 존재하고, 운영 데이터베이스 볼륨을 거의 즉시 롤백할 수 있다는 것입니다.
기본 서버에서 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
-
스냅샷 백업 후에 테이블을 삭제합니다.
[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 대시보드에서 로그 볼륨을 마지막으로 사용 가능한 스냅샷으로 복구합니다. 볼륨 되돌리기 * 를 선택합니다.
-
되돌리기 볼륨을 확인하고 * Revert * 를 클릭하여 볼륨 재버전을 최신 사용 가능한 백업으로 완료합니다.
-
데이터 볼륨에 대해 동일한 단계를 반복하고 백업에 복구할 테이블이 포함되어 있는지 확인합니다.
-
볼륨 버전을 다시 확인하고 "되돌리기"를 클릭합니다.
-
컨트롤 파일의 복제본이 여러 개 있는 경우 컨트롤 파일을 다시 동기화하고 이전 컨트롤 파일을 사용 가능한 최신 복제본으로 대체합니다.
[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
이 화면에서는 삭제된 테이블이 로컬 스냅샷 백업을 사용하여 복구되었음을 보여 줍니다.