데이터 백업 및 복구
본 장에서는 ZetaData의 데이터 백업 방법과 이를 이용한 복구 방법을 설명합니다.
개요
ZetaData는 크게 SSVR 인스턴스, TAS 인스턴스, TAC 인스턴스로 구성됩니다.
SSVR 인스턴스는 여러 대의 서버에 구성할 수 있으며, TAC 인스턴스에 볼륨을 제공하기 위하여 TAS 인 스턴스가 이를 관리합니다. TAS 인스턴스 또한 TAC 인스턴스에 맞춰 클러스터로 구성합니다. SSVR과 TAS에 대한 백업 기능은 제공하지 않습니다. 일반적인 TAC 백업은 스토리지와 무관하게 데이터베이스 솔루션 을 이용하여 이루어지는 것과 동일합니다.
ZetaData 백업 및 복구
ZetaData의 데이터를 백업하는 방법은 크게 세 가지가 있습니다.
tbexport를 이용한 논리적(logical) 백업 및 복구
범용적인 데이터베이스 백업과 동일하며 백업된 결과 파일을 tbimport를 이용하여 적재할 수 있습니다.
RMGR을 이용한 물리적(Physical) 백업 및 복구
데이터의 관점이 아닌 데이터베이스의 관리 대상 파일에 대한 물리적인 백업입니다.
TAS 인스턴스를 사용하여 데이터베이스를 구성한 경우 OS 유틸리티를 통해 데이터베이스 파일에 접근할 수 없습니다. RMGR 이 이러한 역할을 대신 수행합니다.
RMGR은 데이터베이스의 스토리지가 로컬 디스크, SAN 디스크, TAS를 사용하는 SAN 디스크, 그리고 ZetaData인 모든 경우에 대해서 백업을 지원합니다. RMGR을 사용할 경우 DB 노드에서 백업/복구를 수행하게 되고, 이로 인해 사용자가 ZetaData만을 위한 별도의 작업을 하지 않아도 됩니다.
tbascmd를 이용한 cold 백업 및 복원
tbascmd를 이용하면 TAS 인스턴스에 command line tool로 명령어를 통하여 디스크 스페이스에 저장된 파일과 로컬 디렉터리간에 복사하는 방식으로 백업 및 복원을 수행할 수 있습니다. TAC 인스턴스를 기동 중지시킨 후 TAS 인스턴스만 기동 중인 상태에서 cptolocal 명령어를 이용하여 DB 운영에 필요한 모 든 파일을 로컬 파일 시스템으로 백업합니다.
복구를 진행하기 전 checkpoint를 수행합니다. checkpoint를 하면 메모리에만 들어있던 데이터들이 플래시 와 디스크에 저장되게 됩니다.
SQL> alter system checkpoint
아래 쿼리를 통하여 백업을 시도하기 전에 파일 타입(File Type)과 블록 크기(Block Size)를 확인합니다.
SQL> select a.type, a.block_size, b.name from v$as_file a, v$as_alias b
where a.file_number = b.file_number;
컨트롤 파일, 리두 파일, 데이터 파일 등 필요한 모든 파일을 로컬에 백업합니다.
TBASCMD는 tbascmd (포트 번호)로 접속할 수 있습니다. 포트 번호는 TAS의 tip 파일에 LISTENER_PORT로 기록되어 있습니다.
아래는 9120 포트를 사용하는 TAS 인스턴스에서 c1.ctl 컨트롤 파일을 로컬에 백업하는 예입니다.
$ tbascmd 9120
ASCMD> cptolocal +DS0/c1.ctl /home/node0/c1.ctl
위 명령어 수행 결과로 백업 파일과 cpfromlocal 명령어를 사용한 롤백 스크립트 파일이 생성된 것을 확인 할 수 있습니다.
$ ls /home/node0
c1.ctl c1.ctl_rollback.sh
tbascmd의 cptolocal 명령어를 이용하여 DB가 관리하는 파일들을 모두 백업해 둔 상태에서 다른 노드의 TAS 디스크 스페이스로 이관 및 복원을 진행할 수 있습니다. 이관하고자 하는 노드의 로컬 디렉터리로 백업 파일을 전송하고 cpfromlocal 명령어를 이용하여 로컬 파일 시스템의 백업 파일들을 TAS의 디스크 스페이스로 복사합니다. 이때 백업하며 확인했던 파일 타입(file type '-t')과 블록 크기(block size '-b')를 인자로 지정합니다. 파일 타입에는 CTRL, REDO, DATA, TEMP, ARCH로 총 다섯 가지 종류가 있습니다.
아래는 노드 1번 TAS의 디스크 스페이스 DS0으로 백업 파일을 복사하는 예입니다.
cpfromlocal /home/node1/c1.ctl +DS0/c1.ctl -b 16384 -t CTRL
cpfromlocal /home/node1/log001.log +DS0/log001.log -b 512 -t REDO
cpfromlocal /home/node1/usr001.tdf +DS0/usr001.dtf -b 32768 -t DATA
cpfromlocal /home/node1/temp001.dtf +DS0/temp001.dtf -b 32768 -t TEMP
cpfromlocal /home/node1/log-t0-r0-s1.arc +DS0/ARCH/log-t0-r0-s1.arc -b 512 -t ARCH
주의
잘못된 블록 크기로 파일을 복원하면 정합성 문제가 발생할 수 있습니다.
cpfromlocal 명령어는 cptolocal 명령어의 결과로 생성된 스크립트 파일을 여건에 맞게 수정한 뒤 참고 또는 사용하는 것을 권장합니다.
Last updated