[DB2] Backup & Restore(Single DB)
- Databases/DB2
- 2020. 7. 30.
참고사항
# Offline Backup, Offline Backup의 의미
Online => 사용자가 접속된 상태에서 백업
Offline => 사용자가 없는 상태에서 백업
1. Archive Logging(Online : 별도 로그 디렉토리)로 변경하는 방법
*LOGRETAIN을 ON으로 하거나 LOGARCHMETH1가 다른 방식이면 Archive Logging라고 생각하면 됨.
LOGRETAIN ON시 다음과 같이 변경됨.
$ db2 update db cfg for sample using LOGRETAIN on
Log retain for recovery enabled (LOGRETAIN) = RECOVERY
First log archive method (LOGARCHMETH1) = LOGRETAIN
후에 db2를 deactivate 하고 activate시 backup pending이 떨어짐.
$ db2 backup db sample to /dev/null
참고(DB2 Information Center에서 긁어옴) : 로그 보유(logretain)
이 구성 매개변수는 logarchmeth1으로 교체되었습니다. DB2의 이전 버전과의 호환성을 위해 아직 지원됩니다.
그러므로.. 가능하면 사용하지 말것!!!!!
특정 디바이스나 위치로 로그파일을 옮길경우 다음과 같이 변경함.
$ db2 update db cfg for sample using LOGARCHMETH1 DISK:/jhlee/jhlsle/archive
Log retain for recovery enabled (LOGRETAIN) = RECOVERY
First log archive method (LOGARCHMETH1) = DISK:/jhlee/jhlsle/archive/
후에 db2를 deactivate 하고 activate시 backup pending이 떨어짐.
$ db2 backup db sample to /dev/null
참고 : LOGARCHMETH1 옵션에 관련된 모든것. (logbufsz, logfilsiz등.)
userexit를 ON으로 설정했을 경우(특정 프로그램을 이용 외부 디바이스로 설정할 경우 사용됨.)
다음 사이트 참고 : http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/topic/com.ibm.db2.luw.admin.ha.doc/doc/c0024701.html
$db2 update db cfg for sample using USEREXIT on
Log retain for recovery enabled (LOGRETAIN) = RECOVERY
First log archive method (LOGARCHMETH1) = USEREXIT
참고 : LOGARCHMETH1를 DISK모드로 변경후 userexit를 on 했을시 기존에 LOGARCHMETH1에서 설정한
디렉토리로 log가 떨어짐.
기본 로그 쌓이는 위치를 변경하고 싶을시.
$ db2 update db cfg for sample using NEWLOGPATH <경로>
2. Backup 방법
DB Full Backup
- backup db <db명> to 경로 (경로 생략 가능) -> Offline, Online모두 가능
- db2 backup db sample online : archive log 모드에서만 사용가능.
Incremental Backup : archive log 모드에서만 사용가능. - Fullbackup 이후 변경된 부분만 Backup Image에 저장.
Track modified pages (TRACKMOD) = OFF -> ON으로 설정되어 있어야 함.
- backup db <DB명> INCREMENTAL
- backup db <DB명> ONLINE incremental
- backup db <DB명> online incremental TO <디렉토리명>
- backup db <DB명> online incremental to <디렉토리명> INCLUDE LOGS
Delta Backup : archive log 모드에서만 사용가능. - Fullbackup 혹은 Incremental Backup이후 증가분만 백업.
Track modified pages (TRACKMOD) = OFF -> ON으로 설정되어 있어야 함.
- backup db <DB명> INCREMENTAL DELTA
- backup db <DB명> ONLINE incremental delta
- backup db <DB명> online incremental delta TO <디렉토리명>
- backup db <DB명> online incremental delta to <디렉토리명> INCLUDE LOGS
Tablespace 단위 Backup : archive log 모드에서만 사용가능.
EX)db2 "backup db sample tablespace(TS명)"
- backup db <DB명> tablespace (<TS명>) ONLINE
- backup db <DB명> tablespace (<TS명>) onlineTO <디렉토리명>
- backup db <DB명> tablespace (<TS명>) online INCREMENTAL
- backup db <DB명> tablespace (<TS명>) online INCREMENTAL DELTA
Backup 확인법
- list history backup for <DB명>
3. Recovery(Restore) 방법.
※ Crach Recovery : 정전등이나 인스턴스 비정상 종료.
- db2 get db cfg | grep -i autorestart : on 여부 확인.
- db2 restart db sample
※ Restore Recovery : 원격 혹은 이전 DB 복구 방법.
Circular Logging인지 환경변수 확인. -> Full DB Offline Backup만 가능.
==========================================================
User exit for logging enabled (USEREXIT) = OFF -> OFF확인
Log retain for recovery enabled (LOGRETAIN) = OFF -> OFF확인
First log archive method (LOGARCHMETH1) = OFF -> OFF확인
==========================================================
- restore database <DB명> : Backup디렉토리에서 백업파일이 하나만 있는경우
- restore database from / dbbackup : Backup디렉토리에서 백업파일이 하나만 있는경우
- restore database taken at 1996090988811 : Backup디렉토리에서 여러개의 타임스탬프 Full backup Image중 특정 시간대의 Fullbackup image를 이용.
- restore database <DB명> into <신규DB명>
※ ROLLFORWARD Recovery :
RESTORE DB 명령어로 버전복구를 완료하고, ROLLFORWARD DB 명령어로 로그디렉토리에 제공된
아카이브 로그파일들을 차례로 이용하여 과거의 UOW에 의한 변경내역을 복구. 아카이브 로깅 방식에서만 지원.
◇ Full DB Offline Backup인경우 ◇
log를 전혀 적용시키지 않는 경우
- db2 restore database <DB명> without rolling forward
특정 Timestamp 시간까지의 log만 적용하는 경우
- db2 restore database <DB명>
- db2 "rollforward database <DB명> to 1996-09-09-09:30:00 and stop"
현재까지의 log를 모두 적용시키는 경우
- db2 restore database <DB명>
- db2 "rollforward database <DB명> to end of logs and stop"
◇ Full DB on-line backup image인 경우 반드시 log 적용 ◇
특정 CPU 시간까지의 log만 적용하는 경우
- db2 restore database <DB명>
- db2 "rollforward database <DB명> to 1996-09-09-09:30:00 and stop" 혹은
db2 "rollforward database <DB명> to 2005-02-16-16.16.15.000000 using local time and stop"
* 참고 : CPU Time : 현재시간에서 9시간을 빼야함. (현재시간 - 9 = CPU Time)
현재까지의 log를 모두 적용시키는 경우
- db2 restore database <DB명>
- db2 "rollforward database <DB명> to end of logs and stop"
Tablespace Bacup인 경우 모든 로그를 다 적용시켜야 한다.
- db2 restore database SAMPLE
- db2 "rollforward database <DB명> to end of logs and stop"
혹은
- db2 restore db <DB명> tablespace (<TS명>) online -> db2 쓸경우 ""로 묶어야 함.
- db2 "rollforward database <DB명> to end of logs and stop tablespace (<TS명>) online
확인
db2 list history rollforward for <DB명>
4. List History 확인법(Backup 및 기타 여러가지 작업내역 확인)
db2 list history ALL for <DB명>
db2 list history BACKUP all for <DB명>
db2 list history ROLLFORWARD all for <DB명>
db2 list history backup SINCE <시간소인> for <DB명>
db2 list history rollforward CONTAINING <스키마명>.<테이블명> for <DB명>
db2 list history REORG all for sample
5. PRUNE HISTORY(복구실행기록파일에서특정<시간소인> 이전의기록을제거)
$ db2 prune history <yyyy>
$ db2 prune history <yyyymmdd>
$ db2 prune history <yyyymmddhhmmss>
$ db2 prune history <yyyymmddhhmmss> WITH FORCE OPTION : 복구기록파일의 모든항목을 완전히 제거
$ db2 prune history <yyyymmddhhmmss> AND DELETE :
옵션을 이용하면 복구기록파일에서 항목이 삭제되고, 해당항목과 관련된 아카이브 로그 파일도 물리적으로 제거
- prune logfile prior to 명령어로지정한번호보다작은번호의로그파일을모드제거
(LOGRETAIN 변수가ON으로 되어 있어야 함.)
First log archive method (LOGARCHMETH1) = LOGRETAIN
$ db2 prune logfile prior to <로그파일명>
- update dbm cfg 명령어를 이용하여 REC_HIS_RETENTN 데이터베이스 구성변수를 변경.
(기간은 1일단위로 지정. 기본값은366일.)
Recovery history retention (days) (REC_HIS_RETENTN) = 366
더 추가적인 옵션을 원할시..
backup database :
restore database :
rollforward database :
'Databases > DB2' 카테고리의 다른 글
[DB2] DB2 - DB2 Federation 서버 구성 (0) | 2020.08.04 |
---|---|
[DB2] Federation 서버 구성 (0) | 2020.08.02 |
[DB2] DB2 로그들 (0) | 2020.07.31 |
[DB2] Table(Range) Partition 기본 테스트 (0) | 2020.07.29 |
[DB2] 9.7버전 FixPack 적용방법 (0) | 2020.07.27 |