티스토리 뷰
[Spring Boot] 2.7.8 버전 이후 Amazon RDS Aurora MySQL JDBC Driver 변경
snail voyager 2023. 11. 21. 00:12이슈
Spring Boot 2.7.8 버전 업그레이드 시 mysql-connector-java 의존성 에러가 발생
원인
MySQL JDBC Driver가 mysql-connector-java -> com.mysql:mysql-connector-j 으로 변경됨
https://github.com/spring-projects/spring-boot/releases/tag/v2.7.8
조치
com.mysql:mysql-connector-j 으로 의존성 변경
#AS-IS
implementation 'mysql:mysql-connector-java'
#TO-BE
implementation 'com.mysql:mysql-connector-j'
https://mvnrepository.com/artifact/com.mysql/mysql-connector-j
이슈2
Amazon Aurora MySQL DB를 사용할 때 mariadb-java-client 의존성으로 Driver 연결이 불가
원인
mariadb-java-client 3.x 이상 부터는 mariadb:aurora 모드를 지원하지 않는다.
Version 3.0.3 of the MariaDB JDBC Driver (Connector/J) no longer supports Amazon Aurora. We recommend using the AWS Advanced JDBC Wrapper Driver .
조치
software.aws.rds:aws-mysql-jdbc 의존성 추가
implementation 'software.aws.rds:aws-mysql-jdbc:1.1.11'
https://mvnrepository.com/artifact/software.aws.rds/aws-mysql-jdbc
AWS JDBC 드라이버로 교체하고, 접속 URL 접두사 jdbc:mysql://을 jdbc:mysql:aws://로 변경
url: jdbc:mysql:aws://{host}:{port}
driver-class-name: software.aws.rds.jdbc.mysql.Driver
IP 주소 타입으로 접속해야한다면 clusterInstanceHostPattern 파라미터를 붙여줘야한다.
"?. + HOSTNAME 규칙으로 작성
jdbc:mysql:aws://10.10.10.10:3306/DBNAME?clusterInstanceHostPattern=?./db-identifier.cluster-XYZ.us-east-2.rds.amazonaws.com:3306
이슈3
aws-mysql-jdbc는 Read-Write Splitting을 지원하지 않는다. ( aws-mysql-jdbc 1.1.11 기준)
AWS Aurora에서 read-only 일 때 reader에서 실행되는 load-balancing을 사용하려면 mariadb:aurora 모드를 사용해야하는데
mariadb-java-client 3.x 이상 부터는 mariadb:aurora 모드를 지원하지 않는다.
대안으로 mariadb:replication 모드를 사용해봤지만 writer, reader 분산처리가 될 뿐 read-only에서 writer에서도 실행된다.
결국 mariadb-java-client 2.x 으로 명시해서 mariadb:aurora 모드를 사용해야한다.
implementation 'com.mysql:mysql-connector-j'
implementation 'org.mariadb.jdbc:mariadb-java-client:2.7.11'
url: jdbc:mariadb:aurora://[Writer]:3306,[Reader]:3306/
driver-class-name: org.mariadb.jdbc.Driver
https://github.com/awslabs/aws-mysql-jdbc#amazon-web-services-aws-jdbc-driver-for-mysql
https://github.com/awslabs/aws-mysql-jdbc/issues/237
https://keichee.tistory.com/470
https://mariadb.com/kb/en/about-mariadb-connector-j/#failover-and-load-balancing-modes
'Spring' 카테고리의 다른 글
[Spring Boot] @ExceptionHandler 에서 동일한 Exception을 구분해서 처리하는 방법 (0) | 2023.11.24 |
---|---|
[Spring Boot] No spring.config.import property has been defined (1) | 2023.11.23 |
[Spring] Swagger CORS 이슈 (0) | 2023.11.09 |
[Spring Boot] CircuitBreaker Resilience4j (0) | 2023.10.07 |
[Spring Boot] OpenFeign Fallback (0) | 2023.10.03 |