본문 바로가기

DB/Tibero

[Tibero] Backup & Recovery (1)

728x90

1. Backup & Recovery 개요

1.1. Backup(백업)

- 여러가지 유형의 장애로부터 데이터베이스를 보호하기 위함.
- MTBF(Mean Time Between Failure)를 증가시키고, MTTR(Mean Time To Recover)를 감소.
- 관리자는 시스템 장애 시 발생한 손실을 최소화하고, 복구 가능한 상태로 데이터베이스를 운용해야 함.
- 최소한 한 달에 한번 데이터베이스 전체 백업 및 하루에 한번씩 Export 백업 권장.
- 데이터베이스 관리자는 백업에 대한 정책을 수립하고 꼭 필요한 데이터를 최소한의 양으로 백업해야 함.
- 백업이 정상적으로 수행되었는지 주기적으로 검증하는 것을 권장.   

1.2. Recovery(복구)

- 시스템 장애 발생 시 복원 또는 시스템 작동을 유지하기 위한 절차 또는 기법.

 

2. Backup

2.1. 백업 형태

2.1.1. 논리적인 백업

- 데이터베이스의 논리적인 단위 백업.
  ex) Table, Index, Constraint, Sequence 등을 tbExport 툴로 백업.

 

2.1.2. 물리적인 백업

- 데이터베이스를 구성하는 파일을 운영체제 레벨에서 copy 명령으로 백업.
  ex) datafile, controlfile, archive, logfile 

 

 

2.2. 백업 모드

 

- NOARCHIVELOG 모드에서의 백업 (Offline Backup / Cold Backup)

데이터베이스를 구성하는 전체 파일에 대해 운영을 멈춘 상태에서 백업.
데이터베이스를 백업 받은 시점으로의 복구만 가능.

 

- ARCHIVELOG 모드에서의 백업 (Online Backup / Hot Backup)

데이터베이스 운영중에도 백업 가능.
Controlfile 생성문, Datafile, Archive logfile 백업.
백업된 archive logfile의 시점에 따라 datafile 백업 시점 이후로의 복구도 가능. 

 

- Consistent 백업

정상적인 Shutdown 후의 Backup.

 

- Inconsistent 백업

DB 운영중에 Backup 또는 정상종료 되지 않은 상태에서의 Backup.
NOARCHIVELOG 모드에서는 권장하지 않음. 

 

2.3. Backup Test

2.3.1. Controlfile Backup

- 데이터베이스의 구조를 이진파일 형태로 저장.
- 데이터베이스를 mount 할 때 반드시 필요.
- 파일이 없으면 복구를 하거나 재 생성해야 함.
- 두 개 이상의 controlfile로 구성을 권장하고 서로 다른 디스크에 위치 시킬 것.

* 동적 뷰 : select * from v$controlfile;

- controlfile 다중화 방법
1. 데이터베이스 tbdown
2. Control file을 다른 위치로 copy
3. $TB_SID.tip파일 내 CONTROL_FILES파라미터에 위에서 copy한 Control file 경로 추가
4. 데이터베이스 기동 tbboot

- 백업 방법
Offline Backup :
OS의 copy명령을 통해 별도의 위치에 copy
Online Backup :
SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE AS
                                       [백업할 파일 경로 및 이름] REUSE NORESETLOGS;

 

2.3.2. Online Backup (Datafile) : 운영 중 백업

* ARCHIVELOG 모드에서만 사용 가능.

* 동적 뷰  : select * from v$backup;

- 백업 방법
SQL> ALTER TABLESPACE SYSTEM BEGIN BACKUP;
(Tibero 데이터베이스에 온라인 백업 시작을 알림.
이때, select * from v$backup; 을 조회해보면 STATUS가 ACTIVE 상태여야 정상.)

SQL> !cp /home/tibero/tbdata/system001.dtf /home/tibero/tbdata_bak/system001.dtf
(OS 명령으로 해당 테이블스페이스의 데이터 파일 복사)

SQL> ALTER TABLESPACE SYSTEM END BACKUP;
(Tibero 데이터베이스에 온라인 백업 종료를 알림.
이때, select * from v$backup; 을 조회해보면 STATUS가 NOT ACTIVE 상태여야 정상.)

*주의사항 : 온라인 백업 중에는 데이터베이스의 변경 사항에 대한 log의 양이 늘어나기때문에 
                   가능하면 신속하게 작업을 종료할 것

 

2.3.3. Offline Backup : 종료 후 백업

Tibero를 정상 종료한 후 OS의 copy 명령을 이용해 Datafile, Logfile, Controlfile, Tip file 등을 백업.
MOUNT 또는 OPEN 모드에서 백업할 파일 정보를 조회할 수 있다.
ARCHIVELOG모드에서는 archive파일도 백업해야 한다.

1. v$datafile에서 백업 대상 파일 조회
SQL> select create_date, name, status from v$datafile;

2. v$logfile에서 백업 대상 logfile 조회
SQL> select group#, status, type, member from v$logfile;
3. v$controlfile에서 백업 대상 controlfile 조회
SQL> select * name from v$controlfile;
4. 티베로 정상 종료
tbdown

5. File Copy
앞에서 조회한 모든 파일 copy
cp /home/tibero/tbdata/* /home/tibero/tbdata_bak/

3. Recovery

3.1. 부트 과정별 복구

3.1.1. NOMOUNT

- 인스턴스 시작
- Database 생성 가능
- Controlfile 재생성 가능

 

3.1.2. MOUNT

- Datafile 이름 변경 가능
- Online Redo logfile Archive 옵션 활성화 / 비활성화 가능
- 전체 데이터베이스 복구 작업 가능

 

3.1.3. OPEN

- Controlfile에 정의한 모든 file 오픈

 

3.2. Recovery 종류

3.2.1. Crash Recovery

개요
- 시스템 이상, shutdown, abort 등 비정상적인 데이터베이스 종료 후
  Tibero가 기동하는 과정에서 자동으로 수행
- Online redo log file, Online data file, current control file만을 사용
- Undo 테이블스페이스를 이용하여 commit 되지않은 데이터에 대한 복구 작업

특징
- Database에 접근 가능한 Instance에 Failure가 발생한 경우
- Database가 기동될 때 자동 수행됨
- Redo의 roll forward and roll back

 

3.2.2. Media Recovery

개요
- 티베로를 구성하는 파일에 물리적인  손상이 발생하였거나 정상 동작을 할 수 없는 경우 복구하는 과정

특징
- DBA에 의한 명령에 의해 수동으로 수행 (ALTER DATABASE RECOVER....)
- Backup 받은 datafile을 이용해서 복구
- redo logfile 이나 archive logfile로부터 redo record를 적용

필요한 경우
- Datafile의 버전이 다른 경우
- Datafile의 손상으로 백업해 놓은 datafile을 이용하는 경우
- Controlfile을 복구한 경우

동적 뷰
- v$recover_file
- v$recovery_file_status
- v$logfile, v$controlfile, v$log

종류
- Complete Recovery : Archive logfile 과 Online logfile 을 모두 사용해서
                                    가장 최근 로그까지 모두 반영.
- Incomplete Recovery : logfile 일부만 적용하거나 특정시점으로 복구 가능.
                                       RESETLOGS 적용 필요.

필요한 사항
- 온라인 리두로그 파일에 손상이 있을 때
- 사용자의 실수로 data 유실
- archive 로그파일의 유실

RESETLOGS
- Incomplete recovery를 하게 되면 반드시 resetlogs로 데이터베이스를 기동해야 한다.
- resetlogs 이전 datafile, logfile 과 resetlogs 이 후의 파일은 서로 호환되지 않는다.
  resetlogs 이전에 백업 파일이나 logfile들을 이용하여 resetlogs 이후로 복구할 수 없다.
  또한 resetlogs 이후의 file들을 가지고 resetlogs 이전 상태로 incomplete 복구도 불가능 하다.
- resetlogs 시작한 경우, 반드시 새로운 백업을 받기를 권장한다.
- resetlogs로 데이터베이스 기동하기
  tbboot -t RESETLOGS

 

3.3. Recovery Test

3.3.1. Recovery Test 환경 구성

1. $TB_SID.tip파일 설정 (예시)


3. Tablespace 생성


4. User 생성

 

 

 

https://ittt.tistory.com/entry/Tibero-Backup-Recovery-2

 

[Tibero] Backup & Recovery (2)

https://ittt.tistory.com/entry/Tibero-Backup-Recovery-1 [Tibero] Backup & Recovery (1) 1. Backup & Recovery 개요 1.1. Backup(백업) - 여러가지 유형의 장애로부터 데이터베이스를 보호하기 위함. - MTBF(Mean Time Between Failure)를

ittt.tistory.com