InterBase XE7 온라인 덤프로 백업을 구현하는 방법
Dmitry Kuzmenko, 2016년 9월 8일
InterBase는 2007 버전부터 온라인 덤프(online dump), 즉 온라인 데이터베이스 파일 복사를 지원합니다. gbak -b/-c 대신 이 기능을 사용하면 복사 후 바로 사용할 수 있는 데이터베이스를 얻을 수 있으며, 백업(데이터베이스가 아닌 것)에서 “복원"할 필요가 없습니다. 온라인 덤프는 운영 체제의 파일 복사와 거의 비슷할 정도로 매우 빠릅니다.
다음 명령을 사용하여 데이터베이스의 온라인 덤프를 만듭니다.
gbak -d [options] database target
(전체 덤프 설명은 문서 Doc\OpGuide.pdf 또는 여기에서 찾을 수 있습니다.)
데이터베이스 파일과 마찬가지로 대상 파일의 이름과 확장자는 원하는 대로 지정할 수 있습니다. 명령 실행 결과는 원본 데이터베이스와 동일하지만 읽기 전용 모드인 덤프 파일입니다.
이 명령의 첫 실행 시간은 소스 데이터베이스를 스캔(읽기)하는 시간과 대상 파일을 쓰는 시간입니다.
대상이 읽기 전용 모드인 동안에는 데이터베이스 파일에 연결되어 있습니다. 첫 번째 덤프에서는 전체 데이터베이스 파일을 읽어 대상에 복사합니다. 두 번째 이후부터는 변경된 페이지만 대상에 기록됩니다. 이를 “증분 덤프(incremental dump)“라고 합니다.
중요! InterBase XE7은 반복 덤프 명령(물론 동일한 파일 이름 사용)을 실행할 때 데이터베이스의 변경된 페이지만 읽어 대상에 기록합니다. XE7 이전 버전은 전체 소스 데이터베이스를 읽습니다. 따라서 성능이 다르며 XE7이 훨씬 빠릅니다. 소스 데이터베이스에서 변경된 페이지가 없으면 XE7 증분 덤프는 약 1초가 걸리지만, InterBase 2007-XE3은 전체 데이터베이스 파일을 읽는 데 필요한 시간이 소요됩니다. 이 시간은 소스 데이터베이스 크기와 저장소 속도에 따라 달라집니다. 예를 들어 저장소 속도가 약 400MB/초라면 100GB 데이터베이스는 250초(4분 10초)에 스캔됩니다.
참고. InterBase XE7은 XE7(ODS 16), XE/XE3(ODS 15) 및 2009(ODS 13) 데이터베이스 파일 형식을 지원합니다. 위에서 언급한 스마트 스캔 기능은 XE7(ODS 16) 데이터베이스 형식에서만 작동합니다.
대상을 읽기-쓰기 모드(일반 모드)로 전환해야 하는 경우 다음 명령을 사용합니다.
gfix target -mode read_write
하지만 그 후 대상은 데이터베이스와의 연결이 끊어지며, 대상이 “다른” 데이터베이스로 간주되므로 이후 gbak -d database target 실행은 더 이상 불가능합니다.
증분 덤프 대신 대상을 완전히 덮어쓰려면 -ov 옵션을 사용합니다.
gbak -d -ov database target
덤프의 덤프
덤프의 첫 번째 덤프는 작동하지만 이후 증분은 작동하지 않습니다. 예를 들어, 먼저
gbak -d database target1
여기서 target1을 읽기 전용 모드의 전체 덤프 데이터베이스로 얻습니다.
다음으로,
gbak -d target1 target2
보시다시피 덤프의 덤프를 만듭니다. 이 명령은 target1을 target2로 복사합니다. 두 대상 모두 읽기 전용 모드가 됩니다. 하지만 이 두 명령을 다시 반복하면 데이터베이스에서 target1로 전달된 변경 사항이 target2로 복사되지 않습니다. 따라서 target2는 첫 번째 초기 복사 이후의 상태로 유지됩니다. 오류나 경고 메시지도 없습니다.
따라서 덤프의 덤프를 만들려면 전체 덤프만 사용해야 합니다.
gbak -d -ov target1 target2
target2가 target1의 소스로 기록(및 덮어쓰기)되도록 하려면 -ov 옵션이 필수입니다.
백업 구성 1
다른 시간 간격의 덤프 예시
gbak -d database target
예를 들어 1시간마다 실행됩니다. 여기에는 운영 소스 데이터베이스와 1시간 뒤처진 “백업” 복사본 target이 있습니다.
또한 추가로 24시간마다 다음을 실행할 수 있습니다.
gbak -d database target2
여기에는 운영 데이터베이스, 1시간 뒤처진 target 복사본, 24시간 뒤처진 target2 복사본이 있습니다.
하나의 데이터베이스에서 원하는 수만큼 덤프를 만들 수 있습니다.
말할 필요도 없이 대상 덤프는 실제 데이터베이스를 볼 필요가 없는 작업(리포팅, 분석 등)을 위해 어떤 목적으로든 읽기 전용 데이터베이스로 사용할 수 있습니다.
장점: 각 덤프를 독립적으로 예약할 수 있습니다.
단점: 최신 덤프와 가장 오래된 덤프 사이의 시차가 있습니다.
백업 구성 2
다른 대상으로의 순차 덤프. 이 경우 특정 시간 간격마다 다음 명령을 하나씩 실행하도록 일부 스케줄러(OS 또는 사용자 정의)를 조정해야 합니다.
gbak -d database target1
gbak -d database target2
gbak -d database target3
이 명령들 사이에 1시간 간격을 사용하면 다음과 같은 덤프(백업)를 얻을 수 있습니다.
target1은 12:00, target2는 13:00, target3은 14:00. 다음 target1 덤프 실행은 15:00에 업데이트되는 식입니다. 결과적으로 지난 3시간 동안의 데이터베이스 복사본을 갖게 됩니다.
장점: 원본 데이터베이스에 가까운 여러 시간대의 덤프가 있습니다.
단점: 이러한 명령을 예약하기가 약간 어렵습니다. 즉, 이 예에서는 덤프 명령을 정확한 시간으로 예약해야 합니다.
target1 덤프: 00:00, 03:00, 06:00…
target2 덤프: 01:00, 04:00, 07:00…
target3 덤프: 02:00, 05:00, 08:00…
요약
Gbak -d는 로컬 저장소로의 덤프와 네트워크를 통한 덤프에 사용할 수 있습니다. 증분 덤프는 변경된 페이지만 대상으로 보내기 때문입니다. 따라서 대상을 원격 네트워크 저장소에 배치할 수 있습니다. 물론 네트워크는 로컬 저장소와 호환될 수 있을 만큼 충분한 대역폭을 가져야 합니다. 그렇지 않으면 대상에 대한 쓰기가 느려집니다.
온라인 덤프는 데이터베이스의 온라인 백업 복사본을 만드는 도구로만 사용할 수 있는 것이 아니라, 운영, 리포팅 및 분석 애플리케이션의 부하를 분산하기 위해 시스템의 “수평 확장"을 만드는 도구로도 사용할 수 있습니다.
온라인 덤프가 온라인 데이터베이스 복사본을 얻는 가장 빠른 방법(gbak -b/-c 대신)이지만, 덤프는 페이지 단위로 작동하므로 데이터베이스가 손상된 경우 일부 페이지 손상을 건너뛸 수 있습니다. 따라서 여전히 기존의 좋은 gbak -b/-c로 데이터베이스 일관성을 확인해야 하지만, 이전보다는 덜 자주 수행할 수 있습니다.