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