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 |