베하! 안녕하세요~!
BTC_수신자표시제한 입니다.
오늘은 AWS RDS 읽기 전용 복제본 생성 시 원본 DB에 영향을 미치는지에 대해 알아보도록 하겠습니다.
우선 AWS RDS에 대한 대략적인 설명부터 드리겠습니다.
AWS RDS 란?
AWS RDS는 관리형 데이터베이스 서비스로 데이터베이스 엔진을 실행하는 가상 서버입니다. AWS RDS를 사용하면 클라우드 환경에서 쉽게 관계형 데이터베이스를 설정, 운영 및 확장할 수 있습니다.
또한 AWS RDS는 데이터베이스의 일부 또는 전체 관리를 AWS에게 맡길 수 있는 서비스로, 데이터베이스 인스턴스의 프로비저닝, 설정, 보안, 패치, 백업, 복구 등을 자동화하고 관리합니다. 이를 통해 개발자와 운영자는 데이터베이스 관리에 대한 복잡성과 작업 부담을 줄이고, 애플리케이션 개발에 집중할 수 있습니다.
⁉️ 그렇다면 AWS RDS 복제본은 무엇일까요 ⁉️
AWS RDS 복제본이란?
AWS RDS 복제본은 Amazon RDS의 기능 중 하나로, 원본 데이터베이스 인스턴스의 복사본을 생성하는 기능을 말합니다. 복제본은 원본 데이터베이스와 동기화되어 데이터의 실시간 복제를 제공하며, 읽기 작업에 대한 부하 분산 및 고가용성을 위해 사용됩니다.
복제본은 주로 읽기 전용 작업을 처리하는 데 사용되며, 읽기 작업을 복제본에 분산시킴으로써 원본 데이터베이스의 성능을 향상시킬 수 있습니다. 복제본은 원본 데이터베이스와 동기화되므로, 원본 데이터베이스에 발생하는 쓰기 작업은 복제본으로 전달되어 데이터 일관성을 유지합니다.
MySQL, MariaDB, PostgreSQL, Oracle 및 SQL Server 데이터베이스 엔진의 경우, Amazon RDS에서 소스 DB 인스턴스의 스냅샷을 사용해 두 번째 DB 인스턴스를 생성합니다. 그런 다음 엔진의 기본 비동기식 복제 방법을 사용해 소스 DB 인스턴스가 변경될 때마다 읽기 전용 복제본을 업데이트합니다.
⁉️ 여기서 비동기식 복제 방법이란 무엇일까요 ⁉️
동기식 복제 방법까지 함께 설명드리겠습니다 :)
동기식, 비동기식 복제 방법이란?
비동기식 복제 방법은 데이터의 변경 사항을 원본 데이터베이스에서 복제본으로 실시간으로 전달하지 않고, 원본 데이터베이스에서 로그로 기록한 후, 이 로그를 이용하여 복제본으로 비동기적으로 전달하는 방식을 말합니다.
따라서 데이터가 입력되었을 때 복제본에 즉시 반영되는 것이 아니라, 일정한 주기나 예약에 따라 복제 작업이 수행됩니다.
이로 인해 데이터의 변경 사항이 실시간으로 복제본에 반영되지 않을 수 있으며, 일시적인 데이터의 불일치가 발생할 수 있습니다.
반면 동기식 복제 방법은 데이터의 변경 사항을 원본 데이터베이스에서 복제본으로 실시간으로 전달하는 방식입니다.
따라서 데이터 전달이 요청과 동시에 즉시 이루어지며, 원본 데이터베이스와 복제본은 항상 동기화된 상태를 유지하게 됩니다.
동기식 복제는 데이터의 변경 사항이 원본에서 복제본으로 성공적으로 전달되기 전까지는 원본 데이터베이스에서 트랜잭션을 완료하지 않습니다.
이로 인해 데이터의 일관성을 보장할 수 있지만, 복제 작업의 지연으로 인해 원본 데이터베이스의 성능에 영향을 줄 수 있습니다.
동기식 복제는 데이터의 일관성을 우선시하는 경우에 적합하며, 비동기식 복제는 데이터의 실시간성보다는 성능과 확장성을 우선시하는 경우에 적합합니다. 선택할 복제 방식은 데이터의 중요도, 복제 지연에 대한 허용 범위, 시스템의 가용성 및 성능 요구사항 등을 고려하여 결정해야 합니다. AWS RDS는 이러한 복제 방식을 지원하며, 사용자는 필요에 따라 적절한 방식을 선택할 수 있습니다.
여기까지 AWS RDS와 복제본에 대한 간략한 개념이였습니다 :)
그렇다면 본론으로 넘어가서 !!
RDS 읽기 전용 복제본을 생성할 때 원본 DB에 다운타임이나 접속오류 등의 영향을 미칠까요?
AWS RDS 읽기 전용 복제본 생성 시 오류 발생 유무
RDS 읽기전용 복제본을 생성하는 과정에서 일반적으로 원본 DB에 다운타임이나 접속오류가 발생하지 않습니다! AWS RDS는 비동기식 복제 방법을 사용하여 읽기 전용 복제본을 생성하기 때문에 기존의 원본 데이터베이스 인스턴스에는 영향을 주지 않습니다.
또한 복제본이 서비스에 영향을 미치지 않고 있다면 새로운 복제본 생성 및 삭제는 다운타임 없이 가능합니다. 하지만 복제본이 서비스에 사용되고 있는 경우, 새로운 복제본과 클러스터 및 엔드포인트를 연결하는 과정에서 다운타임이 발생할 수 있습니다.
따라서 복제본 생성 후, 기존의 복제본과 연결된 클러스터와 엔드포인트를 새로운 복제본으로 전환한 후에 기존 복제본을 삭제하는 것이 좋습니다.
⁉️ 추가적으로 복제본을 생성할 시 복제본과 원본 DB와의 싱크가 정확하게 맞을까요 ⁉️
넵 그렇습니다~!
읽기 전용 복제본을 생성하면 먼저 기존 DB 인스턴스를 원본으로 지정하고, 소스 인스턴스의 스냅샷을 생성하여 해당 스냅샷에서 읽기 전용 인스턴스를 생성합니다. Amazon RDS는 소스 DB 인스턴스에서 모든 데이터베이스를 복제합니다.
즉, AWS RDS에서 데이터베이스의 새 복제본을 생성하면 처음에 새 인스턴스는 모든 데이터 및 테이블 구조를 포함하여 원래 인스턴스의 정확한 복사본이 됩니다.
요약하자면..!
RDS 읽기 전용 복제본을 생성할 때 원본 DB에 다운타임이나 접속 오류가 발생하지 않으며, AWS RDS는 비동기식 복제 방법을 사용하여 복제본을 생성하기 때문에 원본 데이터베이스 인스턴스에는 영향을 주지 않습니다.
새로운 복제본을 생성하고 기존 복제본과 클러스터 및 엔드포인트를 연결하는 과정에서 다운타임이 발생할 수 있지만, 서비스에 영향을 미치지 않는 한 복제본 생성 및 삭제는 다운타임 없이 가능합니다.
여기까지 AWS RDS에 대해 알아보았습니다!
도움이 되셨으면 좋겠습니다😊
다음에 만나요 👋👋
'CSP (Cloud Service Provider) > AWS' 카테고리의 다른 글
AWS Redis 란? (0) | 2023.06.02 |
---|---|
Cloudfront 실습(S3연동 - Error 페이지 출력) (0) | 2023.05.30 |
[AWS] Athena (0) | 2023.05.28 |
cloudwatch logs를 s3로 전송하는 방법 (0) | 2023.05.26 |
[AWS] AWS Lambda (0) | 2023.05.26 |
댓글