반응형
시나리오는 아래와 같습니다.
DB2 version :V11.1
1.테이블 생성 및 데이터 INSERT
2.온라인 백업
3.테이블 DROP (장애상황 유발)
4.복구
5.테이블 확인
순서입니다.
ONLINE 백업의 경우 ROLL FORWARD 과정이 추가됩니다.
1.테이블 생성 및 데이터 INSERT
$ db2 "create table BACKTEST (ID INT,NAME VARCHAR(32))"
$ db2 "INSERT INTO BACKTEST(ID,NAME) VALUES (1,'BAE')"
$ db2 "insert into BACKTEST select * from BACKTEST" x10번
$ db2 "select count(*) from BACKTEST"
1
-----------
4096
2.온라인 백업
$ db2 backup db DB2TEST online to /home/db2test/ysbae include logs
Backup successful. The timestamp for this backup image is : 20230316144609
$ ls -alrt
total 360608
drwxr-xr-x 5 db2test db2iadm1 4096 Mar 16 14:44 ..
drwxr-xr-x 2 db2test db2iadm1 256 Mar 16 14:46 .
-rw------- 1 db2test db2iadm1 184627200 Mar 16 14:46 DB2TEST.0.db2test.DBPART000.20230316144609.001
3.테이블 DROP (장애상황 유발)
$ db2 "DROP TABLE BACKTEST"
DB20000I The SQL command completed successfully.
$ db2 "select count(*) from BACKTEST"
SQL0204N "DB2TEST.BACKTEST" is an undefined name. SQLSTATE=42704
--테이블이 없다고 나옴.
4.복구
백업파일의 시간을 기입하는게 중요합니다. taken at [백업파일의 시간] 위의 백업파일의 경우에는 DB2TEST.0.db2test.DBPART000.20230316144609.001 중 20230316144609부분입니다.
$ db2 restore db db2test from /home/db2test/ysbae taken at 20230316144609
SQL2539W The specified name of the backup image to restore is the same as the
name of the target database. Restoring to an existing database that is the
same as the backup image database will cause the current database to be
overwritten by the backup version.
Do you want to continue ? (y/n) y
DB20000I The RESTORE DATABASE command completed successfully.
db2diag 로그를 확인하면 restore를 시작하고 완료될때 로그를 남깁니다.
db2diag.log
Starting a full database restore.
Agent EDU ID: 17513
....
MESSAGE : Restore Complete.
[]db2test@dbarac1:/home/db2test$ db2 connect to db2test
SQL1117N A connection to or activation of database "DB2TEST" cannot be made
because of ROLL-FORWARD PENDING. SQLSTATE=57019
이상태에서 db 접속을 시도하면 에러가 발생합니다. roll forward하라고 나옵니다.
이 부분에서는 db2의 아카이브로그 경로를 넣어줘야 합니다. 로그확인은 db2 get db cfg for [db명] 명령어로 확인할 수 있습니다.
$ db2 "rollforward db db2test to end of backup and stop overflow log path (/db2/db2test/archivelog/db2test/DB2TEST/NODE0000/LOGSTREAM0000/C0000001)"
Rollforward Status
Input database alias = db2test
Number of members have returned status = 1
Member ID = 0
Rollforward status = not pending
Next log file to be read =
Log files processed = S0000001.LOG - S0000002.LOG
Last committed transaction = 2023-03-16-05.46.12.000000 UTC
DB20000I The ROLLFORWARD command completed successfully.
5.테이블 확인
$ db2 connect to db2test
Database Connection Information
Database server = DB2/AIX64 11.1.4.7
SQL authorization ID = DB2TEST
Local database alias = DB2TEST
$ db2 "select count(*) from BACKTEST"
1
-----------
4096
1 record(s) selected.
삭제 전인 4096건이 있는것을 확인하였습니다
완료.
반응형
'다른 DBMS > DB2' 카테고리의 다른 글
[DB2] timestamp_format (0) | 2023.06.15 |
---|---|
[DB2] 아카이브 모드 변경과 SQL1116N(database is in BACKUP PENDING state) 에러 해결 (0) | 2023.03.16 |
[DB2 V.11.1] Deinstall 하기 (0) | 2023.03.15 |
[DB2] 다른유저가 SYSADM_GROUP 권한을 가지면 DB 관리 권한이 있을까? (0) | 2022.12.10 |
[AIX7] DB2 11.1.4 설치하기 (0) | 2022.12.09 |
댓글