본문 바로가기

Intern/DB2

[DB2] Backup & Restore

반응형

1. Backup

: 데이터 페이지를 물리적으로 복사

-> 메타데이터, DB 설정, History, 테이블 스페이스 정의 등의 정보가 포함

 

(1) DB 구성에 따른 방법

데이터 크기

데이터 보존 장소

Backup 주기

로그 방식

 

(2) 백업 종류 및 대상

온라인 백업 : DML 수행시 실행 가능. 단, 테이블 백업 동안은 삭제 불가 [잠금 가능성 존재]

-> 사용자가 DB 접속 상태에서 백업 -> 백업시 변경된 데이터에 대한 로그 파일 함께 보관 [아카이브 로그만 지원]

오프라인 백업 : 잠금 걱정 없음

-> 사용자 접속 안한 상태에서 백업 -> 백업 이미지 파일만 보관해 복구

 

데이터베이스 : 모든 테이블스페이스 백업

테이블 스페이스 : 지정한 테이블스페이스 백업 [아카이브 로그만 지원]

 

(3) 백업의 범위 [DB 구성에 따라 차이]

FULL / INCREMANTAL / DELTA / TABLESPACE

 

FULL : 전체 DB의 모든 데이터와 제어 정보 저장

-> 마지막 생성한 FULL BACKUP 이미지를 안전하게 보관 -> 온라인 백업시 백업 작업 동안 사용된 로그 파일 보관

[db2 backup db <DB명> : 순환 로깅 : 오프라인 백업/ 아카이브 로깅 : 오프라인, 온라인 백업 / 원격 db도 백업 가능]

[db2 get db cfg for <DB명> | grep -i LOGARCHMETH1 -> OFF가 아니면 아카이브 로깅]

 

온라인 백업

: db2 backup db <DB명> online

db2 backup db <DB명> user <사용자명> using <암호명> online to <경로명>

오프라인 백업
: db2 backup db <DB명>

db2 backup db <DB명> user <사용자명> using <암호명> to <경로명>

 

-> list history 명령어를 이용해 DB에 대한 backup 이력 사항 및 backup 이미지 정보를 확인

:db2 list history backup all for <DB명>

 

INCREMENTAL : 최근의 FULL 백업 이후 변경된 부분만 백업 [아카이브 로그만 지원]

-> LOGARCHMETH1, TRACKMOD 설정해서 지원 -> 백업 작업 동안 사용된 로그 파일은 복구를 위해 안전하게 보관 

[Backup DB 명령어의 INCREMENTAL/DELTA 옵션을 이용 [아카이브 로그만 지원, TRACKMOD 구성 변수가 ON]

-> 최근의 FULL 또는 INCREMENTAL backup 이후에 변경된 부분만 Backup 이미지 파일에 저장]

 

DELTA : 최근의 FULL 또는 INCREMENTAL BACKUP 이후의 변경된 부분만 백업 [아카이브 로그만 지원]

-> LOGARCHMETH1, TRACKMOD 설정해서 지원 -> 백업 작업 동안 사용된 로그 파일은 복구를 위해 안전하게 보관

 

:db2 update db cfg for <DB명> using LOGARCHMETH1 DISK:<경로명>

:db2 get db cfg for <DB명> | grep -i LOGARCHMETH1

:db2 update db cfg for <DB명> using TRACKMOD ON

->Backup 명령어에서 INCREMENTAL 옵션을 이용해 FULL Backup 이후 변경된 부분에 대해서만 Backup 이미지 생성

 

#1 [Incremental]

: db2 backup db <DB명> incremental

: db2 backup db <DB명> online incremental to <디렉토리명> INCLUDE LOGS

 

#2 [Delta]

: db2 backup db <DB명> online incremental delta

: db2 backup db <DB명> online incremental delta to <디렉토리명> INCLUDE LOGS

 

# INCLUDE LOGS

: Backup 이미지가 이 이미지를 특정 시점으로 Restore 및 Rollforward 하는 데 필요한 로그 파일을 반드시 포함하도록 지정

 

-> list history 명령어를 이용해 DB에 대한 Backup 이력 사항 및 Backup 이미지 정보를 확인

 

#테이블 스페이스 백업

: 중요한 테이블스페이스만 Bakcup.

한 개 이상의 테이블스페이스를 함께 백업가능 [아카이브 로깅만 지원]

 

:db2 update db cfg for <DB명> using LOGARCHMETH1 DISK:<경로명>

:db2 get db cfg for <DB명> | grep -i LOGARCHMETH1

 

BACKUP DATABASE 명령에서 TABLESPACE 옵션 사용해 한 개 이상의 테이블스페이스에 대한 BACKUP 이미지 생성

 

-> list history 명령어를 이용해 DB에 대한 Backup 이력 사항 및 Backup 이미지 정보 확인

: db2 list history backup all for <DB명>

 

(4) Backup 이미지 확인

DB alias : 원격 DB alias

Type : '0'은 Full Backup, '3'은 TableSpace Backup

Instance Name : DB가 존재하는 서버의 인스턴스 이름

Node Number : Backup된 DB 파티션 번호

Timpestamp : Backup 작업이 완료된 시간 소인

sequential Number : 2개 이상 파일로 분할시 동일 이름, 일련 번호 다른 여러개 이미지 파일 생성

 


2. Restore

: 오류로 인한 문제 발생시 DB 또는 테이블 스페이스를 재건

-> Backup이미지를 이용해 Restore

 

대상

: DB, TableSpace

범위

: FULL, INCREMENTAL, DELTA

 

명령어

: db2 restore db <DB명> user <사용자ID> using <Password>

tablespace <테이블스페이스명> history file online incremental from <디렉토리 경로>

taken at <시간소인> to <새로운 디렉토리> into <새로운 DB명> with <개수> buffers buffer <버퍼크기> 

 

옵션

: DB 명

USER USING

TABLESPACE

HISTORY FILE

ONLINE

INCREMENTAL

FROM

TAKEN AT

TO

INTO

WITH ~ BUFFERS

BUFFER

 

종류

:Crah Recovery / Version 복구 / Rollforward

 

Crash Recovery : 비정상 종료시 그 당시 진행중인 애플리케이션에 대한 복구

-> 상시에 액티브 로그 파일을 이용해 DB2가 자동으로 시행하는 복구

[비정상 종료시 restart db 명령어로 액티브 로그를 읽어 진행중이던 트랜잭션의 커밋과 롤백 완료 -> 데이터 일관성 보장]

 

:db2 update db cfg for <DB명> using AUTORESTART ON

:db2 get db cfg for <DB명> | grep -i AUTORESTART

 

#AUTORESTART : OFF시

:db2 restart db <DB명> user <사용자id> using <password> drop pending tablespaces <테이블스페이스명> write resume

:db2 activate database <DB명>

:db2 connect to <DB명>

 

#restart db 옵션

: DB명

user, using : 원격 DB의 Restore일 경우 반드시 사용자명과 암호명 지정 필요

drop pending tablespaces : 테이블스페이스를 DROP 보류 상태로 만들어 Crash Recovery 완료 후 DB에 접속해 테이블스페이스를 재생성

write resume : 입출력 쓰기가 일시 중단된 동안 실패한 DB에서 DB 재시작 실행, DB의 모든 테이블스페이스에서 SUSPEND_WRITE 상태를 제거해 입출력 쓰기를 재개

 

 

Version 복구 : 기본적인 복구 방법.

-> 과거 시점에 생성한 오프라인 DB Backp 이미지를 이용해 과거 시점과 동일한 상태로 DB 복구

[Backup 시점부터 실패 지점까지 모든 작업 단위(UOW) 손실 / 오프라인 모드의 FULL BACKUP 이미지 파일 필요]

: db2 force applications all

db2 restore db <DB명>

 

INTO를 이용해 신규 DB로 Restore

: db2 restore db <DB명> INTO <신규 DB명>

다른 디렉토리에 이미지 파일이 있는 경우

: db2 restore db <DB명> FROM <디렉토리명>

백업 이미지가 여러개인 경우

: db2 restore db <DB명> taken at <Backup시간소인>

 

-> list history 명령어로 해당 Version 복구와 연관된 기록을 확인

:db2 list history backup all for <DB명>

 

Rollforward : Version 복구 완료 후 아카이브 로그 파일을 이용

-> 가장 최근 이미지 혹은 원하는 시점까지 로그 파일 적용. [아카이브 로그만 지원]

 

[DB 로그 파일에 기록된 트랜잭션을 적용해 DB를 Restore -> LOGARCHMETH1 / LOGARCHMETH2가 OFF이외의 값]

-> 최근 생성한 FULL Backup 이미지와 Archive log를 이용해 restore db와 rollforward db로 원하는 시점까지 Restore

-> Restore에 사용된 마지막 Archive log에 저장된 트랜잭션 이후부터 현재까지 DB에 대한 내용은 유실

 

:db2 restore db <DB명>

:db2 rollforward db <DB명> to end of logs [여러번에 걸쳐 rollforward db 명령어 실행 가능]

:db2 rollforward db <DB명> to <시간소인> using local time [마지막 입력시 TO옵션을 이용해 시점 지정 가능]

 

:db2 rollforward db <DB명> stop [STOP을 이용해 로그 재적용 작업 중지, 마지막 로그 다음부터 LOGGING 다시시작]

:db2 connect to <DB명>

 

-> list history 명령어로 해당 Rollforward restore 기록 확인

:db2 list history backup all for <DB명>

 

 

 

 

 

반응형

'Intern > DB2' 카테고리의 다른 글

[DB2] 메모리 모델  (0) 2021.11.22
[DB2] 버퍼풀  (0) 2021.11.22
[DB2] 모니터링 Snapshot  (0) 2021.10.12
[DB2] STOGROUP  (0) 2021.10.12
[DB2] 카탈로그  (0) 2021.10.07