Question
서울 리전에 있는 Aurora Mysql Serverless를 메인으로 하고 다른 지역의 리전으로 복제를 했는데, 서울 리전에 있는 DB의 테이블의 레코드 개수와 복제된 리전 레코드 개수가 불일치 하는 문제 원인 문의
( 리전끼리 VPC Peering 연결 )
Answer
해당 원인은 RDS 리전 복사 시 데이터 정합성이 틀려서 나타날 수 있습니다.
클러스터를 복제 하는 경우 네트워크 중단이나 기타 여러가지의 원인으로 복제 과정이 원활하게 진행되지 않을 수 있습니다.
복제 지연과 관련된 문제가 발생했을 때는 우선적으로 두 가지의 CloudWatch 지표를 보시는 것을 권장드립니다.
[ Aurora DB의 복제 지연을 나타내는 CloudWatch 지표 차이 ]
AuroraReplicaLag :
단일 클러스터 내에서 writer-reader 간에 복제 지연을 나타내는 지표
밀리초 단위로 측정
동일한 리전
AuroraBinlogReplicaLag :
AuroraDB 클러스터 간의 복제본 지연을 나타내는 지표
동일 리전 또는 교차 리전
해당 문제는 리전 간에 클러스터를 복제하다 문제가 발생한 경우로,
교차 리전 간의 클러스터 복제라는 점을 감안하여 AuroraBinlogReplicaLag 지표값을 확인해볼 수 있습니다.
AuroraBinlogReplicaLag 가 나타내는 지표 값은 아래와 같습니다.
[ Amazon Aurora에 대한 CloudWatch 지표 ]
AuroraBinlogReplicaLag 가 0 보다 높은 값 : 복제본이 복제 소스를 지연
AuroraBinlogReplicaLag 가 0 또는 0에 가까운 값 :복제본 프로세스가 활성 상태
AuroraBinlogReplicaLag가 -1 : Aurora가 지연 시간을 확인할 수 없는 경우
AuroraBinlogReplicaLag 의 수가 0보다 큰 경우라면, 복제 과정에서 지연이 발생했다는 뜻이지만,
-1의 경우라면 Aurora가 지연 시간을 확인할 수 없는 경우입니다.
이 말은 복제본 설정이 진행중이거나 오류 상태에 있을 수 있다는 뜻입니다.
그렇기 때문에 지표 값이 " -1 "로 확인된다면,
1) 복제본 설정이 아직 진행 중은 아닌지 DB 상태를 체크하고
2) 추가적인 에러 로그는 발생하지 않는지 확인하시기 바랍니다.
또한, AuroraBinlogReplicaLag 지표값이 어느순간 0이나 그 이상으로 변할 수 있으니 지속적으로 지표값을 모니터링 하시기를 권고드립니다.
---
[ 데이터 정합성이란 (Data Consistency)]
어떤 데이터들의 값이 서로 일치하는 상태를 의미합니다.
[ 여러 AWS 리전에 걸쳐 Amazon Aurora MySQL DB 클러스터 복제 ]
Amazon Aurora MySQL DB 클러스터를 소스 DB 클러스터와 다른 리전에 읽기 전용 복제본으로 만들 수 있습니다.
이를 통해 아래와 같은 기능 상 이점을 누릴 수 있습니다.
1. 재해 복구 기능을 개선
2. 읽기 작업을 사용자와 가까운 리전에서 할 수 있도록 확장
3. 한 AWS 리전에서 다른 리전으로 손쉽게 마이그레이션
암호화된 DB 클러스터와 암호화되지 않은 DB 클러스터의 읽기 전용 복제본을 모두 만들 수 있고,
원본 DB 클러스터당 최대 5개의 리전 간 DB 클러스터(읽기 전용 복제본)를 만들 수 있습니다.
[ 리전 간 Aurora MySQL DB 클러스터의 읽기 전용 복제본 생성 시 주의 사항 ]
원본 DB 클러스터와 리전 간 읽기 전용 복제본 DB 클러스터 모두 DB 클러스터의 기본 인스턴스 외에 최대 15개의 Aurora 복제본을 가질 수 있습니다.
교차 리전 시나리오에서는 AWS 리전 간 네트워크 채널이 더 길어지기 때문에 소스 DB 클러스터와 읽기 전용 복제본 간의 지연 시간이 증가합니다.
리전 간 복제를 위해 데이터를 전송할 때는 Amazon RDS 데이터 전송 요금이 발생합니다. 다음과 같이 소스 AWS 리전을 벗어나 데이터를 전송하기 때문입니다.
읽기 전용 복제본을 생성할 때는 Amazon RDS가 소스 클러스터의 스냅샷을 생성하여 해당 스냅샷을 읽기 전용 복제본이 있는 AWS 리전으로 전송합니다.
소스 데이터베이스에서 데이터를 변경할 때마다 Amazon RDS가 소스 리전에서 읽기 전용 복제본이 있는 AWS 리전으로 데이터를 전송합니다.
[ Amazon Aurora 요금 참고 ]
동일한 원본 DB 클러스터를 참조하는 읽기 전용 복제본에 대해 동시 생성 또는 삭제 작업을 여러 개 실행할 수 있습니다. 하지만 각 원본 DB 클러스터에 대한 읽기 전용 복제본 개수를 5개 이하로 유지해야 합니다.
효과적인 복제를 위해서는 읽기 전용 복제본도 각각 원본 DB 클러스터와 동일한 양의 컴퓨팅 및 스토리지 리소스를 가져야 합니다. 원본 DB 클러스터를 확장하면 읽기 전용 복제본도 확장해야 합니다.
감사합니다.
=== 참고 문서 ===
[1] 여러 AWS 리전에 걸쳐 Amazon Aurora MySQL DB 클러스터 복제
https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Replication.CrossRegion.html#AuroraMySQL.Replication.CrossRegion.Troubleshooting
[2] Amazon Aurora에 대한 Cloudwatch 지표
https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraMonitoring.Metrics.html
[3] Amazon Aurora에서 읽기 전용 복제본을 사용할 때 일반적인 문제 해결
https://repost.aws/es/knowledge-center/aurora-mysql-read-replicas