DB 백업 및 복구

티베로 Database 백업과 복구( DB Backup & Recovery) 의 기본 개념에 대해서 설명합니다. 논리적인 백업 (Logical Backup), 물리적인 백업 (Physical Backup), Offline 백업 / Cold 백업, Online 백업 / Hot 백업 등 세부 사항에 대해 소개합니다.

문서 다운로드

기본 개념

다음은 백업과 복구의 개념에 대한 설명입니다.

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

  • 복구(Recovery) 복구는 시스템에 장애가 발생하는 경우 복원 또는 시스템 작동을 유지하기 위한 절차 또는 기법입니다.

주요 용어

TSN

TSN은 데이터베이스의 버전 또는 Commit 버전으로 Data Concurrency Control, Redo Ordering, 복구 등에 사용되며 트랜잭션이 commit될 때 generate됩니다.

Checkpoint

Checkpoint는 주기적으로 사용자의 요청에 따라 메모리에 있는 모든 변경된(dirty) 블록을 디스크에 쓰는 작업을 말하며 복구에 필요한 Log 파일의 양을 줄여줍니다.

모든 Log Switch가 발생할 때 인스턴스가 NORMAL, POST_TX, IMMEDIATE 옵션으로 종료되면 사용자 요청에 따라 Checkpoint가 수동으로 발생(alter system checkpoint)하며, DBWR가 작동하기 전에 LGWR이 현재 Log 버퍼의 내용을 Online Log 파일에 Write하고 해당 dirty 버퍼에 mark 되면 이 정보를 DBWR이 받아서 모든 marked dirty 버 퍼를 디스크에 기록합니다.

Checkpoint는 Checkpoint TSN 이전에 발생한 Online Log 파일 내의 모든 변경 사항이 디스크에 저장 되음을 의 미합니다.

Log 모드

다음은 Log 모드에 대한 설명입니다.

  • NO ARCHIVE LOG (노 아카이브 로그) - 기본적인 Log 모드로 Redo Log 파일은 순환하여 사용되고 Log Switch가 발생하면 이전의 Log 파일을 Overwrite합니다. 이전의 Log가 없기 때문에 트랜잭션 기록 중 최근의 부분만 사용할 수 있습니다. - Redo Log가 Overwrite되면 결국 마지막 전체 백업(offline 백업)을 통한 복구만 가능합니다. - 백업은 반드시 데이터베이스가 정상 종료된 상태에서 해야 하며 이로 인해 서비스의 중지가 발생합니다.

  • ARCHIVE LOG (아카이브 로그) - 이 Log 모드에서 Redo Log 파일은 LOGA(Log Archiver)에 의해 백업이 완료되기 전에는 사용할 수 없고, Archive Log 파일은 미디어 복구(Media Recovery)에 사용될 수 있습니다. - 데이터베이스 기동 중에 백업을 할 수 있습니다.

DB Backup

본 장에서는 백업의 종류와 각 종류별 백업 방법에 대해 설명합니다.

개요

  • 논리적인 백업 (Logical Backup) 데이터베이스의 논리적인 단위의 백업으로 Export 툴로 백업합니다. 예를 들어 Table, Index, Constraint, Sequence 등이 있습니다.

  • 물리적인 백업 (Physical Backup) 데이터베이스를 구성하는 파일을 운영체제 레벨에서 copy 명령으로 백업합니다. 예를 들어 데이터 파일, 컨트롤 파 일, Archive Log 파일 등이 있습니다.

백업은 NO ARCHIVE LOG 모드와0 ARCHIVE LOG 모드의 처리 방법이 다릅니다.

  • NO ARCHIVE LOG 모드(Offline Backup / Cold Backup) 데이터베이스를 구성하는 전체 파일에 대해 운영을 멈춘 상태에서 백업을 하는 것으로 데이터베이스를 백업 받은 시점으로의 복구만 가능합니다.

  • ARCHIVE LOG 모드(Online Backup / Hot Backup) 데이터베이스 운영 중에도 백업이 가능하고 컨트롤 파일 생성문, 데이터 파일, Archive Log 파일을 백업합니다. 백업된 Archive Log 파일의 시점에 따라 데이터 파일 백업 시점 이전으로 복구도 가능합니다.

각 모드별로 Consistent와 Inconsistent 백업을 할 수 있습니다.

구분

설명

Consistent 백업

정상적인 Shutdown 후의 백업이다.

Inconsistent 백업

정상 종료되지 않은 상태에서의 백업 또는 DB 운영 중의 백업이다. (NO ARCHIVE LOG 모드에서는 사용을 권장하지 않음)

백업 방법

컨트롤 파일 백업 (Control File Backup)

컨트롤 파일은 데이터베이스의 구조를 이진 파일 형태로 저장하며 데이터베이스를 mount할 때 반드시 필요합니다. 만약 해당 파일이 없으면 복구하거나 재생성해야 하므로 데이터베이스를 구성할 때 컨트롤 파일을 2개 이상으로 구 성하고 각 파일은 서로 다른 디스크에 위치시킬 것을 권고합니다.

다음의 동적 뷰로 컨트롤 파일의 위치 정보와 다중화 여부를 확인합니다.

백업 방법

다음은 컨트롤 파일을 백업하는 과정에 대한 설명입니다.

  • 컨트롤 파일 다중화

    1. tbdown 명령어를 사용해서 데이터베이스를 down합니다.

    2. 컨트롤 파일을 다른 위치로 복사합니다.

    3. $TB_SID.tip 파일에서 CONTROL_FILES 파라미터를 추가합니다.

    4. tbboot 명령어로 데이터베이스를 기동시킵니다.

  • 컨트롤 파일 Trace 생성 O/S의 copy 명령을 통해 별도의 위치에 복사하고 아래 문법을 사용하여 Trace를 생성합니다.

항목

설명

FILENAME

생성할 Trace 파일 이름을 지정한다. (경로를 미지정 하는 경우 $TB_SID.tip 파일의

DB_CREATE_FILE_DEST 파라미터에 정의된 디렉터리에 생성됨)

REUSE

컨트롤 파일의 생성 문장을 백업할 때 이미 존재하는 파일을 재사용하려면 REUSE 옵션을 사용한다.

RESETLOGS

기존의 Log 파일은 무시하고 Log를 초기화한다.

NORESETLOGS

기존의 유효한 Log 파일을 계속 사용한다.

circle-info

참고 컨트롤 파일을 백업 할 때 컨트롤 파일 다중화가 필수 사항은 아니지만 컨트롤 파일 Trace 생성 전에 진행하는 것을 권장합니다.

Online Backup (온라인 백업)

Online Backup (온라인 백업)은 Tibero를 운영하는 중에 백업하는 것으로 ALTER DATABASE 명령으로 Tablespace의 데이터 파일 을 백업하며 ARCHIVE LOG 모드에서만 사용 가능합니다.

백업 방법

다음은 Online Backup (온라인 백업)하는 과정에 대한 설명입니다.

  1. 데이터베이스에 Online Backup의 시작을 알립니다.

  1. 동적 뷰(v$backup)로 아래와 같이 현재의 백업 모드를 확인합니다.

  1. O/S 명령으로 해당 Tablespace의 데이터 파일을 복사합니다.

  1. Tibero 데이터베이스에 Online Backup 종료를 알립니다.

circle-exclamation

Offline Backup (오프라인 백업)

Offline Backup (오프라인 백업)은Tibero를 종료한 후 백업하는 방법입니다.

Tibero를 정상 종료한 후 O/S의 copy 명령을 이용해 데이터 파일, Log 파일, 컨트롤 파일, Tip 파일 등을 백업합니다. MOUNT 또는 OPEN 모드에서 v$datafile, v$logfile 뷰를 통해 백업할 파일 정보를 조회할 수 있으며 ARCHIVE LOG 모드에서는 Archive 파일도 백업합니다.

백업 방법

다음은 Offline Backup하는 과정에 대한 설명합니다.

  1. 동적 뷰(v$datafile)로 아래와 같이 백업 대상 파일을 조회합니다.

  1. 동적 뷰(v$logfile)로 아래와 같이 백업 대상 Log 파일을 조회합니다.

  1. 동적 뷰(v$controlfile)로 아래와 같이 백업 대상 컨트롤 파일을 조회합니다.

  1. tbdown 명령어로 Tibero를 종료합니다.

  1. 조회한 백업 대상 파일을 복사합니다.

복구(Single)

본 장에서는 복구 작업에 대한 설명과 각 장애 상황별 해결 방법에 대해 설명합니다.

개요

복구는 시스템에 장애가 발생하는 경우 복원 또는 시스템 작동을 유지하기 위한 절차 또는 기법입니다. 다음은 부트 과정별 복구 관련 작업입니다.

  • NOMOUNT : 인스턴스 시작 - 데이터베이스 생성 가능 - 컨트롤 파일 재생성 가능

  • MOUNT : 컨트롤 파일 오픈 - 데이터 파일 이름 변경 가능 - Archive 모드 옵션 활성화 또는 비활성화 가능 - 전체 데이터베이스 복구 작업 가능

  • OPEN : 컨트롤 파일에 정의한 모든 파일 오픈

파손 복구(Crash Recovery)

시스템 이상이나 Shutdown abort 등 비정상적인 데이터베이스 종료 후 Tibero가 기동하는 과정에서 자동으로 수 행되는 복구 작업입니다. Online Redo Log 파일, Online 데이터 파일, Current 컨트롤 파일만을 사용하고, Undo Tablespace를 이용하여 commit되지 않은 데이터에 대해 복구 작업을 진행합니다.

다음은 파손 복구의 특징입니다.

  • 복구 작업이 자동으로 수행되며 데이터베이스 관리자가 데이터 복구를 위한 로그를 적용하는 등의 수작업을 하지 않고 자동으로 처리됩니다.

  • Online Log(Redo Log)를 사용하며 Archive Log는 사용하지 않습니다.

  • Redo의 Roll-forward와 Rollback을 사용합니다.

미디어 복구(Media Recovery)

미디어 복구는 Tibero를 구성하는 파일에 물리적인 손상이 발생하였거나 정상 동작을 할 수 없는 경우 복구하는 과 정입니다.

데이터 파일의 버전이 다른 경우(데이터 파일의 손상으로 백업해 놓은 데이터 파일을 이용하는 경우), 컨트롤 파일 을 복구한 경우, Online Redo Log 파일에 손상이 있는 경우, 사용자의 실수로 데이터가 유실된 경우, Archive Log 파일이 유실된 경우는 미디어 복구를 해야 합니다.

다음은 미디어 복구의 특징입니다.

  • DBA의 명령에 의해 수동으로 수행합니다. (ALTER DATABASE RECOVER ...)

  • 백업 받은 데이터 파일을 이용해서 복구합니다.

  • Redo Log 파일이나 Archive Log 파일로부터 Redo record를 적용합니다.

  • MOUNT 모드에서만 가능합니다.

미디어 복구의 종류는 다음과 같습니다.

구분

설명

완전 복구

Archive Log파일과 Online Log파일을 모두 사용해서 가장 최근 Log까지 모두 반영한다.

불완전 복구

Log 파일 일부만 적용 하거나 특정 시점으로 복구가 가능하다.

  • Point-in-Time 복구

  • Redo record의 일부만 적용

불완전 복구를 하게 되면 반드시 resetlogs로 데이터베이스를 기동해야 한다.

미디어 복구는 다음의 동적 뷰를 사용합니다.

RESETLOGS

불완전 복구를 하게 되면 반드시 resetlogs로 데이터베이스를 기동해야 합니다.

resetlogs 이전의 데이터 파일 및 Log 파일과 resetlogs 이후의 파일은 서로 호환되지 않습니다. resetlogs 이전의 백 업 파일이나 Log 파일들을 이용하여 resetlogs 이후로 복구할 수 없습니다. 또한 resetlogs 이후의 파일들을 가지고 resetlogs 이전 상태로 불완전 복구도 불가능합니다.

다음은 RESETLOGS의 사용 예입니다.

circle-info

참고: resetlogs로 시작한 경우 반드시 새로운 백업을 받기를 권장합니다.

복구 환경 구성

다음은 복구 환경을 구성하는 방법에 대한 설명입니다.

  1. Tibero 파라미터 설정

  1. 데이터베이스 생성

  1. Tablespace 생성

  1. 사용자 생성

복구 방법

컨트롤 파일 복구 (ControlFile recovery)

본 절에서는 컨트롤 파일을 각 상황별로 복구하는 방법에 대해 설명합니다.

컨트롤 파일이 삭제된 경우

운영상태에서 컨트롤 파일이 삭제되어 장애가 발생한 경우 백업된 컨트롤 파일의 생성 문장으로 컨트롤 파일을 재 생성합니다.

  • 장애 상황

  • 해결 방법

circle-info

참고 만약 운영상태에서 컨트롤 파일이 다른 파일로 덮어 씌워진 경우도 위의 방법으로 해결할 수 있습니다.

이중화 컨트롤 파일 하나가 삭제된 경우

데이터베이스가 down 상태에서 이중화 컨트롤 파일 하나가 삭제된 경우 삭제된 컨트롤 파일을 재생성하거나 파라 미터 파일의 내용을 수정합니다.

  • 장애 상황

  • 해결 방법

Online Log 파일 복구

redo Log 유실에 따른 Tibero의 동작은 다음과 같습니다.

  • boot할 때 redo 파일이 하나 이상 없는 경우 - boot가 실패합니다.

  • 정상적으로 기동 된 상태에서 동작 중 redo log 파일이 삭제되는 경우 - boot 이후 한 번도 사용되지 않은 redo log 파일이 삭제된 경우 (파일 디스크립터 없음) : 그룹 내에 이용 가능한 다른 멤버 파일이 있을 경우는 sys log에 메시지만 남기고 정상 동작합니다. : 그룹 내에 멤버가 모두 삭제된 경우 sys log에 에러 메시지를 남기면서 Tibero가 down됩니다. - boot 이후 사용된 적이 있는 redo log 파일이 삭제된 경우 (파일 디스크립터 있음) : 정상적으로 진행됩니다.

INACTIVE 모드 로그 그룹의 로그 멤버 하나가 삭제된 경우

운영상태에서 INACTIVE 모드 로그 그룹의 로그 멤버 하나가 삭제된 경우에는 장애가 발생한 멤버를 삭제한 후 재생성합니다.

  • 장애 상황

  • 해결 방법

INACTIVE 모드 로그 그룹이 삭제된 경우

운영상태에서 INACTIVE 모드 로그 그룹이 삭제된 경우 장애가 발생한 로그 그룹을 삭제한 후 재생성합니다.

  • 장애 상황

  • 해결 방법

CURRENT 모드 로그 그룹 삭제 후 abort로 종료된 경우

ARCHIVE LOG 모드 운영상태에서 CURRENT 모드 로그 그룹이 삭제되고 abort로 종료된 경우 특정 시점의 TSN을 이용하여 불완전 복구를 해야 합니다.

마지막 Archive Log 파일의 NEXT_TSN 정보를 이용하여 변경 기반 복구를 진행하며 v$archive_dest_files의 next_tsn 정보를 확인하거나 Archive 파일 덤프를 발생시켜 next_tsn 정보를 확인합니다. 변경 기반 복구 작업을 하는 경우에는 next_tsn - 1 값으로 진행합니다.

  • 장애 상황

  • 해결 방안

CURRENT 모드 로그 그룹 삭제 후 immediate로 종료된 경우

ARCHIVE LOG 모드 운영상태에서 CURRENT 모드 로그 그룹이 삭제되고 immediate로 종료된 경우 마지막까지commit된 데이터는 데이터 파일에 저장된 후 정상 종료되므로 취소 기반으로 복구를 진행합니다.

  • 장애 상황

  • 해결 방안

Temp Tablespace 복구

Temp 파일이 삭제된 경우

Temp Tablespace의 파일이 삭제된 경우 tbboot을 실행하면 Temp 파일이 자동적으로 생성됩니다.

  • 장애상황

  • 해결 방안

데이터 파일 장애 완전 복구

자동 완전 복구

ARCHIVE LOG 모드 운영상태에서 데이터 파일이 삭제된 경우 기존 백업된 데이터 파일을 복사한 후 AUTOMATIC 명령어로 복구합니다.

  • 장애 상황

  • 해결 방안

사용자 완전 복구

ARCHIVE LOG 모드 운영상태에서 데이터 파일이 삭제된 경우 Archive 파일로 생성된 것은 Archive 파일을 이용하 여 명시적으로 각각 복구 하고, Archive 파일로 생성되지 않은 current 상태인 것은 Redo 파일로 복구합니다.

  • 장애 상황

  • 해결 방안

백업 데이터 파일이 없을 경우 완전 복구

ARCHIVE LOG 모드 운영상태에서 백업 데이터 파일이 없을 경우 먼저 데이터 파일을 생성하고 AUTOMATIC 명령어로 완전 복구합니다. 단, 데이터 파일이 생성되는 시점부터 Archive 파일이 존재해야 합니다.

  • 장애 상황

  • 해결 방안

백업 데이터 파일이 있을 경우 Online 중에 완전 복구

백업 데이터 파일이 있고 Online 중에 데이터 파일이 삭제된 경우 해당 Tablespace를 Offline시키고 Partial 복구

(해당 Tablespace)를 합니다. 복구 후에는 Tablespace를 Online시킵니다.

  • 장애 상황

  • 해결 방안

데이터 파일 장애 불완전 복구

corrupt block 에러가 발생하는 경우 "alter system set enable_mr_corrupt_recovery=y "를 적용하거나$TB_SID.tip 파일에 파라미터 기재 후 재기동합니다. (Tibero6 FS01 까지)

  • 변경 기반(TSN) 불완전 복구

  • 시간 기반 불완전 복구

  • 취소 기반 불완전 복구

circle-info

참고 취소 기반 복구의 경우 DPL/DPI, nologging 데이터를 포함하면 log block corruption 발생 가능성이 있으므로 해당 작업 후에는 반드시 Full 백업 수행을 권장합니다.

변경 기반(TSN) 불완전 복구

ARCHIVE LOG 모드 운영상태에서 데이터 파일이 삭제된 경우 특정시점의 TSN을 이용하여 변경 기반 불완전 복구 를 합니다.

마지막 Archive Log 파일의 NEXT_TSN 정보를 이용하여 변경 기반 복구를 진행하며 v$archive_dest_files 의 next_tsn 정보나 Archive 파일 덤프를 발생시켜 next_tsn 정보를 확인합니다. 변경 기반 복구 작업을 하는 경우에는 next_tsn - 1 값으로 진행합니다.

  • 장애 상황

  • 해결 방안

시간 기반 불완전 복구

ARCHIVE LOG 모드 운영상태에서 데이터 파일이 삭제된 경우 시간을 지정하여 복구합니다.

  • 장애 상황

  • 해결 방안

취소 기반 불완전 복구

ARCHIVE LOG 모드 운영상태에서 데이터 파일이 삭제된 경우 Archive 파일을 이용하여 명시적으로 복구합니다.

  • 장애 상황

  • 해결 방안

복구(TAC)

본 장에서는 TAC의 복구 방법에 대해서 설명합니다.

개요

TAC 복구의 경우 Single DB 복구 절차와 유사하지만 아래와 같은 차이점이 있습니다.

  • 미디어 복구는 한 인스턴스만 MOUNT 모드로 부팅한 후 진행합니다.

  • 모든 NODE의 Archive Log 파일이 복구할 NODE의 LOG_ARCHIVE_DEST 파라미터의 지정된 디렉터리에 모두 위치해야 합니다.

복구 방법

본 절에서는 TAC 취소 기반의 불완전 복구에 대해서 설명합니다. TAC의 완전복구, 시간 기반 불완전 복구, TSN 기반 불완전 복구 절차는 Single DB와 동일하므로 자세한 내용은 “3.3. 복구 방법”을 참고합니다.

다음은 TAC 취소 기반의 불완전 복구 절차입니다.

  1. 취소 기반 복구를 시작합니다.

  1. 복구할 Log 파일을 등록합니다.

  1. 등록된 Log 파일을 merge하면서 Log 파일 끝에 도달할 때까지 복구를 진행합니다.

  1. 복구를 중지하려면 아래 명령을 실행합니다.

취소 기반의 불완전 복구

ARCHIVE LOG 모드 운영상태에서 데이터 파일이 삭제된 경우 Archive 파일로 생성된 것은 Archive 파일을 이용하 여 명시적으로 각각 복구하고, Archive 파일로 생성되지 않은 current 상태인 것은 Redo 파일로 복구합니다.

  • 장애 상황

  1. 테이블 및 데이터 입력(NODE1)

  1. 데이터 입력(NODE2)

  1. 데이터 파일 초기화(NODE1)

  • 해결 방안

  1. 백업된 파일로 데이터 파일 복구(NODE1)

  1. NODE2의 Archive Log 파일을 NODE1으로 전송

  1. 취소 기반 불완전 복구 수행

    1. Log 파일 확인

b. 취소 기반 복구시작

c. 복구할 Log 파일 등록 및 복구 진행

d. 취소 기반 복구 종료

e. 후처리

Appendix A. TAC 온라인 백업본 Single 구성

본 장에서는 TAC 온라인 백업본으로 Single 환경 구성과 구성 방법에 대해서 설명합니다.

환경 구성

다음과 같이 온라인 백업 및 데이터 생성합니다.

  • NODE1

    1. 데이터 파일 및 컨트롤 파일을 백업한다.

  1. 데이터를 생성합니다.

  1. Archive Log 파일을 생성합니다.

복구할 때 Current Redo가 없는 상태이므로 Archive 파일이 어디까지 있는지에 따라 복구된 내용이 달라질 수 있기 때문에 추가적으로 Archive Log 파일을 생성합니다.

  • NODE2

  1. 데이터를 생성합니다.

  1. Archive Log 파일을 생성합니다.

복구할 때 Current Redo가 없는 상태이므로 Archive 파일이 어디까지 있는지에 따라 복구된 내용이 달라질 수 있기 때문에 추가적으로 Archive Log 파일을 생성합니다.

구성 방법

다음은 TAC 온라인 백업본 환경을 구성하는 방법에 대한 설명입니다.

  1. 엔진을 설치한다. 설치에 대한 자세한 내용은 "Tibero 설치 안내서"를 참고합니다.

  2. $TB_SID.tip에 Tibero parameter 설정을 변경합니다.

  • dest가 명시된 파라미터 경로 수정

  • TAC 관련 파라미터 제거

  1. 데이터 파일, Archive Log 파일, 컨트롤 파일 생성 구문으로 Single 환경을 구성합니다. a. Single 서버 복사

b. 컨트롤 파일 재생성

c. 불완전 복구 수행

다음은 TSN 기반으로 불완전 복구를 수행한 예입니다.

d. temp 파일 생성

백업한 컨트롤 파일 스크립트내의 주석 스크립트 부분을 활용하여 temp 파일을 생성합니다.

Last updated