 |  |
|
난이도 : 초급 Roman Melnyk, Staff Information Development, IBM Toronto
2007 년 4 월 10 일 이 글에서 Linux, UNIX, Windows용 DB2를 복제하는 방법을 설명합니다.
© 2002 International Business Machines Corporation.
All rights reserved. 본 글은 Linux, UNIX®, Windows®용® DB2® Universal DatabaseTM를 기반으로 합니다. 데이터베이스 복원(restore)은 데이터베이스 백업 이미지를 사용하여 데이터베이스를 재생성 하는 것이다. 하나의 머신에서 또 다른 머신으로 데이터베이스를 복제하는 가장 간단한 방법은 백업 이미지에서 데이터베이스를 복원하는 것이다. 데이터베이스에 사용된 파일 시스템 경로 역시 백업 이미지에 포함된다. 따라서, 소스 시스템에 있는 데이터베이스에 의해 참조되는 파일 시스템과 물리적 장치가 대상 시스템에서와 똑 같은 방법으로 설정되지 않으면 redirected restore 연산을 수행해야 한다. Redirected Restore 연산은 두 단계의 데이터베이스 복원 프로세스와 테이블 공간 컨테이너 정의 단계로 구성된다.
- RESTORE DATABASE 명령을 REDIRECT 옵션과 함께 실행한다.
- SET TABLESPACE CONTAINERS 명령을 사용하여 복원된 데이터베이스에 대한 테이블 공간 컨테이너를 지정한다. (DB2는 테이블 공간이 대상 시스템의 어디에 있는지를 알아야 한다.)
- RESTORE DATABASE 명령을 다시 실행하여, CONTINUE 옵션을 지정한다.
모든 Redirected Restore 연산이 같은 세션에서부터 실행되어야 한다. 그렇지 않으면, SQL0900N이 리턴되고 복원 연산은 실패하게 된다. 이러한 일이 발생하지 않도록 하는 한 가지 방법은 Redirected Restore 절차의 세 부분을 포함하고 있는 스크립트를 만들어서 실행하는 것이다. 다음 예제를 통해 Windows 또는 UNIX 기반 시스템에서 Redirected Restore 연산을 성공적으로 수행하는 방법을 설명한다. 또 다른 서버에서 백업 이미지를 복원하는 대신, 다른 인스턴스에서 백업 이미지를 복원하는 방법을 설명할 것이다. 원리는 동일하고 상세도 같다. Windows 예제의 소스 인스턴스는 PROD이다. 대상 인스턴스는 MYINST이다. MYINST에 복원(생성)될 PROD 상의 기존 데이터베이스는 MOVIES이다. MOVIES 데이터베이스는 D 드라이브에 위치한다. 유닉스 예제용 소스 인스턴스는 prod이다. 대상 인스턴스는 myinst이다.
- MOVIES 데이터베이스 전체의 백업 이미지를 만든다. Windows에서 BACKUP DATABASE 명령을 실행하기 전에, 현재 인스턴스가 PROD인지를 확인한다.
set DB2INSTANCE=PROD
db2start
db2 backup db movies
|
이 이미지의 타임 스탬프는 20030909143225이다. Windows에서, 이 이미지는 D:\MOVIES.0\PROD\NODE0000\CATN0000\20030909에 위치해 있다. DB2는 이 디렉토리의 하위 디렉토리를 만들어서, 이곳에서 BACKUP DATABASE 명령이 실행되도록 한다. 유닉스 예제에서, 이미지는 /home/prod에 위치해 있다.
Windows에서, 하위 디렉토리 이름은 다음과 같다.
<database_alias.backup_type>\<instance_name>\<node_number>\
<catalog_node_number>\<date>
|
이 하위 디렉토리 트리 안에, 실제 백업 이미지를 나타내는 파일(143225.0)이 있을 것이다. 이 파일 이름은 백업이 되었던 시간을 나타내고 있다.
주: 백업 이미지를 또 다른 머신에 재배치 하려면, 대상 머신에 위 경로를 만들고(PROD 대신 대상 인스턴스 이름으로 대체함), 백업 이미지(이 경우 143225.0)를 그 디렉토리에 복사한다. 또한 압축 툴을 사용하여 백업 이미지를 패키징 하고, 전송을 위한 디렉토리 트리를 관리한다.
유닉스 예제에서, 실제 백업 이미지 이름은 다음과 같다.
MOVIES.0.prod.NODE0000.CATN0000.20030909143225.001
|
이 이름의 컴포넌트는 다음과 같다.
<database_alias>.<backup_type>.<instance_name>.<node_number>.
<catalog_node_number>.<timestamp>.<sequence_number>
|
- Windows에서 MYINST를 시작한 다음 Redirected Restore 연산을 실행한다.
set DB2INSTANCE=MYINST
db2start
db2 restore db movies from d taken at 20030909143225 redirect
|
RESTORE DATABASE 명령이 백업 이미지를 포함하고 있는 디렉토리가 아닌 다른 디렉토리에서 실행된다면 FROM 매개변수가 지정되어야 한다.
유닉스 기반 시스템에서, 다음 명령어를 실행하고, myinst로 로그인 한다.
db2 restore db movies from /home/prod taken at 20030909143225 redirect
|
- 복원된 데이터베이스와 제휴된 세 가지 기본 테이블 공간에 대해 새로운 테이블 공간 컨테이너를 정의한다. (SYSCATSPACE, TEMPSPACE1, USERSPACE1). Windows에서 다음을 실행한다.
db2 set tablespace containers for 0 using (path 'd:\tsc_movies\ts0con1')
db2 set tablespace containers for 1 using (path 'd:\tsc_movies\ts1con1')
db2 set tablespace containers for 2 using (path 'd:\tsc_movies\ts2con1')
|
유닉스 기반 시스템에서 다음을 실행한다.
db2 "set tablespace containers for 0 using (path 'ts0con1')"
db2 "set tablespace containers for 1 using (path 'ts1con1')"
db2 "set tablespace containers for 2 using (path 'ts2con1')"
|
LIST TABLESPACES SHOW DETAIL 명령을 사용하여 소스 데이터베이스에 있는 모든 테이블 공간에 있는 정보를 얻는다. 이렇게 하면 컨테이너가 대상 데이터베이스에서 모든 테이블 공간에 대해 설정되었는지를 확인할 수 있다.
- Redirected Restore 연산을 완료한다.
db2 restore db movies continue
|
- 복원된 데이터베이스 목록이 올바르게 되었는지, 여러분이 정의했던 테이블 공간 컨테이너가 복원된 데이터베이스와 연결되었는지를 확인한다.
db2 list db directory
db2 connect to movies
db2 list tablespace containers for 0
db2 list tablespace containers for 1
db2 list tablespace containers for 2
db2 connect reset
db2 terminate
db2stop
|
 | |
기사의 원문보기
참고자료
필자소개  | 
|  | Roman B. Melnyk 박사는 DB2 Information Development 팀 멤버로서, 데이터베이스 관리, DB2 유틸리티, SQL 전문가이다. IBM에서 11년 이상을 근무하면서, 다양한 DB2 관련 서적, 아티클 등을 집필했다. DB2 Version 8: The Official Guide, DB2: The Complete Reference, DB2 Fundamentals Certification for Dummies, DB2 for Dummies의 공동 저자이다. 최근에는 Apache Derby -- Off to the Races를 편집했다. |
기사에 대한 평가
|  |