복제 재구축
CUBRID HA 환경에서의 복제 재구축은 다중 슬레이브 노드 구성 중 다중 장애 상황이나 일반적인 경우의 오류 상황으로 인해 CUBRID HA 그룹 내의 데이터가 동일하지 않은 경우에 필요하다. CUBRID HA 환경에서의 복제 재구축은 스크립트를 통해 제공된다.
복제 재구축을 위해서는 슬레이브 노드와 마스터 노드에서 아래 환경이 동일해야 한다.
- CUBRID 버전
- 환경 변수($CUBRID, $CUBRID_DATABASES, $LD_LIBRARY_PATH, $PATH)
- 데이터베이스 볼륨, 로그 및 복제 로그 경로
ha_make_slavedb.sh 스크립트
ha_make_slavedb.sh 스크립트를 이용하여 복제 재구축을 수행할 수 있다. 이 스크립트는 $CUBRID/share/script/ha에 위치하며, 복제 재구축에 들어가기 전에 다음의 항목을 사용자 환경에 맞게 설정해야 한다.
- master_host: 복제 재구축 시 마스터 노드의 호스트명으로, /etc/hosts에 등록되어 있어야 한다.
- db_name: 복제 재구축할 데이터베이스 이름을 설정한다.
- repl_log_home: 마스터 노드의 복제 로그의 홈 디렉터리를 설정한다. 일반적으로 $CUBRID_DATABASES와 동일하다.
다음은 필요에 따라 선택적으로 설정하는 항목이다.
- dba_password: CUBRID의 dba 계정 비밀번호가 설정되어 있는 경우 비밀번호를 설정한다.
- backup_dest_path: 마스터 노드에서 backupdb 수행 시 백업 볼륨을 생성할 경로를 설정한다.
- backup_option: 마스터 노드에서 backupdb 수행 시 필요한 옵션을 설정한다.
- restore_option: 복제를 재구축할 슬레이브 노드에서 restored 수행 시 필요한 옵션을 설정한다.
- scp_option: 마스터 노드의 백업 볼륨을 슬레이브 노드로 복사해 오기 위한 scp 옵션을 설정할 수 있는 항목으로 기본값은 마스터 노드의 네트워크 부하를 주지 않기 위해 16M로 설정되어 있다.
스크립트의 설정이 끝나면 ha_make_slavedb.sh 스크립트를 복제 재구축할 슬레이브 노드에서 수행한다. 스크립트 수행 시 여러 단계에 의해 복제 재구축이 이루어지며 각 단계의 진행을 위해서 사용자가 적절한 값을 입력해야 한다. 다음은 입력할 수 있는 값에 대한 설명이다.
- yes: 계속 진행한다.
- no: 현재 단계를 포함하여 이후 과정을 진행하지 않는다.
- skip: 현재 단계를 수행하지 않고 다음 단계를 진행한다. 이 입력 값은 이전 스크립트 수행에 실패하여 재시도할 때 다시 수행할 필요가 없는 단계를 무시하기 위해 사용한다.
제약 사항
- 마스터 노드의 온라인 백업: 복제 재구축을 위해서는 마스터 노드나 슬레이브 노드의 기존 백업을 이용할 수 없다. 따라서 스크립트 내부에서 자동으로 수행하는 마스터 노드의 온라인 백업을 이용해야 한다.
- 복제 재구축 스크립트 수행 중 오류 발생: 복제 재구축 스크립트는 수행 도중 오류가 발생해도 이전 상황으로 자동 롤백되지 않는다. 이는 복제 재구축 스크립트를 수행하기 전에도 슬레이브 노드가 이미 정상적으로 서비스하기 힘든 상황이기 때문이다. 복제 재구축 스크립트를 수행하기 전 상황으로 돌아가려면, 복제 재구축 스크립트를 수행하기 전에 마스터 노드와 슬레이브 노드의 내부 카탈로그인 db_ha_apply_info 정보와 기존의 복제 로그를 백업해야 한다.