CUBRID HA는 다음의 제약 사항이 있다.
- Linux 계열에서만 사용할 수 있다. CUBRID HA 그룹의 모든 노드들은 반드시 동일한 플랫폼으로 구성해야 한다.
- 테이블은 반드시 기본 키(Primary
key)가 포함되어야 한다.
- Java 저장 프로시저 환경 구축은 복제되지 않으므로, Java 저장 프로시저를 사용하려면 모든 노드에 각각 Java 저장
프로시저 환경을 설정해야 한다.
- CALL 문으로 호출되는 메서드(예: login(), add_user(), drop_user(), change_owner())는 복제 되지 않으므로
사용하지 않아야 한다.
- 통계 정보를 갱신하는
UPDATE STATISTICS 문은 슬레이브 노드에 복제되지 않는다.
- 시리얼 캐시를 사용하는 경우
CUBRID HA 그룹 내 노드 간 시리얼의 현재 값이 일치하지 않는다.
- 백업 시 -r 옵션을
사용하면 복제에 필요한 보관 로그까지 삭제될 수 있으므로 사용하지 않아야 한다.
- 클릭카운드 함수(INCR/DECR)는
쓰기 작업이므로 슬레이브 노드에서 사용하면 오류를 반환한다.
- LOB(BLOB/CLOB) 타입은 데이터베이스 볼륨이 아닌 별도의
파일로 저장되고 메타 데이터만 볼륨에 저장되는 구조이므로 LOB 데이터가 복제되지 않기 때문에 사용하지
않아야 한다.
응용 개발 시 HA 구성을 고려한다면 위와 같은 제약 사항이 포함되지
않도록 주의해야 하고, 오픈 전 꼭 점검을 수행하여야 한다.
위 제약 사항 중 DB 내에 포함되어 있어 확인하기 쉽지 않은
- Primary Key 누락 테이블
- Java 저장 프로시저 사용 여부
- LOB 타입 사용 테이블 및 컬럼
- 시리얼 캐시 사용 여부
를 아래 SQL을 사용하면 쉽게 확인 할 수 있다.
dba 계정으로 로그인한 후 수행하여야 한다.
select 'NON_PK' "case", class_name "value" from db_class where class_type='CLASS' and is_system_class='NO' and class_name not in (select distinct class_name from db_index where is_primary_key='YES') union all select 'SP', sp_name from db_stored_procedure union all select data_type, class_name||' '||attr_name as table_column from db_attribute where data_type in ('CLOB','BLOB') union all select 'Serial Cache', name from db_serial where cached_num >0; |
실행 결과는 아래와 같다.
case value ============================================ 'NON PK' 'code' 'NON PK' 'lob_tb' 'SP' 'hello' 'CLOB' 'lob_tb c' 'BLOB' 'lob_tb b' 'Serial Cache' 'cache_seq' |
참고로 HA 환경에서 LOB 타입을 사용하여야 하는 경우 BLOB은 Bit varying, CLOB은 varchar 로 대체하여 사용할 수 있다.