데이터베이스 볼륨 구조
9.3 버전까지는 영구적 볼륨을 generic, data 및 index 와 같이 여러 타입으로 분류해 왔으나, 10.1버전부터는 하나로 합쳐짐 더 이상 볼륨을 분류하지 않음
데이터베이스 볼륨 종류 (10.1 버전 이전)
▪ 데이터베이스 볼륨은 저장 형태에 따라 영구적인 볼륨(permanent volume), 일시적인 볼륨(temporary volume), 백업 볼륨(backup volume)으로 나뉨
영구적인 볼륨(permanent volume)
▪ 생성되면 데이터베이스가 삭제되기 전까지 유지되는 볼륨
▪ 영구적인 볼륨은 용도에 범용 볼륨(generic volume), 데이터 볼륨(data volume), 인덱스 볼륨(index volume), 임시 볼륨(temp volume)으로 구분해 생성
▪ 범용 볼륨(generic volume): 범용적으로 사용하는 볼륨으로 스키마, 인덱스, 데이터를 저장
- 볼륨 생성 명령(cubrid createdb)을 실행할 때 볼륨 타입을 따로 지정하지 않으면 범용 볼륨으로 생성됨
▪ 데이터 볼륨(data volume): 데이터를 저장하기 위한 볼륨
▪ 인덱스 볼륨(index volume): 인덱스를 저장하기 위한 볼륨
▪ 임시 볼륨(temp volume): 질의 처리를 수행할 때 중간 결과 및 최종 결과를 임시로 저장하는 볼륨
- 해당 볼륨이 모두 사용되면 일시적인 볼륨을 사용
- 일시적인 볼륨은 데이터베이스를 재시작하면 삭제되지만, 임시 볼륨은 영구 볼륨이므로 재시작해도 유지됨
일시적인 볼륨(temporary volume)
▪ 임시 데이터를 저장할 수 있는 일시적 볼륨(temporary temp volume)
▪ 일시적 볼륨은 서버 프로세스가 종료될 때 삭제됨
▪ 질의 처리 및 정렬을 수행할 때 중간 결과와 최종 결과를 저장하는 데 사용
백업 볼륨(backup volume)
▪ 백업 볼륨은 데이터베이스에 대한 스냅샷
▪ 백업 볼륨과 로그 볼륨을 기반으로 특정 시점까지 발생한 트랜잭션을 복구
데이터베이스 볼륨 종류 (10.1 버전 이후)
▪ 데이터베이스 볼륨은 저장 형태에 따라 영구적인 볼륨(permanent volume), 일시적인 볼륨(temporary volume), 백업 볼륨(backup volume)으로 나뉨
영구적인 볼륨(permanent volume)
▪ 한번 생성되면 영구적으로 유지되는 데이터베이스 볼륨
▪ 일시적 데이터를 저장할 일부 영구적 볼륨을 명시적으로 할당할 수 있음 → 일시적 볼륨과 비슷하게 동작
▪ 제어 파일(Control File): 데이터베이스 내 존재하는 볼륨의 정보, 백업 정보 및 로그의 정보를 저장하는 파일 (inf로 끝나는 파일들)
▪ 활성 로그(Active Log): 데이터베이스의 최근 변경 사항을 포함하는 로그
▪ 이중 쓰기 버퍼 (Double Write Buffer, DWB) 파일: I/O 에러를 방지하기 위하여 디스크에 쓰여지는 데이터 페이지들의 복사본을 저장
▪ TDE 키 파일 (TDE Key File): 데이터베이스 암호화를 위한 키들을 담고 있음
일시적인 볼륨(temporary volume)
▪ 임시 데이터를 저장할 수 있는 일시적 볼륨(temporary temp volume)
▪ 일시적 볼륨은 서버 프로세스가 종료될 때 삭제됨
▪ 질의 처리 및 정렬을 수행할 때 중간 결과와 최종 결과를 저장하는 데 사용
▪ 보관 로그(archive log): 활성 로그(active log)를 위한 공간이 모두 사용된 후 지속적으로 생성되는 로그를 저장하기 위한 볼륨
▪ 백그라운드 보관 로그(background archive log): 백그라운드에서 로그 보관 작업을 수행할 때 사용되는 볼륨
백업 볼륨(backup volume)
▪ 백업 볼륨은 데이터베이스에 대한 스냅샷
▪ 백업 볼륨과 로그 볼륨을 기반으로 특정 시점까지 발생한 트랜잭션을 복구
데이터베이스 볼륨 추가 예시
▪ cubriddb라는 데이터베이스를 생성한 후 데이터베이스 볼륨 추가
# 10.1 버전 이전
$ ubrid createdb --db-volume-size=512M --log-volume-size=256M cubriddb ko_KR.utf8
$ cubrid addvoldb -S -p data -n cubriddb_DATA01 --db-volume-size=512M cubriddb
$ cubrid addvoldb -S -p data -n cubriddb_DATA02 --db-volume-size=512M cubriddb
$ cubrid addvoldb -S -p index -n cubriddb_INDEX01 --db-volume-size=512M cubriddb
$ cubrid addvoldb -S -p temp -n cubriddb_TEMP01 --db-volume-size=512M cubriddb
# 10.1 버전 이후
$ ubrid createdb --db-volume-size=512M --log-volume-size=256M cubriddb ko_KR.utf8
$ cubrid addvoldb -S -n cubriddb_DATA01 --db-volume-size=512M cubriddb
$ cubrid addvoldb -S -n cubriddb_DATA02 --db-volume-size=512M cubriddb
$ cubrid addvoldb -S -n cubriddb_INDEX01 --db-volume-size=512M cubriddb
$ cubrid addvoldb -S -p temp -n cubriddb_TEMP01 --db-volume-size=512M cubriddbb
▪ 명령어 실행 후 생성된 볼륨 파일은 다음과 같음
데이터베이스 생성
▪ 'cubrid createdb' 명령어로 새로운 데이터베이스 생성
▪ 데이터베이스 볼륨과 로그 볼륨의 크기는 cubrid.conf 파일에서 정한 기본값으로 512MB
$ cd $CUBRID_DATABASES # db 디렉토리로 이동
$ mkdir testdb # testdb 폴더 생성
$ cd testdb # db 디렉토리로 이동
$ cubrid createdb testdb ko_KR.utf8 # testdb 생성
▪ testdb를 생성한 후 데이터베이스 볼륨 파일은 다음과 같음
▪ tesdb: 데이터베이스의 데이터와 인덱스를 저장, 카탈로그 테이블 정보가 포함
▪ testdb_lgar_t: 보관 로그 파일을 저장하기 전에 사용되는 임시 파일
- 활성 로그 파일이 가득 차면 보관 로그 파일이 생성됨
- 보관 로그 파일은 데이터베이스 백업 또는 복구, HA 구성 시 데이터 복제에 사용
▪ testdb_lgat: 활성 로그 파일, 진행 중인 트랜잭션 정보 저장
▪ testdb_lginf: 로그 파일의 정보를 저장하는 파일
▪ testdb_vinf: 볼륨 파일의 정보를 저장하는 파일
데이터베이스 볼륨 추가
▪ 범용 볼륨의 여유 공간이 db_volume_size 파라미터(구 버전은 generic_vol_prealloc_size 파라미터)에서 정한 크기보다 작아지면, 범용 볼륨이 자동으로 추가됨
▪ 트랜잭션이 적은 시간에 예상되는 사용량만큼 데이터베이스 볼륨을 미리 생성하는 것을 권장
▪ 예상 사용량에 비해 너무 큰 볼륨을 추가할 경우 백업 시간이 길어짐으로 적당한 사이즈로 할당
▪ 볼륨을 용도별로 나눠서 생성하여, 데이터베이스 볼륨 상태를 쉽게 파악할 수 있도록 함
# 10.1 버전 이전
$ cubrid addvoldb -S -p data -n cubriddb_DATA01 --db-volume-size=512M cubriddb
$ cubrid addvoldb -S -p data -n cubriddb_DATA02 --db-volume-size=512M cubriddb
$ cubrid addvoldb -S -p index -n cubriddb_INDEX01 --db-volume-size=512M cubriddb
$ cubrid addvoldb -S -p temp -n cubriddb_TEMP01 --db-volume-size=512M cubriddb
# 10.1 버전 이후
$ cubrid addvoldb -S -n cubriddb_DATA01 --db-volume-size=512M cubriddb
$ cubrid addvoldb -S -n cubriddb_DATA02 --db-volume-size=512M cubriddb
$ cubrid addvoldb -S -n cubriddb_INDEX01 --db-volume-size=512M cubriddb
$ cubrid addvoldb -S -p temp -n cubriddb_TEMP01 --db-volume-size=512M cubriddbb
▪ 볼륨을 추가한 후 데이터베이스 볼륨은 다음과 같음
▪ testdb_DATA01, testdb_DATA02: 데이터를 저장하는 볼륨 파일
▪ testdb_INDEX01: 인덱스를 저장하는 볼륨 파일
▪ testdb_TEMP01: 질의 시 정렬 중간 결과 등을 저장하는 임시 볼륨 파일
- 큰 테이블을 정렬하거나 인덱스를 생성할 때 정렬된 데이터를 임시로 저장하는데 사용
- 데이터베이스를 재시작해도 파일이 유지되는 영구적인 임시 볼륨(temp volume)
▪ testdb_TEMP01이 모두 사용되면 testdb_t32766이라는 일시적인 임시 볼륨(temporary temp volume) 파일이 생성
▪ testdb_t32766는 데이터베이스 재시작하면 삭제되는 일시적인 임시 볼륨(temporary temp volume)
▪일시적인 임시 볼륨은 한 번 크기가 늘어나면 늘어난 상태를 유지하므로 재시작할 때까지 I/O 성능에 영향을 줌, 따라서 testdb_TEMP01와 같은 영구적인 임시 볼륨을 미리 추가로 생성하는 것이 필요
▪ 일시적인 임시 볼륨은 데이터베이스 서버 재시작 시 삭제됨
데이터베이스 볼륨 사용량 확인
▪ 'cubrid spacedb -p'으로 데이터베이스 볼륨의 사용량 확인
$ cubrid server start testdb # db 서버가 작동중이지 않으면 start
$ cubrid spacedb -p testdb # testdb 볼륨 사용량 확인
'DBMS > CUBRID' 카테고리의 다른 글
[CUBRID] 큐브리드 java 연동하기 (intelliJ) (0) | 2024.05.13 |
---|---|
[CUBRID] 큐브리드 CSQL (0) | 2024.05.09 |
[CUBRID] 큐브리드 설정 (0) | 2024.05.08 |
[CUBRID] 큐브리드 프로세스 명령어 (0) | 2024.05.08 |
[CUBRID] 큐브리드 프로세스 (0) | 2024.05.07 |