* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
|
|
Rocky Linux 8.10 |
|
|
CUBRID 11.4 (11.4.1.1787-8d83685) (64bit release build for Linux) |
|
|
11.4 |
|
|
Springboot, jdbc |
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
| 에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
| 관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
물리적인 서버 2대를 HA 구성하였습니다.
그리고 해당 서버에 각각 브로커를 3개 query_editor / broker1(RW) / broker2(RO) 구성하였습니다. (총 6개)
※ 첨부파일 참조
jdbc 접속 시 URL을 아래와 같이 합니다.
jdbc:CUBRID:DB1_broker1_아이피:33000:DB명:::?altHosts=DB2_broker1_아이피:33000
위 설정으로는 논리상 결국 DB1번에 접속장애가 생겨야 DB2로 접속을 하게 될 것이고 RO브로커는 사용하지 않을 것으로 예상됩니다.
그렇다면 부하분산 관점에서 loadBalance=true 옵션을 주었을 때 데이터 동기화에는 문제가 없을까요?
그리고 RO 브로커를 응용환경에서 수정없이 DBMS 자체적으로 라우팅하는 방법이 없을까요?
1. RO사용이슈
"jdbc:CUBRID:DB1_broker1_아이피:33000:DB명:::?altHosts=DB2_broker1_아이피:33000
위 설정으로는 논리상 결국 DB1번에 접속장애가 생겨야 DB2로 접속을 하게 될 것이고 RO브로커는 사용하지 않을 것으로 예상됩니다."
==> 작성자님의 예상이 맞습니다.
2. loadBalance
"부하분산 관점에서 loadBalance=true 옵션을 주었을 때 데이터 동기화에는 문제가 없을까요?"
==> 동기화에는 문제 없습니다. 클라이언트 요청에 특정 서버에 집중되지 않도록 분산하는 옵션으로 데이터동기화 에는 문제가 없습니다.
* 설정값
false: 해당 속성이 적용하지 않는다.
true 또는 rr: 지정한 호스트들을 Round-Robin 방식으로 연결한다.
sh: 지정한 호스트들을 무작위(Shuffle) 방식으로 연결한다.
3. DBMS자체적으로 라우팅 가눙여부
"그리고 RO 브로커를 응용환경에서 수정없이 DBMS 자체적으로 라우팅하는 방법이 없을까요?"
API수정없이 Read분산을 자체적으로 하는 기능은 제공 되고 있지 못하고 있습니다.
2026년 11.5 버전에 해당 기능 추가를 목표로 하고 있습니다.
그래서 일반저그올 기술가이드로 JDBC connection을 "쓰기용"과 "읽기용"으로 선언하여 이를 구별하여 connection을 사용하도록 권고 하고 있습니다.
예제)
[Write]
Master:33000?altHosts=Slave:33000&rcTime=300&loadBalance=true
[Read]
Master:34000?altHosts=Slave:34000,Replica1:34000,Replica2:34000&rcTime=300&loadBalance=true
API수정없이 DBMS자제적으로 처리할 수 있는 방안을 제공 드리면 좋겠으나 최신 release버전에서 제공드리지 못한점 양해 바랍니다.
그러나 우려하신 것과 같은 데이터 동기화 오류는 발생한 적이 없으니 안심하고 사용하셔도 무방합니다.
감사합니다.