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 34
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4458
993 CUBRID Manager 접속 오류 문의 4 file 미누사랑 2014.05.08 10694
992 테이블 및 컬럼 코멘트 등록을 위한 테이블 스키마 정보 문의 1 nilriri 2013.08.09 10695
991 lockdb 질문입니다. 1 오니오니 2013.12.17 10700
990 CCI 프로그램 예제나 자료 나와 있는데 없나요?? 2 나동호 2009.03.24 10703
989 LINQ 지원 문의 1 Aaron 2009.11.10 10704
988 큐브리드 2008에서 C-API 6 하나엘 2009.11.17 10710
987 CCI 프로그램을 하려면 어떻게 해야하나요? 2 나동호 2009.03.22 10716
986 그랜트 권한 문의 드립니다. 1 키싱유 2014.01.14 10716
985 정수와 정수의 나누기.. 1 파란토끼 2013.10.08 10719
984 CentOS 5.3 64bit, cubird 2008 r2.0 설치오류문제 2 비타500 2009.09.10 10723
983 리눅스에서 큐브리드 메니저 에러 2 file 태랑 2010.04.13 10727
982 저장프로시저(function) 오류 문제입니다. 1 yoon 2010.03.29 10732
981 트리거 delete on 문법 문의 1 aliveJune 2009.10.05 10742
980 윈도우에 등록되는 서비스명 변경이 가능한가요? ^^ 2 노스 2010.11.08 10744
979 죄송하게도 loadjava 다시 질문 올립니다. ^.^; 1 보물섬 2016.07.01 10748
978 로그 분석 툴 이용시 분석 에러발생합니다. 4 file 노스 2010.02.03 10753
977 쿼리의 결과를 비동기적으로 알 수 있나요. 1 초보대왕 2009.07.23 10753
976 한 ROW 의 크기를 알 수 있는 방법이 있나요? 2 유니콘 2011.03.09 10759
975 특정 테이블 최적화 시 에러 발생 3 인경수 2009.07.11 10761
974 BIT형 데이터에 대한 where ... IN 쿼리 1 소라게 2010.03.10 10764
Board Pagination Prev 1 ... 146 147 148 149 150 151 152 153 154 155 ... 200 Next
/ 200

Contact Cubrid

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