사용자 도구

사이트 도구


database:aurora

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
database:aurora [2018/06/27 07:44]
kwon37xi [log]
database:aurora [2023/11/17 10:14] (현재)
kwon37xi [Read/Write Cluster]
줄 1: 줄 1:
 ====== Aurora - AWS Database ====== ====== Aurora - AWS Database ======
   * [[https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/CHAP_Aurora.html|Amazon RDS 기반 Amazon Aurora - Amazon Relational Database Service]]   * [[https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/CHAP_Aurora.html|Amazon RDS 기반 Amazon Aurora - Amazon Relational Database Service]]
 +
 +===== JDBC =====
 +  * [[https://github.com/awslabs/aws-mysql-jdbc|aws-mysql-jdbc]] : AWS 에서 직접 만들고 있는 JDBC 드라이버.
 +    * [[https://awslabs.github.io/aws-mysql-jdbc/|Amazon Web Services (AWS) JDBC Driver for MySQL]]  
 +  * [[https://github.com/awslabs/aws-postgresql-jdbc|awslabs/aws-postgresql-jdbc]]
 +  * [[https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/Aurora.Connecting.html#Aurora.Connecting.AuroraMySQL|Amazon Aurora DB 클러스터에 연결 - Amazon Aurora]]
 +  * [[https://hoing.io/archives/1285|AWS JDBC Driver for Amazon Aurora MySQL | Hoing]]
 +  * [[database:aurora:aurora_mariadb|Aurora MariaDB]]
 +==== aws-advanced-jdbc-wrapper - Read/Write Cluster ====
 +  * https://github.com/awslabs/aws-advanced-jdbc-wrapper : 다른 JDBC 드라이버를 감싸서 Aurora Cluster read/write split 지원.
 +  * [[https://github.com/awslabs/aws-advanced-jdbc-wrapper/blob/main/docs/Documentation.md|aws-advanced-jdbc-wrapper 문서]]
 +
  
 ===== 서버 설정 ===== ===== 서버 설정 =====
줄 22: 줄 34:
   * Cluster Endpoint는 자체적으로 Read/Write 모두에 대한 정보를 포함하고 있다. [[database:aurora:aurora_mariadb|Aurora MariaDB]] JDBC 드라이버 사용시 Read/Write 분기가 가능하다.  Cluster Endpoint로 접속한 경우 Master가 죽으면 자동으로 Slave를 Master로 승격하여 연결해준다.   * Cluster Endpoint는 자체적으로 Read/Write 모두에 대한 정보를 포함하고 있다. [[database:aurora:aurora_mariadb|Aurora MariaDB]] JDBC 드라이버 사용시 Read/Write 분기가 가능하다.  Cluster Endpoint로 접속한 경우 Master가 죽으면 자동으로 Slave를 Master로 승격하여 연결해준다.
  
 +===== Blocked Transaction =====
 +  * [[https://aws.amazon.com/ko/premiumsupport/knowledge-center/blocked-mysql-query/|Amazon RDS DB 인스턴스에서 차단된 MySQL 쿼리 문제 해결]]
 +  * 커밋되지 않은 트랜잭션으로 인해 다른 트랜잭션들이 block 된 상태.
 +===== Performance =====
 +==== max_connections ====
 +  * [[https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Managing.Performance.html|Amazon Aurora MySQL에 대한 성능 및 조정 관리 - Amazon Aurora]] 인스턴스별로 최대 커넥션수가 정해져 있음.
 +  * 강제 적용하려면 cluster parameter 에서 값을 명시적으로 조정할 수 있음.
 +==== Replica(reader instance) history list length 줄이기 ====
 +  * **READ Only** / Reader Instance 로 접속한 경우 아래와 같이 커넥션 접속시 설정해주면 history length 가 줄어든다.
 +  * Aurora 는 writer/reader 인스턴스가 storage 를 공유하는데, 이 때 reader 쪽의 쿼리로 인해 history list length 가 증가하면 writer 쪽에도 성능 저하 영향을 주게 된다.
 +  * Aurora Replica 가 기본적으로 ''tx_isolation=REPEATABLE_READ'' 인 상태인데, MySQL의 mvcc 모델 특성상  REPEATABLE READ 상태에서 일관된 정보를 제공하려고 트랜잭션이 완료될 때 까지 변경 전 데이터를 저장하고, commit이 될 때까지 데이터를 유지한다. 따라서 long query 가 실행되면 변경전 데이터를 저장하는 기간이 계속 길어져 성능저하를 유발한다.
 +  * [[https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Reference.html#AuroraMySQL.Reference.IsolationLevels|Amazon Aurora MySQL 참조 - Amazon Aurora]]
 +<code sql>
 +set session aurora_read_replica_read_committed = ON;
 +set session transaction isolation level read committed;
 +</code>
 +  * ''aurora_read_replica_read_committed'' 는 connection 초기화 시에 해준다. 테스트 결과 이 설정값은 writer 에 할경우에는 아무런 효과가 발생하지 않으므로 reader/writer 구분없이 해줘도 된다.
 +  * ''set session transaction isolation level read committed''는 Transaction 설정에서 해주면 될 것으로 보인다. 즉, ''readOnly=true'' 인 트랜잭션에 대해서 ''isolationLevel=READ_COMMITTED'' 를 하면 될 것으로 보인다.
 +===== Aurora for MySQL 8 =====
 +  * [[https://aws.amazon.com/ko/about-aws/whats-new/2021/11/amazon-aurora-mysql-8-0/|Amazon Aurora supports MySQL 8.0]]
 +  * [[https://aws.amazon.com/ko/blogs/database/amazon-aurora-mysql-3-with-mysql-8-0-compatibility-is-now-generally-available/|Amazon Aurora MySQL 3 with MySQL 8.0 compatibility is now generally available | AWS Database Blog]]
 +  * [[https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.MySQL80.html#AuroraMySQL.mysql80-bugs-fixed|Aurora MySQL version 3 compatible with MySQL 8.0 - Amazon Aurora]]
 +
 +===== 비용 절감 =====
 +  * [[https://aws.amazon.com/ko/blogs/tech/costsaving-sktelecom-awsgraviton-auroraiooptimized/|SK텔레콤의 AWS Graviton과 Aurora I/O-Optimized를 이용한 Amazon Aurora 비용 절감 사례 | AWS 기술 블로그]]
  
 ===== 참고 ===== ===== 참고 =====
   * [[https://blog.stibee.com/mysql%EC%97%90%EC%84%9C-rds-aurora-%EB%A1%9C-%EC%9D%B4%EA%B4%80%ED%95%98%EA%B8%B0-227db1da8fd8|MySQL에서 RDS(Aurora) 로 이관하기]]   * [[https://blog.stibee.com/mysql%EC%97%90%EC%84%9C-rds-aurora-%EB%A1%9C-%EC%9D%B4%EA%B4%80%ED%95%98%EA%B8%B0-227db1da8fd8|MySQL에서 RDS(Aurora) 로 이관하기]]
 +  * [[https://aws.amazon.com/ko/blogs/korea/best-practices-for-migrating-rds-for-mysql-databases-to-amazon-aurora/|MySQL용 RDS에서 무중단 Amazon Aurora 마이그레이션 따라하기 | Amazon Web Services 한국 블로그]] 
 +  * [[https://aws.amazon.com/ko/blogs/korea/planning-and-optimizing-amazon-aurora-with-mysql-compatibility-for-consolidated-workloads/|Amazon Aurora – MySQL에서 DB 부하에 대한 최적화 방법 | Amazon Web Services 한국 블로그]] 
 +  * [[https://www.youtube.com/watch?v=duf5uUsW3TM|AWS re:Invent 2016: Deep Dive on Amazon Aurora (DAT303) - YouTube]] 
 +  * [[https://woowabros.github.io/experience/2019/12/04/auroraRDS.html|Aurora MySQL를 운영하면서 알면 좋을 것 같은 미세한 팁 - 우아한형제들 기술 블로그]] 
 +  * [[https://aws.amazon.com/ko/premiumsupport/knowledge-center/aurora-mysql-db-cluser-read-only-error/|Aurora DB 클러스터 장애 조치 후 읽기 전용 오류 문제 해결]]
database/aurora.1530053075.txt.gz · 마지막으로 수정됨: 2018/06/27 07:44 저자 kwon37xi