안녕하십니까?
고수님들의 고견을 듣고자 문의드립니다. DB에 관심 많은 업무 개발자입니다.
* 테이블 구조는 대략 아래와 같습니다.
1. 테이블 데이터 건수 : 대략 5억건 이상
2. 테이블 형태 : 파티션 테이블 (등록년월) -> 파티션키를 포함한 인덱스는 Non-uniq
3. 인덱스 : 글로벌 Non-prefixed 인덱스 (PK : Uniq)
4. 데이터 관리 : 배치 -> 등록, 온라인 -> 조회 및 변경
데이터 백업을 해야 하는 상황에 왔습니다.
그러나, 특이하게 글로벌 PK 인덱스로 구성되어 있어 단순하게 파티션을 분리/백업을 할 수 없는 상태라고 합니다.
2가지 경우를 제시하는 것 같습니다.
1. 업무 임시 중단 -> 해당 파티션 분리 -> Rebuild
2. 백업대상 임시 테이블로 복사 -> 백업대상 삭제 -> 지속적인 데이터영역(HWM) 증가는 되지 않으나, 성능을 위한 Rebuild를 위해 업무 임시 중단 필요
개인적으로 많은 고민을 해봤는데 아래 기술한 절차가 업무 연속성을 유지하면서 진행할 수 있는 절차인것인지 궁금합니다.
(단, 업무 중단이 없는 상태에서의 진행을 전제로 합니다. DDL를 통한 순단은 가능)
0. 메인 테이블 백업
1. 백업을 위한 임시 테이블1 생성
2. 전환을 위한 임시 테이블2 생성 (일반 테이블, PK인덱스만 생성)
3. 백업 대상을 임시 테이블1에 적재
4. 트리거 생성 (배치는 통제 가능하므로 update에 대해서만 기술하여 임시테이블2에 NEW 정보 등록)
5. 메인 테이블의 최종 운영을 위한 미변경 데이타를 임시 테이블2에 적재 (NOT EXISTS 임시 테이블2)
6. 건수 확인 및 무결성 검증
7. 임시 테이블의 그 외 인덱스 생성
8. 테이블명 변경 (임시 테이블2 -> 메인 테이블) : 메인 테이블 삭제가 필요하다면 삭제후 진행
9. 임시 테이블1 백업후 Drop
끝.
감사합니다.^^
|