CUBRID 복제 시스템의 구성은 다음 그림과 같다.
복제 대상이 되는 원본 데이터베이스를 마스터 데이터베이스(master database)라 하고, 원본 데이터베이스가 복제되어 채워지는 데이터베이스를 슬레이브 데이터베이스(slave database)라 부른다. 마스터 데이터베이스는 일반 데이터베이스로서 읽기/쓰기 등 모든 연산이 허용되나, 슬레이브 데이터베이스는 읽기 연산만 허용한다.
CUBRID 복제 시스템의 구성
CUBRID 복제 시스템을 구성하는 각 요소를 정리하면 다음과 같다.
일반적인 CUBRID 데이터베이스로서, 복제의 대상이 되는 원본 데이터베이스라 할 수 있다. CUBRID 복제는 비동기식(asynchronous)이기 때문에 마스터 데이터베이스의 운영은 복제 시스템 설정에 영향을 받지 않는다(비동기식, 동기식 복제에 대한 더 자세한 설명은 차후에 설명한다). 슬레이브 데이터베이스와 달리 마스터 데이터베이스는 읽기, 쓰기 등 모든 데이터베이스 연산이 허용된다.
트랜잭션 로그는 복제 시스템과 무관하게 마스터 데이터베이스의 트랜잭션 무결성과 장애 발생시 데이터베이스를 복구하여 가용성을 보장하는 데 사용한다. 복제 시스템은 마스터 데이터베이스에 발생한 모든 변경 정보를 트랜잭션 로그를 통하여 알아 낸다.
복제 서버는 복제가 설정되었을 때, 마스터 데이터베이스의 트랜잭션 로그를 분석하여 복제 배포를 위해 필요한 복제 로그를 생성하고, 이를 배포 서버 호스트의 복제 에이전트에 전송한다. CUBRID의 복제 서버는 cubrid repl_server라는 명령어로 지원된다. 이 명령어를 사용하는 상세한 방법은 이 장에서 차후에 설명한다.
마스터의 복제 서버에 받은 복제 로그를 슬레이브에 복제하는 시스템으로서, 복제 에이전트, 배포 데이터베이스, 그리고 연관된 몇 가지 로그 파일로 구성된다. 배포 서버는 마스터 호스트 혹은 슬레이브 호스트에 설정될 수도 있고, 장애 발생시 가용성을 높이고, 성능을 높이기 위하여 별도의 호스트에 설정할 수도 있다.
복제 서버에서 전송된 복제 로그를 이용하여 실제로 복제 작업을 수행하는 프로세스이다. 하나의 마스터에 대하여 여러 개의 슬레이브가 설정될 수 있기 때문에 복제 에이전트는 먼저, 복제 서버에 받은 복제 로그를 파일에 저장한다. 이어서, 복제 에이전트는 배포 데이터베이스에 설정된 모든 슬레이브 데이터베이스에 복제 로그를 반영한다. CUBRID의 복제 에이전트는 cubrid repl_agent라는 명령어로 지원된다. 이 명령어를 사용하는 상세한 방법은 이 장에서 차후에 설명한다.
배포 시스템의 복제 에이전트로 하여금 마스터와 슬레이브 배치 정보를 알려주는 데이터베이스로서,
데이터베이스의 하나로 관리된다. 배포 데이터베이스의 스키마를 비롯한 상세한 정보는 이 장에서 차후에 설명한다.마스터의 복제 서버로부터 받은 로그를 파일에 저장한 것으로서, <master_db_name>.copy의 형식의 이름을 갖는다. 복제 로그의 크기는 마스터의 변경 양에 따라 달라질 수 있기 때문에, 복제를 설정할 때, 배포 시스템은 복제 로그를 저장할 수 있을 정도의 충분한 디스크 공간을 확보하고 있어야 한다.
추적 로그는 복제 에이전트가 실제로 복제를 수행하면서 각 슬레이브 데이터베이스 별로 최종 적용된 로그 순차 번호 등 배포의 진행 상태를 기록하는 파일이다. 추적 로그는 복제 에이전트마다 하나의 파일로 관리되는데, <dist_db_name>.trail의 형식의 이름을 갖는다
오류 로그는 복제 에이전트가 복제를 실행하면서 발생하는 모든 오류를 기록하는 파일로서, <dist_db_name>.err의 형식의 이름을 갖는다.
복제의 목적지라 할 수 있는 데이터베이스로서, 마스터의 변경이 복제 시스템에 의하여 자동적으로 반영되는 데이터베이스이다. 마스터 데이터베이스와 달리, 슬레이브 데이터베이스는 읽기 연산에만 사용될 수 있다.