Background Image

FORUM

조회 수 13431 추천 수 0 댓글 3
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

안녕하세요.


8.2.2로 데이터베이스 2대로 HA 구성하여 운영 중 문의 사항이 있습니다.


DB1 - Master role

DB2 - Slave role


로 운영 중 네트워크 문제로 DB1의 접속이 이뤄지지 않을 시 DB1 이 unknown이 되어 DB2가 Master 로 role 이 변경되어

문제없이 운영되고 있습니다.


문제는 네트워크 장애 사항이 해결되어 DB1이 다시 연결될 때 발생되고 있습니다.


DB1의 일시적인 네트워크 장애가 해결되어 다시 연결될 때

서버 및 데이터베이스 구동이 계속 이뤄지고 있다가 다시 연결되어


DB1 - Master role (Priority 1)

DB2 - Master role (Priority 2)


위와 같은 상태로 다시 연결이 되었습니다.


이때, DB1이 Master role로 동작하고 DB2가 Slave로 전환되지 않고 서비스가 종료되고 있습니다.


해당 상황일 경우 DB2가 Slave로 자동 전환되는 것이 아닌지 궁금합니다.


감사합니다.

  • ?
    샤롱스판 2012.03.09 23:51

    1) 큐브리드는 마스터가 복구된 상태에서 현재 마스터(원래는 슬레이브)가 slave로 자동 전환되지 않습니다.

    2) 현재 상황은 네트워크의 순단으로 인해 마스터가 2개가 되버리는 split brain 상태입니다. 즉, DB1<--> DB2 간 통신이 이루어지지 않아서 DB1 마스터가 멀쩡한 상태(role change X)에서 DB2가 마스터로 role change가 되고, 응용은 DB2에 붙어서 트랜잭션 처리(*)를 하고요. 다시 네트웤 복구되어 응용이 정상적으로 마스터 DB1으로 붙게 되면서, DB2가 종료된 것입니다.

    3) 지금은 운영자분께서 판단을 해주셔야 합니다 DB2에 붙어서 발생한 트랜잭션(*)을 무시해도 되는지, 그렇다면 그냥 종료된 슬레이브 DB2를 구동(cubrid heartbeat start)하시면 되고.. 이러면 트랜잭션(*)량만큼 불일치가 존재하는 상태에서 DB1의 복제로그들이 DB2에 받아지게 됩니다. 그 사이에 어떤 SQL들이 DB2에서 실행되었는지 확인하려면 브로커 로그를 확인하시면 되겠습니다. 무시할 수 없는 복제 불일치 상태라면 DB1에서 유실했던 트랜잭션(*)을 수동으로 넣으신 후 DB2 슬레이브를 처음부터 복제 재구축하는 방법이 있습니다.  

    4) 차라리 마스터가 확 죽었다면 이런 현상이 발생하지 않는데, 네트워크 순단에 의한 경우 이렇게 복잡한 상황이 발생할 수 있습니다. 이를 방지하기 위해 R2.2 최신패치 및 R4.0, R4.1 최신버전에는 cubrid_ha.conf파일에 ha_ping_hosts 파라미터를 지원하였습니다. 이는 동일 네트워크에 있는 제3의호스트를 지정하여, 정말 네트워크로 인해 통신이 끊긴 것인지 한번 더 확인을 하고  마스터 DB1을 Slave로 role change하도록 하여 split brain 을 방지하도록 동작합니다. ( http://www.cubrid.org/manual/ko/8.4.4/ha.html#cubrid-ha-conf 참고)

    현재 사용중이신 버전에서 이를 지원하는지 확인하여 주시기 바랍니다. 만약 구버전이라면 버전 업데이트도 고려해주시고요.  

     

    최대한 쉽게 설명하려고 했는데 도움이 되시면 좋겠습니다.

  • ?
    freemir 2012.03.10 00:34

    항상 친절한 답변 고맙습니다.

    설명해주신 내용을 통해 의문점이 해결되었습니다.


    현재 8.2.2.10007 을 사용 중입니다. (2.2 최신버전)

    말씀하신 cubrid_ha.conf 파일이 없어서 현재 cubrid.conf 에 

    ha_mode

    ha_port_id

    ha_node_list

    를 작성하여 사용 중입니다.


    ha_ping_hosts 를 추가해서 확인해보겠습니다.


    추가적으로

    매뉴얼의 failover와 failback 부분에서는 ha_ping_ports 로 기술되어있고

    cubrid_ha.conf 부분에서는 ha_ping_hosts 로 기술되어 있습니다.

    ha_ping_hosts가 맞는 것이겠지요?


    그리고 ha_ping_hosts 부분에 hostname이 아닌 ip도 사용이 가능한지 궁금합니다.

    감사합니다.

  • ?
    샤롱스판 2012.03.10 02:18

    네. R2.2에서는 cubrid.conf에 ha_ping_hosts를 추가하시면 되겠습니다. 설정값으로 IP주소도 허용합니다.

    매뉴얼에서 ~port~로 되어 있는 것은 오타입니다.

    오타수정은 물론, 다음 버전 매뉴얼에서는 freemir 님처럼 자체 구축/운영하시는 분들께서 막히시는 부분이 없도록 HA관련 예제와 운영 가이드를 보완할 예정입니다. 제품 발전에 도움 주셔서 감사합니다.


List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 CUBRID 사용자를 위한 DBeaver 도구 출시 안내 admin 2024.04.23 115
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4474
3940 이거... 뭐가 문제 일까요? 2 안지민 2011.11.18 27661
3939 CUBRID 설치 문의 입니다. 1 해바라기 2008.12.04 27379
3938 Cannot connect to a broker 1 sjnoh 2010.08.10 27326
3937 2008 RC1.1 매니저 실행에 대한 문제점과 임시적인 해결책 1 GGG특별대원 2008.12.05 27220
3936 실행 오류 :-46 (Internal error: slot 3 on page 4231 of volume) 3 file reerror 2011.11.09 26849
3935 console 에서 만든 db의 password를 바꾸고 싶습니다. 1 살구맛 2013.02.08 26729
3934 Java sp에서 Sybase DB연결시 오류. 2 young 2010.01.12 26599
3933 중복데이터 제거 방법 좀 알려주세요. 11 김경아 2009.05.26 26573
3932 엔터 개행문자 역슬래쉬 문제 4 초보 2010.03.24 26550
3931 ROW_NUMBER() OVER(PARTITION BY 어떻게..해야 할까요??? 5 초식곰 2011.09.09 26461
3930 VARCHAR 타입에 관한 질문. 2 김우람 2009.02.26 26250
3929 오라클과의 호환성과 대용량 검색 속도 1 오004 2009.12.16 26155
3928 select update 쿼리 문의 드립니다. 4 신나여 2013.11.29 26070
3927 CUBRID 2008 R4.0 Beta HA 관련 질문입니다. 6 file 반짝이 2011.05.16 25848
3926 CUBRID 2008 데이터베이스 사용자 권한상속 에러. 6 윤희서 2009.01.17 25834
3925 datetime 값을 to_date 로 형변환 방법좀 알려주세요 1 황선욱 2013.08.20 25793
3924 HA관련 CUBRID Manager 에서 대시보드 문의드립니다... 2 file 반짝이 2011.07.13 25736
3923 cubrid.jdbc.driver.CUBRIDException: 4 아르미 2009.04.03 25729
3922 프로그램 개발 후 배포 관련 3 늘푸른거북이 2009.02.12 25365
3921 [질문] Insert문의 속도 향상 방법이 있나요? 3 ........ 2011.08.10 25234
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 200 Next
/ 200

Contact Cubrid

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