데이터베이스 마운트
- MOUNT
- UNMOUNT
- 마운트된 데이터베이스에서 데이터 읽기
데이터를 분석하기 위해 대량의 데이터를 지속적으로 저장하면 데이터 볼륨이 크게 증가하여 다음과 같은 문제가 발생합니다:
- 대용량 데이터 저장으로 인한 디스크 비용 증가
- 데이터 분석을 위한 장비 디스크 한계에 도달
문제를 해결하기 위해서는 오래된 데이터를 백업하고 주기적으로 삭제할 필요가 있습니다. 나중에 오래된 데이터를 읽어야 하고 백업된 데이터베이스를 읽기 위해 데이터 복구를 수행하면 복구하는 데 오랜 시간이 걸릴 뿐만 아니라 데이터베이스를 오프라인으로 전환하는 데도 오랜 시간이 걸리며 서비스를 계속하기 위해 별도의 장비가 필요한 문제가 있습니다. Machbase는 이러한 문제를 해결하기 위해 MOUNT 명령을 지원합니다.
MOUNT 명령은 데이터베이스가 서비스 중일 때 백업된 데이터를 읽고 현재 실행 중인 데이터베이스와 독립적인 새 데이터베이스를 생성합니다. 한 서버는 여러 개의 백업된 데이터베이스를 추가하여 동시에 데이터를 조회할 수 있지만, 마운트된 데이터베이스는 읽기 전용이며 데이터를 추가하거나 삭제할 수 없습니다.
데이터베이스 MOUNT 명령을 사용하면 백업 데이터와 메인 데이터베이스 내용을 동시에 읽을 수 있습니다. 따라서 마운트된 데이터베이스는 기존 데이터 조회 방법과 동일한 방법으로 데이터를 조회할 수 있습니다.
MOUNT 명령을 실행하려면 다음 조건을 충족해야 합니다.
- 백업 데이터베이스 버전과 메타데이터 버전이 호환되어야 합니다.
- 마운트된 백업 데이터베이스에 테이블을 생성하거나 인덱스를 생성/삭제하거나 데이터를 추가/삭제할 수 없습니다.
마운트된 데이터베이스에 대한 정보는 V$STORAGE_MOUNT_DATABASES 메타 테이블에서 얻을 수 있습니다.
마운트
마운트 명령을 실행하려면 백업 데이터베이스 경로명과 마운트할 데이터베이스의 이름을 입력해야 합니다. 백업 데이터베이스 경로는 백업 명령으로 실행된 디렉토리의 위치를 설정합니다. 마운트할 데이터베이스의 이름은 활성 데이터베이스와 구별하기 위해 별도의 이름을 지정해야 합니다. 백업 데이터베이스 경로명은 절대 경로명("/" 문자로 시작하는 경로명)이거나 백업 명령과 동일한 규칙으로 $MACHBASE_HOME/dbs를 기준으로 한 상대 경로명이 될 수 있습니다.
구문:
MOUNT DATABASE 'backup_database_path' TO mount_name;
예제:
MOUNT DATABASE '/home/machbase/backup' TO mountdb;
언마운트
마운트된 데이터베이스 데이터를 더 이상 읽을 필요가 없으면 UNMOUNT 명령을 사용하여 마운트된 상태를 해제합니다.
구문:
UNMOUNT DATABASE mount_name;
예제:
UNMOUNT DATABASE mountdb;
마운트된 데이터베이스에서 데이터 읽기
마운트된 데이터베이스에서 데이터를 조회할 때는 이전과 동일한 SQL 문을 사용합니다. SYS 사용자만 마운트된 데이터를 읽을 수 있습니다. SQL 문에서 마운트된 데이터베이스 테이블을 지정하려면 mount_name과 user_name을 “.” 문자로 연결하여 설정해야 합니다.
구문:
SELECT column_name FROM mount_name.user_name.table_name;
예제:
SELECT * FROM mountdb.sys.backuptable;