달리는 두딘

[DB] MariaDB JDBC Failover 및 Load balancing 설정 본문

지식노트

[DB] MariaDB JDBC Failover 및 Load balancing 설정

디두딘 2024. 7. 16. 14:32

 

  • JDBC 설정 방법
  • jdbc:(mysql|mariadb):[replication:|sequential:|loadbalance:|aurora:]//[,...]/[database][?=[&=]...]
  • replication: jdbc:mysql:replication://master1,slave1,slave2/test
  • sequential: jdbc:mariadb:sequential://master1,master2/test
  • loadbalance: jdbc:mariadb:sequential://master1,master2/test

 

sequential

다중 마스터 환경에서 사용 가능하며, 정의된 순서대로 Connection 연결 시도, 첫 번째 호스트를 접속하지 못한 경우 다음 호스트로 순차적 접속 시도 연결 시도, (다중 Master, failover)

MariaDB Connector/J 1.3.0 이상

 

loadbalance

다중 마스터 환경에서 사용, 정의된 host 중 무작위로 선택, 부하를 분산 처리(다중 Master, 부하 분산)

Galera처럼 테이블을 동시에 잠금하여 작업하지 않는 이상 사용 불가, Relation기능을 이용한 다중 마스터의 경우 트랜잭션이 끝난 이후 동기화가 이루어지므로, 문제 발생 가능성 있음

MariaDB Connector/J 1.2.0 이상

 

replication

마스터-슬레이브 환경에서 슬레이브에 로드밸런싱을 지원, 슬레이브로 설정된 호스트에 무작위 연결 부하 분산
(슬레이브 failover, 부하 분산)

MariaDB Connector/J 1.2.0 이상

 

관련 변수

  • autoReconnect: failover기능이 비활성화된 상태에서는 해당 호스트에 재 연결을 시도하며, failover기능 활성화 상태에서는 다른 호스트에 연결을 시도 (default:false)
  • retriesAllDown: 모든 호스트가 작동이 중지된 경우 예외를 발생시키기 전 최대 연결 시도 횟수(default: 120) ??
  • failoverLoopRetries: 예외 발생 전 최대 연결 시도 횟수(default: 120), retriesAllDown와 다름???
  • validConnectionTimeout: 연결된 이후, 주기적 연결 확인, 0 설정한 경우 확인하지 않음(default: 120)
  • loadBalanceBlacklistTimeout: 연결이 실패한 경우 해당 호스트는 블랙리스트에 추가, 설정된 시간 동안 접속을 시도하지 않음, 남은 호스트가 없는 경우 블랙리스트에 있는 호스트도 접속 시도(default: 50초)
  • assureReadOnly: 읽기 전용 설정한 경우, 해당 값이 true인 경우 세션을 읽기 모드로 설정(default: false)
  • allowMasterDownConnection : replication모드로 사용 중 마스터가 중지된 경우 슬레이브에 기본 연결로 설정, 운영, 쓰기는 안됨(default: false)

 

출처

https://nakanara.tistory.com/206|

https://mariadb.com/kb/en/failover-and-high-availability-with-mariadb-connector-j/