훈훈훈
Amazon AWS :: Aurora MySQL JDBC driver 정리 본문
Introduction
이번 글은 AWS Aurora MySQL 를 사용할 때 어떤 MySQL JDBC driver 라이브러리 사용할지 고민하면서 찾아보게 된 내용을 정리해보기로 하였다.
간단하게 요약하자면 MariaDB connector / J 와 AWS MySQL JDBC 사이에 고민을 했고, 두 라이브러리를 비교해보게 되었다.
MariaDB connector / J
MariaDB Connector / J 공식문서를 보면 아래와 같이 auroa 옵션을 부여할 경우 replication 과 failover 기능을 사용할 수 있는 것을 알 수 있다. 해당 기능의 장점은 별 다른 구현 없이 failover 와 replication 를 쉽게 이용할 수 있다는 점이다.
하지만, MariaDB JDBC drvier 버전 3 부터는 더 이상 해당 기능을 지원하지 않는 것으로 명시되어 있다.
MariaDB JDBC drvier 2 버전대를 사용하여 애플리케이션을 운영할 수 있겠지만, 시간이 지남에 따라 결국에는 라이브러리를 교체하게 될 것이다.
처음에는 기존에 사용하였던 MariaDB connector / J 를 사용하려고 하였지만, 위와 같은 문제로 대안을 찾기 위해 AWS 공식 문서를 확인해보기로 했다.
참고로 MariaDB JDBC drvier 에서 지원하는 replication 기능은 애플리케이션에서 코드로 직접 구현할 수 있다. (참고 글)
하지만, slave 를 여러대 사용하는 경우 아래처럼 yml 파일에 매번 추가하고 Bean 으로 수동 등록해야하는 번거로움이 있다.
spring:
datasource:
master:
hikari:
driver-class-name: com.mysql.cj.jdbc.Driver
jdbc-url: jdbc:mysql://127.0.0.1:3306/master?serverTimezone=UTC
username: root
password: 1234
slave1:
hikari:
driver-class-name: com.mysql.cj.jdbc.Driver
jdbc-url: jdbc:mysql://127.0.0.1:3306/slave1?serverTimezone=UTC
username: root
password: 1234
slave2:
hikari:
driver-class-name: com.mysql.cj.jdbc.Driver
jdbc-url: jdbc:mysql://127.0.0.1:3306/slave2?serverTimezone=UTC
username: root
password: 1234
slave3:
hikari:
driver-class-name: com.mysql.cj.jdbc.Driver
jdbc-url: jdbc:mysql://127.0.0.1:3306/slave3?serverTimezone=UTC
username: root
password: 1234
현재는 MariaDB JDBC drvier 를 사용하여 replication 과 failover 기능을 사용하고 있다.
spring:
datasource:
hikari:
jdbc-url: jdbc:mariadb:aurora://___.rds.amazonaws.com:3306/db_name
driver-class-name: org.mariadb.jdbc.Driver
username:
password:
MariaDB Connector / J vs AWS MySQL JDBC
MariaDB connector / J 버전 이슈에 대한 방안을 찾기 위해 관련 AWS 공식 문서를 찾아보았고, 해당 공식 문서에서 찾아 볼 수 있었다. 해당 문서에는 Amazon AWS 에서 개발한 AWS JDBC driver for MySQL 를 사용하는 것을 권장하는 것을 알 수 있다.
아래 문서에서도 관련 내용을 이야기 하고 있다.
AWS MySQL JDBC driver 를 사용하면 좀 더 향상된 failover 속도를 제공한다고 한다.
성능 관련해서는 아래 문서에서 확인할 수 있었다.
장애가 발생했을 때, MariaDB Connector / J 보다 더 빠르게 대응하는 것을 볼 수 있다.
이제까지 AWS 공식 문서에서 AWS JDBC driver for MySQL 에 관하여 소개하는 글들을 살펴보았다.
하지만 뭔가 놓친 기분이 들었다. failover 에 관한 내용은 성능 테스트 자료까지 자세하게 설명이 되어 있었지만, replication 에 관한 내용은 볼 수 없었다.
그래서 해당 프로젝트 github 을 보기로 하였다.
프로젝트 README 를 보면 Read-Write spliting (replication) 기능은 현재 지원하고 있지 않는 것을 알 수 있다.
현재 MariaDB Connector / J 에서 read only 트랜잭션인 경우 reader DB 로 라우팅 해주는 기능은 없는 것 같다.
사실 저 기능을 지원하지 않는다면 AWS JDBC driver for MySQL 를 사용할 이유는 없다고 생각한다.
아쉽지만, 혹시나 해당 기능은 언제 지원이 되는지 궁금하여 PR 들을 찾아보았다.
최근에 관련 몇몇 PR 들이 반영 된 것으로 보인다.
해당 PR 을 보면 1.2.0 버전에는 Read-write splitiing 기능이 배포될 것 같다.
현재 1.1.0 버전까지 릴리즈 되었으니, 빠르면 올해 안에 해당 기능을 사용할 수 있지 않을까 싶다.
이번에 작성한 글을 짧게 요약하자면, 아직은 MariaDB connector / J 2 버전대를 사용하고
추후 AWS JDBC driver for MySQL 1.2.0 버전이 나오고 별 다른 이슈가 없을 때, 라이브러리를 교체해도 좋을 것 같다.
# reference
https://github.com/awslabs/aws-mysql-jdbc
https://github.com/mariadb-corporation/mariadb-connector-j
https://johngrib.github.io/wiki/mariadb-connector-j/#failover-and-load-balancing-parameters
https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/Aurora.Connecting.html
https://hoing.io/archives/1285
'인프라 > Amazon AWS' 카테고리의 다른 글
Amazon AWS :: EC2 인스턴스에서 Django 배포 (0) | 2020.03.07 |
---|---|
Amazon AWS :: Django 사용 시 RDS 보안 설정 (0) | 2020.03.07 |
Amazon AWS :: EC2 인스턴스에 Django와 RDS 연동 (0) | 2020.03.07 |
Amazon AWS :: EC2 인스턴스에 Django 설치 (0) | 2020.03.07 |
Amazon AWS :: EC2 인스턴스 생성 과정 (0) | 2020.03.07 |