Background Image

FORUM

조회 수 13354 추천 수 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
번호 제목 글쓴이 날짜 조회 수
공지 SQLGate for CUBRID를 사용해 보시기 바랍니다!!! file admin 2019.07.31 540
98 ADO이용시 OLEDB Driver에러 2 flypig 2010.01.29 15489
97 ADO.net 또는 ODBC에 대한 질문입니다. 12 세스카 2012.03.20 13250
96 ADO.net Driver 변경 시 cascci.dll 로드할 수 없다는 오류 1 물병 2017.07.25 327
95 ADO.Net 사용중입니다. 상태확인 방법을 알고 싶습니다. 1 CUCUCUCU 2015.10.22 5657
94 ADO.NET에서 자바 저장함수 호출 2 kdknim21 2014.11.01 8172
93 ADO.NET 을 비쥬얼 스튜디오에 연결하기... 4 희나람 2012.02.12 11657
92 ADO.NET 드라이버 집합형 데이터 지원 2 소라게 2012.02.09 39813
91 ADO.NET 관련 질문 1 할리 2015.10.30 6423
90 ADO.NET dll 참조 2 abc12 2018.10.04 337
89 ADO.NET cascci.dll 64Bit, field name/type 오류 2 할리 2016.01.21 6571
88 ADO.NET cascci.dll 64Bit 관련 1 할리 2015.11.06 6091
87 ADO.NET 4.5 SQL query의 칼럼이름가져오기 1 allis 2017.09.06 225
86 ADO.NET "Invalid buffer position!" 오류 1 file 할리 2014.07.17 7421
85 ADO update관련 문의드립니다. 1 SD2 2014.01.26 7647
84 ADD_MONTHS 함수의 사용 1 체리필터 2009.06.25 16006
83 ADD AFTER, FIRST 명령어와 ALTER MODIFY, CHANGE 문제 1 무냉채 2017.03.01 9272
82 ACXEL_Installer를 이용할려는데 1 SoMa 2010.12.20 7671
81 ACTIVE_SESSION 이 48수치에 DB 다운되어 버립니다. 13 안토니오 2010.07.25 10832
80 A serial object already exists as an auto increment constraint. 오류 질문 1 kimsuny 2013.10.28 15888
79 A provider-specific error occurred 에러 1 file 유니콘 2010.10.26 10224
Board Pagination Prev 1 ... 146 147 148 149 150 151 152 153 154 155 Next
/ 155

Contact Cubrid

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