다음은 CUBRID 데이터베이스의 백업과 복구에 이용되는 로그에 관련된 파라미터로 각 파라미터의 타입과 설정 가능한 값의 범위는 다음과 같다.
파라미터 이름 |
타입 |
디폴트 값 |
최소값 |
최대값 |
---|---|---|---|---|
log_buffer_pages |
int |
50 |
3 |
|
media_failure_support |
bool |
yes |
|
|
log_max_archives |
int |
INT_MAX |
0 |
|
background_archiving |
bool |
yes |
|
|
page_flush_interval_in_msecs |
int |
0 |
-1 |
|
checkpoint_interval_in_mins |
int |
720 |
1 |
|
checkpoint_every_npages |
int |
10000 |
10 |
|
adaptive_flush_control |
bool |
true |
|
|
max_flush_pages_per_second |
int |
10000 |
1 |
INT_MAX |
sync_on_nflush |
int |
200 |
1 |
INT_MAX |
log_buffer_pages는 메모리에 캐시되는 로그 버퍼의 페이지 수를 설정하는 파라미터로 디폴트 값은 50이다. log_buffer_pages 파라미터의 설정값이 크면 데이터베이스 수정 연산이 많고, 길고 큰 트랜잭션이 많은 환경에서는 디스크 I/O가 감소되어 성능이 향상될 수 있다. CUBRID가 설치된 시스템의 메모리 크기 및 작업 연산의 크기를 고려하여 적당한 값으로 설정할 것을 권장한다.
media_failure_support는 저장 매체의 장애에 대비하여 보관 로그를 보존할지 여부를 설정하기 위한 파라미터이다. 디폴트 값인 yes로 설정하면 활성 로그가 꽉 찬 후 트랜잭션에 변경 사항이 있는 경우 활성 로그 전체를 보관 로그로 복사하여 보존한다. 파라미터 값을 no로 설정하면, 활성 로그가 꽉 찬 후 생성된 보관 로그가 자동으로 삭제된다.
이 파라미터를 no로 설정하면 background_archiving 파라미터도 비활성화된다.
log_max_archives는 media_failure_support가 yes일 때, 보존할 보관 로그 파일의 최대 개수를 설정하기 위한 파라미터이다. 최소값은 0이며, 디폴트 값은 INT_MAX이다.
예를 들어, cubrid.conf에 log_max_archives의 값을 3으로 설정하면, 최근 3개의 보관 로그 파일만 유지하고 네 번째 보관 로그가 생성될 때 이전 생성된 보관 로그 파일을 자동으로 삭제한다. 이때 삭제되는 보관 로그의 정보는 *_lginf 파일에 기록된다.
다만, 활성화된 트랜잭션이 기존 보관 로그를 여전히 참조하고 있다면, 해당 보관 로그는 삭제되지 않는다. 즉, 어떤 트랜잭션이 첫 번째 보관 로그가 생성되는 시점에서 시작되어 다섯 번째 보관 로그가 생성되는 시점까지도 종료되지 않았다면 첫 번째 보관 로그는 삭제되지 않는다.
background_archiving은 media_failure_support의 값이 yes일 때, 특정 시점마다 주기적으로 임시 보관 로그를 생성하도록 하는 파라미터로서, 보관 로그 작업으로 인한 디스크 I/O 부하를 분산시키고자 할 때 유용하다. 디폴트 값은 yes이다.
page_flush_interval_in_msecs는 데이터 버퍼에 존재하는 더티 페이지를 디스크로 저장(flush)하는 주기를 밀리초(msec) 단위로 설정하는 파라미터이며, 디폴트 값은 0이다. 이 파라미터를 최소값인 -1로 설정하는 경우, 더티 페이지는 체크포인트 또는 페이지가 스왑(swap)되는 시점에만 디스크로 저장된다.
이는 I/O 부하, 버퍼 동시성과 관련있는 파라미터로서, 서비스 환경의 워크로드를 고려하여 파라미터 값을 설정해야 한다.
checkpoint_interval_in_mins는 체크포인트가 수행되는 주기를 분 단위로 설정하는 파라미터이며, 디폴트값은 720이다.
체크포인트는 데이터 버퍼에 존재하는 로그 파일(더티 페이지)을 디스크로 저장(flush)하는 작업이며, 데이터베이스 장애 발생 시 최근 체크포인트 시점까지 데이터를 복구할 수 있다. 다만, 체크포인트 작업으로 인해 디스크로 저장되는 로그 파일의 양이 많을 경우 디스크 I/O가 발생하여 DB 운영에 영향을 끼칠 수 있으므로 체크포인트 주기를 적절하게 설정해야 한다.
체크포인트 주기 설정과 관련된 파라미터는 checkpoint_interval_in_mins과 checkpoint_every_npages이며, checkpoint_interval_in_mins 파라미터의 설정값이 경과된 시점 또는 로그 페이지 수가 checkpoint_every_npages 파라미터의 설정값에 도달하는 시점마다 체크포인트 작업이 주기적으로 수행된다.
checkpoint_every_npages는 체크포인트가 수행되는 주기를 로그 페이지 단위로 설정하는 파라미터이며, 디폴트값은 10,000이다. 특히, 특정 시간대에 INSERT/UPDATE가 집중되는 서비스 환경에서는 checkpoint_every_npages 파라미터의 설정값을 작게 설정하여 체크포인트 시점에 I/O 부하를 분산할 수 있다.
adaptive_flush_control는 현 시점의 내려쓰기(flush) 작업 진행 상태에 따라 50ms마다 내려쓰기할 용량(flush capacity)을 자동 조정하는 파라미터이며, 디폴트 값은 yes이다. 즉, 특정 시점에 INSERT 또는 UPDATE 연산이 집중되어 내려쓰기한 페이지 수가 max_flush_pages_per_second 파라미터 값에 도달하면 이 용량을 증가시키고, 이에 도달하지 못하면 이 용량을 감소시킨다. 이처럼 워크로드에 따라 주기적으로 내려쓰기 용량을 조정하여 I/O 부하를 분산할 수 있다.
max_flush_pages_per_second는 버퍼로부터 디스크로 내려쓰기(flush) 작업을 수행할 때, 내려쓰기할 최대 용량 (flush capacity)을 설정하기 위한 파라미터이며, 디폴트 값은 10000이다. 즉, 이 파라미터 설정을 통해 1초당 내려쓰기할 최대 용량을 제어하여, 특정 시점에 I/O 부하가 집중되는 현상을 방지할 수 있다.
만약, 특정 시점에 INSERT 또는 UPDATE 연산이 집중되어 이 파라미터에 의해 설정된 최대 용량에 도달하면, 로그 페이지만 내려쓰기를 수행하고 데이터 페이지는 더 이상 디스크로 내려쓰지 않는다. 따라서, 이 파라미터는 서비스 환경의 워크로드를 고려하여 적절한 값을 설정해야 한다.
sync_on_nflush는 버퍼로부터 데이터 페이지 및 로그 페이지를 내려쓰기한 후, 운영 시스템의 FILE I/O와 동기화를 수행하는 주기를 페이지 단위로 설정하는 파라미터이며, 디폴트 값은 200이다. 즉, 200페이지만큼 내려쓰기 작업이 수행될 때마다 CUBRID 서버는 운영 체제의 FILE I/O와 동기화를 수행한다. I/O 부하와 관련된 파라미터이다.