SQL을 쿼리 언어로 사용하는 DB를 관리하는 서비스입니다.
ex) Postgres, MySQL, MariaDB. OracleDB, Aurora
하지만 SSH를 통해 RDS 인스턴스로 접근은 할 수 없습니다.
최대 5개의 Replica 생성 가능하고 AZ 내, AZ 간, Region 간으로 선택이 가능합니다. 하지만 Application이 각 복제본과 직접 연결이 되어 있어야 합니다.
만약 Read Replica에 쓰기 작업을 진행하게 된다면, 해당 DB는 더이상 Read용이 아닌 독립적인 DB로 변하게 됩니다.
복제는 비동기적(Asynchronous)하게 일어나기 때문에 순간에는 올바른 데이터가 아닐 수 있지만, 결국엔 동일하게 됩니다.
RDS를 같은 Region의 다른 AZ로 이동시킬 때에는 비용이 발생하지 않습니다. 하지만 Cross-Region인 경우에는 비용이 부가됩니다.
이 내용은 Read Replica와 비교하여 자주 출제가 된다고 합니다.
Multi AZ는 동기화(Synchronous)가 진행되는 복제입니다. 따라서 1개의 DNS Name만을 가지고 있습니다. 만약 복제본이 Ready 상태가 아니라면, 원본 DB의 변경도 진행되지 않습니다.
Multi AZ와 Read Replica는 정반대의 개념은 아닙니다. Read Replica를 Recovery를 위해 여러 AZ에 걸쳐서 구축할 수도 있습니다.
Scaling(R/W)를 위한 것이 아닌, 정말로 Recovery를 위해서만 사용되는 케이스입니다.
수정
버튼만 누르면 Snapshot을 기반으로 Multi AZ 설정가능AWS에서 제공하는 SQL 기반 DB입니다. Cloud 기반 환경에 최적화된 서비스로, MySQL이나 Postgres를 RDS에 올리는 것보다 3-5배 더 빠른 성능을 보여줍니다.
RDS보단 비싸다는 단점이 있습니다.
Aurora는 기본적으로 3개의 AZ에 총 6개의 복사본을 저장합니다. 또한 데이터의 손상이 발생했을 때, 복사본과 비교하며 Self-Healing을 진행합니다.
Client는 Writer Endpoint를 통해 Write DB로 이동하게 됩니다.
이때, Write용 DB Instance가 Failure이어도, 다른 인스턴스로 리디렉션을 하는 것은 Writer Endpoint가 담당하게 됩니다.
Clinet가 Read 요청 시에 Reader Endpoint가 Load Balancing을 함으로써 하나하나 복사본에 연결하지 않아도 됩니다.
AWS KMS를 통해 master & replica 암호화를 진행(단, Launch시 설정해야함)
=> 처음에 master를 encrypt하지 않았다면 이후 Read Replica도 암호화를 진행할 수 없음.
=> 처음에 진행하지 않았다면, Snapshot으로 복사하고 Restore 시 암호화를 진행해야 함.
In flight encryption은 TLS 암호화가 이미 되어있음. TLS Root 인증서로 Client가 복호화해야함.
IAM Role이 있다면 ID/PW없이도 접근 가능
Network Access를 통한 접근 제어도 가능
SSH 접근은 불가능. 단 RDS Custom을 사용하면 가능
CloudWath Log를 통한 로그를 오랫동안 가지고 있을 수 있음
Master DB 인스턴스에 바로 접근하는 것은, DB가 Failure가 발생하면 피할 수 없습니다. 하지만 RDS 프록시를 통해 한 단계 거쳐서 이동하면 Failure를 줄일 수 있습니다.