주요 개념
MySQL 서비스의 주요 개념은 다음과 같습니다.
주요 개념 | 설명 |
---|---|
인스턴스 그룹 | 인스턴스와 백업 생명주기를 관리하는 객체 |
인스턴스 | 인스턴스 그룹이 관리하는 VM으로, 가용성에 따라 Primary, Standby로 역할이 결정됨 |
인스턴스 유형 | 데이터베이스에서 사용할 가상 CPU(vCPU)와 시스템 메모리를 포함한 가상화된 하드웨어 리소스 - 워크로드에 따라 최적화된 MySQL 인스턴스 유형을 선택할 수 있도록 다양한 유형을 지원 |
인스턴스 그룹/인스턴스 생명 주기 | 인스턴스 그룹/인스턴스의 다양한 생명 주기에 따라, 운영 상태와 작업 상태를 확인 및 관리 |
백업 | 데이터베이스 중단 없이 온라인으로 진행되며, 백업 생성 및 삭제 등의 관리 |
볼륨 | MySQL 서비스를 위한 Block Storage 디바이스인 볼륨을 사용하여 데이터베이스를 제공 - 사용자가 직접 Block Storage를 생성하거나 구성할 필요 없음 |
네트워크와 보안 | VPC에서 네트워크와 보안 기능을 제공하며, 필요한 네트워크 요구사항에 따라 논리적으로 분리된 서비스 환경 구축 가능 - 모든 MySQL 인스턴스는 VPC 환경을 제공함 |
IAM과 보안 | IAM을 통해 사용자의 역할에 맞는 접근 권한을 부여하고 MySQL 리소스를 안전하게 관리 |
파라미터 그룹 | MySQL에 사용되는 설정 파라미터를 버전 별, 그룹 단위로 관리 |
인스턴스 그룹
인스턴스 그룹은 인스턴스와 백업 생명주기를 관리하는 객체입니다.
MySQL 인스턴스 그룹은 운영 상태와 종료 상태를 포함하는 다양한 상태값을 가지며, 사용자는 이를 확인하여 인스턴스 그룹을 관리할 수 있습니다.
인스턴스 그룹 생명 주기 및 상태값
MySQL 인스턴스 그룹을 생성하면 Pending
상태로 시작되며, Provisioning
과 Primary Available
상태를 거쳐 Available 상태로 전환됩니다. Available
상태의 MySQL 인스턴스 그룹은 사용자가 선택한 네트워크의 엔드포인트와 포트를 통해 접근할 수 있습니다. MySQL 인스턴스 그룹의 기본 포트는 3306(Primary)
, 3307(Standby)
로 제공되며 생성 시 1024 ~ 65535 내 원하는 포트를 지정할 수 있습니다.
MySQL 인스턴스 그룹의 생명 주기
MySQL 인스턴스 그룹 생명주기
상태 | 설명 |
---|---|
Pending | MySQL 인스턴스 그룹을 구성하기 위한 준비 중 - MySQL 인스턴스 그룹을 처음 만들면 Pending 상태로 시작 |
Provisioning | MySQL 인스턴스 그룹의 인스턴스를 생성하는 중 |
Primary Available | MySQL 인스턴스 그룹의 Standby 인스턴스들이 사용할 가상의 하드웨어 리소스를 할당하고 구성하는 중으로, 사용자가 정상적으로 사용할 수 있는 상태 * 인스턴스 그룹 운영 상태(가용 상태)의 형태로 Standby 인스턴스의 가용성 상태를 함께 표기 * HA 구성 자체는 유지되고 있으며 Primary Instance는 정상적으로 사용 가능 |
Switching | Manual Failover 요청을 받아서 진행 중인 상태, Auto failover 진행 중인 상태 |
Available | MySQL 인스턴스 그룹의 모든 인스턴스가 Running 상태로, 사용자가 정상적으로 사용할 수 있는 상태 - Available 상태의 MySQL 인스턴스 그룹은 사용자가 선택한 네트워크의 Endpoint IP 포트를 통해 접근 - 1024 ~ 65535 범위 내 사용자가 포트 지정 가능, 기본 포트는 3306(Primary), 3307(Standby) |
Restrating | 재시작 중인 상태 (가용성 단일만 해당) |
Scaling-Out | MySQL 인스턴스 그룹의 Standby 인스턴스를 추가하는 중 |
Scaling-In | MySQL 인스턴스 그룹의 Standby 인스턴스를 삭제하는 중 |
Error | MySQL 인스턴스 그룹의 일부 인스턴스에 오류가 발생하여 일시적으로 사용할 수 없는 상태 |
Terminating | MySQL 인스턴스 그룹의 모든 인스턴스를 완전히 종료, 반납하고 인스턴스 그룹에서 수행된 백업이 삭제되는 중 |
Terminated | MySQL 인스턴스 그룹의 수행된 백업이 삭제되고, 모든 인스턴스가 종료되어 사용할 수 없는 상태 |
인스턴스 그룹의 가용성 상태
인스턴스 그룹이 Primary Available 상태(Standby 리소스 할당, 구성)일 때, 해당 인스턴스 그룹의 운영 상태(가용 상태)와 함께 Standby 인스턴스의 가용성 상태를 동시에 표시합니다.
인스턴스 그룹의 상태 | 가용성 상태 | 설명 |
---|---|---|
PRIMARY-AVAILABLE | READY | 모든 Standby HA 구성이 준비됨 |
PARTIAL-READY | HA를 구성 중이며 구성이 완료된 Standby가 1개 이상 | |
PARTIAL-UNAVAILABLE | 구성이 완료된 Standby가 1개 이상, 사용할 수 없는 Standby가 1개 이상 | |
Configured | 모든 Standby 구성이 준비됨 | |
STANDALONE | 구성이 완료된 Standby가 없으며, 사용할 수 없는 Standby가 1개 이상 | |
UNAVAILABLE | 모든 Standby가 사용할 수 없는 상태 | |
AVAILABLE | READY | 모든 Standby의 구성이 준비됨 |
- | Standby가 없음 |
인스턴스
인스턴스는 인스턴스 그룹이 관리하는 VM(Virtual Machine)입니다.
MySQL 인스턴스는 CPU와 메모리를 포함해 가상화한 데이터베이스로, MySQL 인스턴스 그룹에 포함되는 객체입니다. MySQL 인스턴스에는 각 상태값이 존재하며, 가용성에 따라 Primary, Standby 역할 중 결정됩니다.
인스턴스 역할
인스턴스 역할 | 설명 |
---|---|
Primary | 사용자가 일반적으로 사용하는 읽기와 쓰기가 목적인 인스턴스 - 사용자는 DNS를 통해서 MySQL 인스턴스 사용 가능 |
Standby | Primary 장애 상황을 대비한 고가용성 목적의 인스턴스 - 인스턴스 가용성을 고가용성으로 선택했을 경우에 생성하거나 인스턴스 목록에서 추가 가능 - 읽기 전용 복제본 Read Replica 역할을 함께 수행 |
인스턴스 유형
MySQL 서비스에서는 사용 목적과 예상되는 워크로드에 따라 최적화된 인스턴스 유형을 선택할 수 있도록 지원합니다.
MySQL 인스턴스 그룹의 인스턴스 유형별로 관리형 데이터베이스 사양과 설정이 결정됩니다. MySQL 인스턴스 그룹을 만들 때 인스턴스 유형을 선택할 수 있으며, 리소스를 사용한 만큼 비용이 청구됩니다. 고성능 컴퓨팅과 메모리에 특화된 MySQL 인스턴스 유형은 추가될 예정입니다.
MySQL 인스턴스 유형 | 기본 vCPU (개) | Memory (GiB) |
---|---|---|
m2a.large | 2 | 8 |
m2a.xlarge | 4 | 16 |
m2a.2xlarge | 8 | 32 |
m2a.4xlarge | 16 | 64 |
m2a.8xlarge | 32 | 128 |
m2a.12xlarge | 48 | 192 |
m2a.16xlarge | 64 | 256 |
m2a.24xlarge | 96 | 384 |
r2a.large | 2 | 16 |
r2a.xlarge | 4 | 32 |
r2a.2xlarge | 8 | 64 |
r2a.4xlarge | 16 | 128 |
r2a.8xlarge | 32 | 256 |
r2a.12xlarge | 48 | 384 |
r2a.16xlarge | 64 | 512 |
r2a.24xlarge | 96 | 768 |
인스턴스 생명 주기 및 상태값
인스턴스는 Pending
상태로 시작하며, Provisioning
과 Starting
상태를 거쳐 Running
상태로 전환됩니다.
MySQL 인스턴스 생명 주기
MySQL 인스턴스 생명주기
상태 | 설명 |
---|---|
Pending | 인스턴스를 구성하기 위한 준비 중 |
Starting | 인스턴스에 데이터베이스를 구성하고 설정을 진행하는 중 |
Running | 인스턴스가 실행 중이며 사용할 수 있는 상태 |
Volume-Extending | 인스턴스의 볼륨이 확장되고 있는 상태 |
Error | 인스턴스에 오류가 발생하여 일시적으로 사용할 수 없는 상태, DB, API 요청 실패 시 업데이트되는 상태 |
Terminating | 인스턴스를 완전히 종료하고 반납하는 중 |
Terminated | 인스턴스가 종료되어 사용할 수 없는 상태 |
인스턴스 가용성 구성 및 역할
인스턴스 가용성 구성에 따라 인스턴스 수량과 각 인스턴스의 역할이 결정됩니다.
인스턴스 가용성 구성 | 생성된 인스턴스 수량 | 설명 |
---|---|---|
단일 (Single, Primary 인스턴스) | 1개 | Primary 인스턴스 1개만 생성 |
고가용성 (HA, Primary, Standby 인스턴스) | 최대 6개 | Primary, Standby 인스턴스를 생성 - Primary 1개, Standby 1~5개 생성 |
인스턴스 가용 상태
MySQL 인스턴스 간 데이터 복제에 관한 상태를 의미합니다. 가용성을 고가용성으로 선택한 인스턴스 그룹만 해당됩니다.
MySQL 인스턴스 가용상태
가용 상태 | 설명 |
---|---|
CONFIGURED | MySQL 인스턴스의 데이터 복제가 정상적으로 수행되는 상태 |
CONFIGURING | MySQL 인스턴스의 데이터 복제 설정을 진행하는 상태 |
UNAVAILABLE | MySQL 인스턴스의 데이터 복제가 중지된 상태 |
백업
백업은 MySQL 인스턴스 그룹 단위로 관리됩니다.
백업 생명 주기 및 상태값
백업은 Pending 상태로 시작하며, Processing 상태를 거쳐 Succeeded 상태가 되면 완료됩니다. 24년 3월 19일 이전 생성된 백업과 이후 생성된 백업은 서로 다른 생명 주기(복원, 삭제 등)를 갖습니다.
백업 상태 (24년 3월 19일 이전 생성)
MySQL 백업 생명주기, 24년 3월 19일 이전 생성
상태 | 설명 |
---|---|
Pending | 백업 초기 상태 |
Processing | 현재 백업이 수행되는 중 |
In-Use-Checking | 성공한 백업을 삭제할 때 해당 백업을 이용한 복구가 진행 중인지 확인하는 상태 |
Deletion-Pending | 복구에 사용 중인 백업이 삭제 대기 중인 상태 (복구 완료 후 삭제 진행) |
Deleted | 백업이 완전히 삭제된 상태 |
Succeeded | 백업이 성공적으로 종료된 상태 |
Deleting | 백업을 삭제하는 중 |
Fatal | 내부적인 로직 실패 상태 |
Error | 백업이 비정상적으로 종료된 상태 - Backend 로직에서 DB, 외부 API 요청의 실패 시 업데이트되는 상태 |
백업 상태 (24년 3월 19일 이후 생성)
MySQL 백업 생명주기, 24년 3월 19일 이후 생성
상태 | 설명 |
---|---|
Pending | 백업 초기 상태 |
Processing | 현재 백업이 수행되는 중 - 해당 상태에서 삭제해도 백업이 다 완료(Succeeded)된 뒤 혹은 실패(Error)한 뒤 삭제 실행 |
Restoring | 복구에 사용 중, 삭제 불가 |
Deleted | 백업이 완전히 삭제된 상태 |
Succeeded | 백업이 성공적으로 종료된 상태 |
Deleting | 백업을 삭제하는 중 - 복구로 사용되는 경우, 삭제를 중단하고 Restoring 상태로 전환 |
Error | 백업 실패 - 복원 불가, 삭제 가능 |
Failover
MySQL은 고가용성(HA, High Availability) 기능을 지원합니다. 백업 인스턴스 가용성 유형을 고가용성으로 선택하면 다수의 Standby 인스턴스를 생성할 수 있으며, 장애 발생 시 서비스 중단을 최소화하기 위해 Failover를 수행할 수 있습니다. 이 과정에서 Auto-Fail Over와 수동 Failover를 모두 지원합니다.
Failover 시 순단 현상이 발생할 수 있습니다.
Failover 생명 주기
Failover에 따른 인스턴스 그룹의 상태값
상태값 | 설명 |
---|---|
SWITCHING | Failover를 진행하는 중입니다. MySQL 서비스를 사용할 수 없습니다. |
PRIMARY-AVAILABLE | Standby 인스턴스를 구성하는 상태입니다. |
볼륨
Block Storage 디바이스인 볼륨을 사용하여 데이터베이스를 제공합니다. 따라서 사용자가 직접 Block Storage를 생성 및 구성하는 등 관리할 필요가 없습니다.
네트워크와 보안
모든 MySQL 인스턴스는 VPC 환경을 제공합니다. VPC에서 네트워크와 보안 기능을 제공하며, 필요한 네트워크 요구사항에 따라 논리적으로 분리된 서비스 환경을 구축할 수 있습니다. 자세한 설명은 VPC를 참고하시기 바랍니다.
파라미터 그룹
MySQL의 파라미터 값을 그룹 단위로 생성하고 관리할 수 있습니다.
파라미터 반영 상태
파라미터 그룹 반영 상태
상태값 | 설명 |
---|---|
Pending | 파라미터 반영을 대기하는 상태입니다. |
Applying | 인스턴스 그룹에 파라미터를 반영 중인 상태입니다. |
In-Sync | 인스턴스 그룹에 파라미터가 정상 반영된 상태입니다. |
Partial-Sync | 인스턴스 그룹의 일부 인스턴스에만 파라미터가 반영된 상태입니다. 인스턴스 그룹의 Failover, Provisioning 또는 Available이 상태가 아닌 인스턴스에 파라미터 반영 실패로 인해 발생합니다. 반영이 정상적으로 완료되면 상태는 In-Sync 로 변경되며, 실패할 경우 Error-Sync 로 상태가 변경됩니다. |
Error-Sync | 클러스터에 파라미터 반영을 실패한 상태로, 파라미터 반영을 재시도 할 수 있습니다. 재시도 시 반영 상태가 Applying 으로 변경됩니다. |
Suspended | 순차 반영 시 앞 순서의 인스턴스 그룹이 파라미터 반영에 실패하여 다음 작업을 대기 중인 상태입니다. Pending 에서 Suspended 로 상태가 변경되면 파라미터 반영 재시도 를 할 수 있습니다. 재시도 시 반영 상태가 Applying 으로 변경됩니다. |