Background Image
조회 수 30002 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
CUBRID2008 R2.1 을 대상으로 작성되었습니다. 버젼이 다르더라도 크게 차이는 없으나 복제 구성 과정에서 보여지는 내용이 조금 다를 수 있습니다. 특히 슬레이브 서버의 디렉토리 구성은 버젼에 따라 다를 수 있습니다.

복제 구성
일반적으로 2대 이상의 서버를 이용하여 복제를 구성하는 환경에 대하여 설명을 하였으며, 특히 단일 서버에서의 복제 구성 방법에 대하여 내용을 추가하였습니다. 단일 서버 구성시 필요한 부분은 제목이나 내용에 단일 서버라고 언급하여 일반 구성과 구분이 될 수 있도록 하였습니다.
복제 대상 데이터베이스는 CUBRID 에서 기본적으로 제공되는 데이터베이스인 demodb 를 이용하였습니다.
사용자 계정은 cubrid 로 가정하였으며, 단일 서버의 경우 cubrid2 계정으로 복제가 되는 것으로 하였습니다.
디렉토리는 /home/cubrid 로 설정하였으며, 단일 서버의 경우 cubrid2 는 /home/cubrid2 에 위치하는 것으로 하였습니다.
데이터베이스는 기본 위치인 /home/cubrid/CUBRID/databases/demodb 에 위치한 것으로 하였습니다.

단일서버에서의 복제 구성
단일 서버에서의 복제는 기본적으로 권장하지 않습니다. 복제를 구성한다는 것은 하나의 서버로는 리소스가 서비스를 하기에 충분치 않아, 서버를 추가적으로 구성하여 동일한 내용의 서비스를 한다는 것에 주안점을 두고 있기 때문입니다.
다만 테스트 등을 위하여 복제 환경을 임시로 구성하고자 할때 사용할 수 있습니다.
복제 구성시 주의할 점은 복제 대상인 슬레이브 데이터베이스 구성시 마스터 데이터베이스에 대한 백업본을 이용하고 있기 때문에 백업을 이용한 복구가 가능한 환경이 되어야 합니다. 이에 대한 내용은 복제 구성 과정에서 설명하도록 하겠습니다.

슬레이브 서버 구성
슬레이브 서버는 마스터 서버와 동일한 버젼의 CUBRID 를 설치합니다. CUBRID 설치 계정이나 설치 위치는 상관없으며, 데이터베이스가 위치할 디렉토리 역시 마스터 데이터베이스의 디렉토리와 다른 구성을 가지고 있어도 상관없습니다.

단일서버에서의 슬레이브 계정 구성
단일 서버에서 복제를 수행하기 위해서는 추가적인 CUBRID 계정 및 설치본이 필요합니다. 사용자 계정을 추가하여 그곳에 동일한 버젼의 CUBRID 를 설치합니다. cubrid 계정에 마스터 데이터베이스가 설치되고, cubrid2 계정에 슬레이브 데이터베이스가 설치되는 것으로 가정하였습니다.

복제 환경 설정

복제를 위해서는 CUBRID 설정값을 변경해야 합니다. 마스터 데이터베이스에 대한 설정값을 조정하면 됩니다.
이 값은 CUBRID 설정화일에서 replication 이라는 값으로, 이 값을 yes 로 설정해야 합니다. 설정화일은 CUBRID 홈디렉토리 아래 conf 디렉토리에 cubrid.conf 라는 이름으로 있습니다. 여러개의 데이터베이스가 있을 수 있으므로 복제가 필요한 데이터베이스에만 설정하여야 합니다. 설정방법은 아래와 같이, 데이터베이스 이름으로 탭을 설정하고 그 아래에 설정값을 추가합니다. 이 내용은 설정화일의 끝 부분에 추가합니다.
[@demodb]
replication=yes

설정값을 변경한 후에는 서버를 재구동해야 합니다. 이후로는 서버를 재구동할 필요가 없습니다.

마스터 데이터베이스 백업
CUBRID 에서는 복제 환경 구성시 마스터 데이터베이스의 백업본을 이용하여 복제를 구성합니다. 따라서 마스터 데이터베이스에 대하여 백업을 해야 하며, 전체 백업본이 필요합니다. 백업시에는 온라인 백업을 이용하여도 무방합니다.
% cubrid backupdb -l 0 demodb
백업 화일의 위치는 백업시 지정할 수 있으며(-D /backup), 지정하지 않으면 데이터베이스 로그가 있는 디렉토리에 생성됩니다. 로그 디렉토리는 데이터베이스 생성시 지정하지 않으면 데이터베이스가 있는 디렉토리와 같습니다(/home/cubrid/CUBRID/databases/demodb)

백업화일 이전
백업화일을 슬레이브 서버로 옮깁니다. ftp 등의 방법을 통하여 옮겨주면 됩니다. 옮겨주는 위치는 CUBRID 계정의 임의 디렉토리로 옮겨주면 됩니다. 백업 화일은 백업디렉토리의 demodb_bk* 들과 데이터베이스 로그 디렉토리의 demodb_bkvinf 입니다. 여기서는 백업 디렉토리를 지정하지 않았으니, 데이터베이스 디렉토리에 백업 관련 모든 화일이 있습니다.
% ftp slave_server
User : ....
Password: ...
ftp> binary
ftp> mput demodb_bk*


단일서버에서의 백업화일 이전
백업화일을 복제를 위해 추가한 계정상의 임의의 디렉토리로 옮겨줍니다. 여기서는 그냥 cubrid2 계정의 홈디렉토리로 복사합니다.
% cd /home/cubrid/CUBRID/databases/demodb
% cp demodb_bk* ~cubrid2/

배포 데이터베이스 생성
마스터 서버에서 할일은 거의 끝났습니다. 이제는 슬레이브 서버에서 작업을 합니다. 단일 서버인 경우 슬레이브용 계정으로 로그인 합니다.
배포 데이터베이스가 생성될 디렉토리를 생성합니다.
% cd CUBRID/databases
% mkdir distdb

아울러 복제중에 사용되는 로그들이 저장될 디렉토리를 생성합니다.
% mkdir repl_log
repl_make_distdb 명령을 이용하여 배포 데이터베이스를 생성합니다. 사용법은 아래와 같으며, 생성중에 나오는 주요 내용에 대하여만 설명을 추가하였습니다. 사용자 입력은 파란색으로, 설명은 녹색으로 표시하였습니다.
repl_make_distdb <배포 데이터베이스 이름> [-p 배포 데이터베이스 dba 암호]
% repl_make_distdb distdb -p dba // distdb 라는 이름으로 배포 데이터베이스를 생성하며, dba 암호를 dba 로 설정
...
  STEP 5 : Please provide information of the master databases ...
       1. Please enter the name of the master database >> demodb // 마스터 데이터베이스의 이름
       2. Please enter the IP address of the master database.
          - Replication would not work without correct IP address.
                IP address of the master >> 192.168.13.49 // 마스터 서버의 IP
       3. Please enter the TCP/IP port number of the repl_server >> 1525 // 복제 프로세스가 사용할 포트, 사용하지 않는 임의의 포트를 지정하면 되며, 이 포트는 뒤에서 복제 프로세스 구동시 사용되므로 기억.
       4. Please enter the directory path of copy log.
         If the target directory is /home/cubrid/CUBRID/databases/distdb, just strike enter.. >> /home/cubrid/CUBRID/databases/repl_log // 복제 로그가 저장될 디렉토리 지정
  STEP 6 : Configuring the replication parameters..
       1. Please enter the directory path of trail log.
         If the target directory is /home/cubrid/CUBRID/databases/distdb, just strike enter.. >> /home/cubrid/CUBRID/databases/repl_log
// 복제 로그가 저장될 디렉토리 지정
       2. Please enter the directory path of error log.
         If the target directory is /home/cubrid/CUBRID/databases/distdb, just strike enter.. >> /home/cubrid/CUBRID/databases/repl_log
// 복제 에러 로그가 저장될 디렉토리 지정
       3. Please enter the TCP/IP port number for information of repl_agent status. >> 1526 // 복제 모니터링에 사용할 포트, 사용하지 않는 임의의 포트를 지정하면 되며, 나중에 모니터링시 이 포트를 사용
       4. Please enter the file size(line number) of replication delay time log. >> 100000 // 복제 지연 로그의 최대 라인수 지정
       5. Please enter restarting replication at network error.(y/n) >> y // 네트워크 장애시 복제 프로세스 재 구동 여부

배포 데이터베이스가 현재 디렉토리에 생성되며, 배포 데이터베이스 서버가 구동됩니다.
% cub_commdb -P
Server distdb (rel 8.2, pid 4846)


슬레이브 데이터베이스 생성
슬레이브 데이터베이스를 생성할 디렉토리를 만듭니다.
% mkdir demodb // 배포 데이터베이스 생성시 현재 디렉토리가 ~/CUBRID/databases 였으며, 이곳에서 디렉토리 생성
옮겨온 백업화일을 이용하여 슬레이브 데이터베이스를 생성합니다. 백업화일이 있는 디렉토리에서 repl_make_slavedb 를 이용하여 슬레이브 데이터베이스를 만들수 있습니다.
사용법은 아래와 같으며, 생성중에 나오는 주요 내용에 대하여만 설명을 추가하였습니다. 사용자 입력은 파란색으로, 설명은 녹색으로 표시하였습니다.
repl_make_slavedb <마스터 데이터베이스 이름> <슬레이브 데이터베이스 이름> -u <슬레이브 데이터베이스 사용자 계정> -p <슬레이브 데이터베이스 사용자 암호>
% repl_make_slavedb demodb demodb_s -u repl -p repl // demodb_s 라는 이름으로 슬레이브 데이터베이스를 생성하며, 데이터베이스 사용자 계정은 repl, 암호는 repl 로 설정
  STEP 1 : Preprocess to restore the master database...
       a. Please provide the directory path of data volume.
           Just enter if the target directory is /home/cubrid2/CUBRID/databases/demodb >>
                 /home/cubrid2/CUBRID/databases/demodb // 슬레이브 데이터베이스를 생성할 디렉토리 지정
       b. Please provide the directory path of log volume.
           Just enter if the target directory is /home/cubrid2/CUBRID/databases/demodb >>
                 /home/cubrid2/CUBRID/databases/demodb // 슬레이브 데이터베이스의 로그를 생성할 디렉토리 지정
...
  STEP 3 :  Insert the necessary information into the distributor database...
       a. Provide the name of the distributor database. >> distdb // 앞서 생성한 배포 데이터베이스 이름
       b. Provide the password of the DBA of distributor database. >> dba // 앞서 생성한 배포 데이터베이스의 dba 암호
  STEP 4 : Start the slave database ...
  STEP 5 : Post process after starting up the slave database...
          - the DBA password of the master database is needed..
          - Provide the DBA password of the master database. >> // 마스터 데이터베이스(demodb)의 dba 암호 입력, demodb 의 dba 암호는 없으므로 그냥 enter
  STEP 6 : Set the replication parameters...
...
   -- Parameter Number to be changed (q - quit ) >> q // 복제 설정 조정, 조정할 것이 없으므로 그냥 빠져 나옴.
  STEP 7 : Set the replication group ...
MASTER_HOST : 192.168.13.49

-------------------------------------------------------------------------
  All the classes of demodb are included in the replication group.
  Would you like to reset the replication group? (y or n) >>n // 그룹복제 지정 여부, 사용하지 않으므로 n 입력.
-------------------------------------------------------------------------

슬레이브 
데이터베이스가 지정한 디렉토리에 생성되며, 슬레이브 데이터베이스 서버가 구동됩니다.
% cub_commdb -P
 Server demodb_s (rel 8.2, pid 5040)
 Server distdb (rel 8.2, pid 4846)

복제 서버 구동
복제에 필요한 설정은 다 끝났읍니다. 마스터 서버로 로그인하거나, 단일 서버인 경우 마스터 데이터베이스 계정(cubrid)로 로그인합니다.
repl_server 를 이용하여 복제 서버를 구동하며, 사용방법은 아래와 같습니다.
cubrid repl_server start <마스터 데이터베이스 이름> <복제 포트>
% cubrid repl_server start demodb 1525
@ cubrid replication server start: demodb
++ cubrid replication server start: success

복제 에이전트 구동
슬레이브 서버로 로그인하거나, 단일 서버인 경우 슬레이브 데이터베이스 계정(cubrid2)로 로그인합니다.
repl_agent 를 이용하여 복제 에이전트를 구동하며, 사용방법은 아래와 같습니다.
cubrid repl_agent start <배포 데이터베이스 이름> <배포 데이터베이스 dba 암호>
% cubrid repl_agent start distdb dba
@ cubrid replication agent start: distdb
++ cubrid replication agent start: success

복제에 대한 간단한 테스트
테이블 생성 및 데이터 입력을 통하여 복제 여부를 간단히 확인해 볼 수 있습니다. 데이터는 테이블에 PK 가 존재할 경우에만 데이터 복제가 되므로 테이블 생성시 PK를 지정해야 합니다. 여기서는 간단히 csql 을 이용하여 테스트 하였습니다.
<마스터 서버/계정>
csql demodb
csql> create table repl_test (i int primary key)
csql> ;x
<슬레이브 서버/계정>
csql -u repl -p repl demodb_s // 슬레이브 데이터베이스 생성시 복제에 사용될 계정을 repl 로 지정했으므로, repl 계정으로 로그인
csql> ;sc repl_test // 마스터 데이터베이스에서 생성한 repl_test 테이블이 복제된 것을 확인
=== <Help: Schema of a Class> ===
 <Class Name>
     repl_test
 <Attributes>
     i                    INTEGER NOT NULL
 <Constraints>
     PRIMARY KEY pk_repl_test_i ON repl_test (i)
Current transaction has been committed.
<마스터 서버/계정>
csql> insert into repl_test values(10)
csql> ;x
1 rows inserted.
<슬레이브 서버/계정>
csql> select * from repl_test // 마스터 데이터베이스에서 입력한 데이터가 복제된 것을 확인
csql> ;x
=== <Result of SELECT Command in Line 1> ===
            i
=============
           10
1 rows selected.

  1. CUBRID DB와 Broker 분리방안

  2. 데이터 저장 구조와 테이블 재구성

  3. CUBRID 복제 구성하기 - 단일 서버에 구성 방법 포함

  4. 윈도우즈 환경에서 배치화일을 이용하여 백업 또는 데이터베이스 정리 수행하기

  5. CUBRID 복제 설계 가이드

  6. CUBRID 사용 포트와 iptables(방화벽) 설정

  7. 자동증가 속성 사용 방법 및 주의 사항

  8. CUBRID 관련 유용한 기술 자료...

  9. Server HA 구성 시 CUBRID 설정과 방법

  10. Vista_IIS_CUBRID_ASP연동

  11. CUBRID2008 R2.1 업그레이드시 serial 관련 문제 해결 방법

  12. CUBRID 데이터베이스와 연동하여 Qt어플리케이션 개발하기 - 2

  13. CUBRID 데이터베이스와 연동하여 Qt어플리케이션 개발하기 - 1

  14. CUBRID인덱스 구성 전략

  15. 조인 방법(Join Method) 설명

  16. 스칼라 서브쿼리 사용 가이드

  17. CUBRID 에 텍스트큐브 설치하기

  18. 예제로 배우는 CUBRID 스터디

  19. 독자적 테이블 사용되는 복제 재구성

  20. SELECT ~ FOR UPDATE 대체 방법

Board Pagination Prev 1 2 3 4 5 6 7 8 9 Next
/ 9

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales