문서유형ㅣ기술정보
분야ㅣ마이그레이션
적용제품버전ㅣTibero6, Tibero7
문서번호ㅣTMITI034
개요
데이터 이관 계획을 수립하는 경우 SOURCE와 TARGET이 동일한 바이너리를 사용하여 이관하는 상황에서, 본 문서에서는 기술된 HOT BACKUP을 통한 데이터베이스 복구 방식을 활용하여 데이터 이관을 수행하는 방법에 대해 기술하였습니다.
방법
이관 준비
SOURCE와 TARGET 노드간 정보 확인
먼저, 동일한 바이너리가 SOURCE와 TARGET 간에 호환되는지 점검을 진행해야 합니다.
또한 SOURCE와 TARGET 간 커널 차이가 큰 경우 바이너리 호환이 되지 않을 수 있어 주의가 필요합니다.
SOURCE: 2.x 커널 컴파일 버전 / TARGET: 3.x 또는 4.x 커널 컴파일 버전
2.x 커널과 3.x 또는 4.x 커널 간에는 바이너리 호환이 되지 않습니다.
추가로 환경 차이에 따른 설정 변경 여부도 확인이 필요합니다.
SOURCE 대비 TARGET 노드의 경로가 변경되는 경우 CONTROLFILE 생성 시 경로 수정이 필요합니다.
SOURCE 대비 TARGET 노드의 SID가 변경되는 경우 관련 파라미터 파일을 수정해야 합니다.
이관 시나리오
데이터베이스 이관 시 다운타임을 최소화하기 위한 시나리오입니다.
데이터베이스 BEGIN 이후 데이터 파일을 TARGET 노드로 이관하고, 차수를 나누어 증분 데이터를 반영합니다.
서비스 중인 데이터베이스를 중단한 후 일부 ARCHIVE 파일만 적용하면 데이터베이스 이관을 수십 분 내에 완료할 수 있습니다.
이관 수행
SOURCE - CF BACKUP
HOT BACKUP 수행 전 CONTROLFILE을 백업받습니다.
CONTROLFILE은 resetlogs 유형으로 백업받아야 합니다. TARGET에서 CONTROLFILE을 생성할 때 resetlogs 유형이 아닐 경우 REDO 파일을 찾게 되므로 resetlogs 유형으로 적용해야 합니다.
또한 애플리케이션이 중지된 이후 REDO 로그 스위치를 수행하여 트랜잭션 로그를 모두 아카이빙하면, 완전 복구와 동일한 복구 작업을 수행할 수 있습니다.
SQL> alter database backup controlfile to trace as 'controlfile_backup.sql' resetlogs;
SOURCE - BEGINE BACKUP
BEGIN BACKUP 전 생성된 아카이브 로그 확인합니다.
SQL> select * from v$archived_log order by sequence#;
BEGIN BACKUP 수행합니다.
SQL> alter database begin backup;
BACKUP 상태 확인합니다.
v$backup 뷰의 CHANGE# 최소 값 TSN부터 ARCHIVE LOG 필요합니다.
-- 최소 값 TSN 확인 SQL> select min(change#) from v$backup; SQL> select * from v$backup;
SOURCE - FILE COPY
BEGIN 상태의 데이터 파일을 모두 TARGET 서버에 복제합니다.
복제가 완료되면 END BACKUP을 수행합니다.
또한 DB_CREATE_FILE_DEST 경로의 .passwd 파일도 반드시 함께 복제해야 합니다.
TARGET - 설정 파일 셋팅
커널 설정, 유저 및 프로파일 설정합니다.
Tibero 엔진 설치 및 설정합니다.
TARGET - CF 생성
CONTROLFILE 생성을 위해 NOMOUNT모드로 데이터베이스 기동합니다.
$ tbboot nomount
CONTROLFILE을 생성합니다.
CONTROLFILE은 반드시 RESETLOGS 유형으로 생성해야 합니다.
또한 SOURCE 대비 TARGET 환경의 데이터 파일 경로가 변경되는 경우 CONTROLFILE에서 해당 경로를 수정해야 합니다.
SQL> @controlfile_backup.sql
SOURCE - END BACKUP
END BACKUP을 수행 합니다.
SQL> alter database end backup;
BACKUP 상태 확인를 확인합니다.
v$backup 뷰의 CHANGE# 최소 값 TSN부터 ARCHIVE LOG 필요합니다.
-- 최소 값 TSN 확인 SQL> select min(change#) from v$backup; SQL> select * from v$backup;
SOURCE - ARCHIVE SWITCH
BEGIN BACKUP 및 END BACKUP의 DDL이 담긴 REDO를 ARCHIVE LOG로 스위치 합니다.
-- redo group +1 만큼 수행 SQL> alter systsem switch logfile;
TARGET - 복구 모드 준비
데이터베이스 MOUNT 모드 기동을 위해 tbdown으로 데이터베이스를 정지합니다.
$ tbdown
데이터베이스 복구를 위해 MOUNT 모드로 기동합니다.
$ tbboot mount
SOURCE - ARCHIVE 파일 복사
ARCHIVE 파일 확보을 확보 합니다.
v$backup 뷰에서 확인된 CHANGE#의 최소 TSN 이상에 해당하는 ARCHIVE 파일이 필요합니다.
또한 END BACKUP 이후 SWITCH LOGFILE로 생성된 ARCHIVE 파일이 모두 필요합니다.
확보한 ARCHIVE 파일은 TARGET의 LOG_ARCHIVE_DEST 경로로 복사합니다.
SQL> select * from v$archived_log order by sequence#;
TARGET - 1차 ARCHIVE 증분 적용
BEGIN ~ END 이후 REDO 그룹 수만큼 SWITCH된 ARCHIVE 파일까지 복구를 수행합니다.
또한 1차 적용에 필요한 마지막 ARCHIVE 파일의 NEXT_CHANGE# - 1 값을 기준으로 복구 TSN을 설정합니다.
SQL> alter database recover automatic database until change 688490; TBR-1070: Incomplete media recovery is finished, but resetlogs is required.
SOURCE - ARCHIVE 파일 복사
ARCHIVE 파일을 확보합니다.
1차 ARCHIVE 증분의 마지막 ARCHIVE 파일 이후 시점에 해당하는 ARCHIVE 파일이 모두 필요합니다.
확보한 ARCHIVE 파일은 TARGET의 LOG_ARCHIVE_DEST 경로로 복사합니다.
SQL> select * from v$archived_log order by sequence# where NEXT_CHANGE# >= 688490;
TARGET - 2차 ARCHIVE 증분 적용
1차 ARCHIVE 증분 적용 이후의 ARCHIVE 파일을 적용합니다.
또한 2차 적용에 필요한 마지막 ARCHIVE 파일의 NEXT_CHANGE# - 1 값을 기준으로 복구 TSN을 설정합니다.
SQL> alter database recover automatic database until change 737666; TBR-1070: Incomplete media recovery is finished, but resetlogs is required.
SOURCE - 애플리케이션 정지
최종 REDO LOG 및 ARCHIVE 파일을 반영하기 위해 데이터베이스와 연결된 모든 애플리케이션을 정지합니다.
또한 v$session 뷰를 통해 데이터베이스에 연결된 세션이 없는지 반드시 확인해야 합니다.
SQL> select * form v$session order by sid;
SOURCE - ARCHIVE SWITCH
더 이상 데이터베이스에 작업 요청이 없다는 전제하에 REDO 로그를 그룹 수만큼 스위치합니다.
-- redo group +1 만큼 수행 SQL> alter systsem switch logfile;
SOURCE - ARCHIVE 파일 복사
최종 ARCHIVE 파일을 확보합니다.
2차 ARCHIVE 증분의 마지막 ARCHIVE 파일 이후 시점에 해당하는 ARCHIVE 파일이 모두 필요합니다.
확보한 ARCHIVE 파일은 TARGET의 LOG_ARCHIVE_DEST 경로로 복사합니다.
SQL> select * from v$archived_log order by sequence# where NEXT_CHANGE# >= 737666;
SORUCE - DB 정지
데이터베이스를 정지하여 TARGET으로 데이터베이스 전환을 준비합니다.
또한 TARGET으로 전환된 이후 애플리케이션이 SOURCE로 연결되는 것을 방지합니다.
$ tbdown immediate
데이터베이스가 정상적으로 종료되었는지 확인합니다.
$ ps -ef |grep -E "tbsvr|tblistener"
TARGET - 3차 ARCHIVE 증분 적용
2차 ARCHIVE 증분 적용 이후의 ARCHIVE 파일을 적용합니다.
또한 3차 적용에 필요한 마지막 ARCHIVE 파일의 NEXT_CHANGE# - 1 값을 기준으로 복구 TSN을 설정합니다
SQL> alter database recover automatic database until change 784423; TBR-1070: Incomplete media recovery is finished, but resetlogs is required.
TARGET - RESETLOGS 기동 수행
3차 ARCHIVE 증분 적용이 완료 후 데이터베이스 종료합니다.
$ tbdown immediate
resetlogs로 기동 합니다.
$ tbboot resetlogs
TARGET - TEMPFILE 생성
CONTROLFILE 파일의 주석 처리되어 있는 TEMPFILE 생성 구문을 수행 합니다.
SQL> ALTER TABLESPACE TEMP ADD TEMPFILE '경로' SIZE 32G;
TARGET - NORMAL 변경
NORMAL 기동을 위해 데이터베이스 정지합니다.
$ tbdown immediate
데이터베이스를 기동 합니다.
$ tbboot
TARGET - 애플리케이션 기동
데이터베이스는 TARGET으로 전환이 완료되었습니다.
애플리케이션을 기동하고 데이터베이스에 연결되는 세션을 확인합니다.
SQL> select * form v$session order by sid;