Amazon RDS에서 제공하는 MySQL 기능 지원
Amazon RDS에서 제공하는 MySQL 기능 지원
RDS for MySQL은 MySQL의 대부분의 기능과 능력을 지원하지만, 일부 기능은 제한적으로 지원되거나 권한이 제한될 수 있어요. 이 페이지에서 주요 버전별 기능 지원, 스토리지 엔진, 캐시 워밍, 그리고 지원되지 않는 기능까지 정리해 둘게요.
출처: 문서
본문
RDS for MySQL은 MySQL의 대부분의 기능과 성능을 지원합니다. 일부 기능은 제한적으로 지원되거나 제한된 권한을 가질 수 있어요.
새로운 Amazon RDS 기능은 "What's New with Database?" 페이지에서 필터링할 수 있어요. Products에서 Amazon RDS를 선택한 뒤 MySQL 2022 같은 키워드로 검색하세요.
참고: 다음 목록은 완전한 목록이 아닙니다.
RDS for MySQL 주요 버전의 MySQL 기능 지원
다음 섹션에서 Amazon RDS for MySQL 주요 버전의 MySQL 기능 지원에 대한 정보를 확인할 수 있어요.
Amazon RDS에서 MySQL 8.4 지원
Amazon RDS는 MySQL 8.4 이상을 실행하는 DB 인스턴스에 대해 다음과 같은 새 기능을 지원합니다.
- 암호화 라이브러리 – RDS for MySQL은 OpenSSL을 FIPS 140-3 인증을 받은 AWS Libcrypto(AWS-LC)로 교체했어요. 자세한 내용은 https://github.com/aws/aws-lc 의 AWS-LC GitHub 리포지토리를 참고하세요.
- TLS 변경 사항 – RDS for MySQL은 TLS 1.2와 TLS 1.3만 지원합니다. 자세한 내용은 "Amazon RDS에서 MySQL DB 인스턴스의 SSL/TLS 지원"을 참고하세요.
- memcached 지원 – memcached 인터페이스는 MySQL 8.4에서 더 이상 제공되지 않아요. 자세한 내용은 "MySQL memcached 지원"을 참고하세요.
- 기본 인증 플러그인 – 기본 인증 플러그인은
caching_sha2_password입니다. 자세한 내용은 "MySQL 기본 인증 플러그인"을 참고하세요. mysqlpump클라이언트 유틸리티 –mysqlpump클라이언트 유틸리티는 MySQL 8.4에서 더 이상 제공되지 않습니다. 자세한 내용은 "RDS for MySQL의 역할 기반 권한 모델"과 AWS Prescriptive Guidance의 "mysqldump 및 mysqlpump"를 참고하세요.- 관리형 복제 저장 프로시저 –
caching_sha2_password로 구성된 복제 사용자로 복제를 관리하는 저장 프로시저를 사용할 때는SOURCE_SSL=1을 지정해 TLS를 구성해야 해요.caching_sha2_password는 RDS for MySQL 8.4의 기본 인증 플러그인입니다. - 매개변수 동작 변경 – MySQL 8.4에서 다음 매개변수가 변경되었어요.
innodb_dedicated_server– 이 매개변수는 이제 기본적으로 활성화됩니다. 자세한 내용은 "MySQL 8.4에서 버퍼 풀 크기 및 redo 로그 용량 구성"을 참고하세요.innodb_buffer_pool– 데이터베이스 엔진이 이제 이 매개변수를 계산하지만, 이 설정을 재정의할 수 있어요. 자세한 내용은 "MySQL 8.4에서 버퍼 풀 크기 및 redo 로그 용량 구성"을 참고하세요.innodb_redo_log_capacity– 이 매개변수는 이제 redo 로그 파일의 크기를 제어합니다. 데이터베이스 엔진이 이 매개변수를 계산하지만 설정을 재정의할 수 있어요. 자세한 내용은 "MySQL 8.4에서 버퍼 풀 크기 및 redo 로그 용량 구성"을 참고하세요.
- 더 이상 사용되지 않거나 제거된 매개변수 – RDS for MySQL은 MySQL 8.4 DB 인스턴스의 매개변수 그룹에서 다음 매개변수를 제거했어요.
innodb_redo_log_capacity매개변수가 이제 redo 로그 파일의 크기를 제어합니다.innodb_log_file_sizeinnodb_log_files_in_group
- 매개변수의 새 기본값 – MySQL 8.4 DB 인스턴스에서 다음 매개변수에 새 기본값이 적용됩니다.
- 성능과 관련된 다양한 MySQL 커뮤니티 매개변수가 변경되었어요. 자세한 내용은 "MySQL 8.0 이후 MySQL 8.4의 새로운 기능"을 참고하세요. 프로덕션 인스턴스를 마이그레이션하기 전에 RDS for MySQL 8.4에서 애플리케이션 성능을 테스트해 보길 권장합니다.
innodb_purge_threads– 기본값은LEAST({DBInstanceVCPU/2},4)수식으로 설정되어 InnoDB 히스토리 목록 길이가 너무 커지는 것을 방지합니다.group_replication_exit_state_action– 기본값은OFFLINE_MODE로 MySQL 커뮤니티의 기본값과 일치해요. 자세한 내용은 "RDS for MySQL 액티브-액티브 클러스터에 대한 고려 사항 및 모범 사례"를 참고하세요.binlog_format– 기본값은ROW로 MySQL 커뮤니티의 기본값과 일치합니다. Single-AZ DB 인스턴스나 Multi-AZ DB 인스턴스에서는 매개변수를 수정할 수 있지만, Multi-AZ DB 클러스터에서는 수정할 수 없어요. Multi-AZ DB 클러스터는 준동기(semisynchronous) 복제를 사용하며,binlog_format이MIXED또는STATEMENT로 설정되면 복제가 실패합니다.
- 포용적 언어 변경 사항 – RDS for MySQL 8.4에는 포용적 언어와 관련된 키워드 및 시스템 스키마에 대한 RDS for MySQL 8.0의 변경 사항이 포함됩니다. 자세한 내용은 "RDS for MySQL 8.4의 포용적 언어 변경 사항"을 참고하세요.
MySQL 8.4의 모든 기능과 변경 사항 목록은 MySQL 문서의 "MySQL 8.0 이후 MySQL 8.4의 새로운 기능"을 참고하세요. 지원되지 않는 기능 목록은 "Amazon RDS에서 지원하지 않는 MySQL 기능"을 참고하세요.
RDS for MySQL이 지원하는 스토리지 엔진
MySQL은 다양한 성능을 가진 여러 스토리지 엔진을 지원하지만, 모두 복구와 데이터 내구성에 최적화되어 있지는 않아요. Amazon RDS는 MySQL DB 인스턴스에 InnoDB 스토리지 엔진을 완전히 지원합니다. 특정 시점 복원(Point-In-Time restore)과 스냅샷 복원 같은 Amazon RDS 기능은 복구 가능한 스토리지 엔진을 요구하며 InnoDB 스토리지 엔진에서만 지원됩니다. 자세한 내용은 "MySQL memcached 지원"을 참고하세요.
Federated 스토리지 엔진은 현재 Amazon RDS for MySQL에서 지원되지 않습니다.
사용자가 만든 스키마의 경우 MyISAM 스토리지 엔진은 안정적인 복구를 지원하지 않아서, 복구 후 MySQL을 다시 시작하면 데이터가 유실되거나 손상될 수 있고 특정 시점 복원이나 스냅샷 복원이 의도대로 동작하지 않을 수 있어요. 하지만 여전히 Amazon RDS에서 MyISAM을 사용하기로 선택한다면, 특정 조건에서 스냅샷이 도움이 될 수 있습니다.
참고:
mysql스키마의 시스템 테이블은 MyISAM 스토리지일 수 있어요.
기존 MyISAM 테이블을 InnoDB 테이블로 변환하려면 ALTER TABLE 명령을 사용할 수 있어요(예: alter table TABLE_NAME engine=innodb;). MyISAM과 InnoDB는 각각 장단점이 다르므로, 전환 전에 이 변경이 애플리케이션에 미치는 영향을 충분히 평가해 보세요.
MySQL 5.1, 5.5, 5.6은 Amazon RDS에서 더 이상 지원되지 않아요. 하지만 기존 MySQL 5.1, 5.5, 5.6 스냅샷은 복원할 수 있습니다. MySQL 5.1, 5.5, 5.6 스냅샷을 복원하면 DB 인스턴스가 자동으로 MySQL 5.7로 업그레이드됩니다.
Amazon RDS에서 MySQL과 함께 memcached 및 기타 옵션 사용하기
대부분의 Amazon RDS DB 엔진은 DB 인스턴스에 추가 기능을 선택할 수 있게 해주는 옵션 그룹을 지원합니다. RDS for MySQL DB 인스턴스는 간단한 키 기반 캐시인 memcached 옵션을 지원해요. memcached 및 기타 옵션에 대한 자세한 내용은 "MySQL DB 인스턴스의 옵션"을, 옵션 그룹 작업 방법은 "옵션 그룹 사용"을 참고하세요.
Amazon RDS에서 MySQL의 InnoDB 캐시 워밍
InnoDB 캐시 워밍은 DB 인스턴스 종료 시 버퍼 풀의 현재 상태를 저장하고, DB 인스턴스 시작 시 저장된 정보에서 버퍼 풀을 다시 로드해 MySQL DB 인스턴스의 성능을 향상시킬 수 있어요. 이렇게 하면 버퍼 풀이 일반적인 데이터베이스 사용으로 "워밍업"될 필요가 없이, 알려진 일반 쿼리의 페이지로 버퍼 풀을 미리 로드합니다. 저장된 버퍼 풀 정보를 담는 파일은 버퍼 풀에 있는 페이지 자체가 아닌 페이지의 메타데이터만 저장하므로 저장 공간을 많이 차지하지 않아요. 파일 크기는 캐시 크기의 약 0.2%입니다. 예를 들어 64GiB 캐시의 경우 캐시 워밍 파일 크기는 128MiB입니다. InnoDB 캐시 워밍에 대한 자세한 내용은 MySQL 문서의 "버퍼 풀 상태 저장 및 복원"을 참고하세요.
RDS for MySQL DB 인스턴스는 InnoDB 캐시 워밍을 지원합니다. InnoDB 캐시 워밍을 활성화하려면 DB 인스턴스의 매개변수 그룹에서 innodb_buffer_pool_dump_at_shutdown과 innodb_buffer_pool_load_at_startup 매개변수를 1로 설정하세요. 매개변수 그룹에서 이 값들을 변경하면 해당 매개변수 그룹을 사용하는 모든 MySQL DB 인스턴스에 영향을 미쳐요. 특정 MySQL DB 인스턴스에만 InnoDB 캐시 워밍을 활성화하려면 해당 인스턴스용으로 새 매개변수 그룹을 만들어야 할 수 있습니다. 매개변수 그룹에 대한 자세한 내용은 "Amazon RDS의 매개변수 그룹"을 참고하세요.
InnoDB 캐시 워밍은 주로 표준 스토리지를 사용하는 DB 인스턴스에 성능 이점을 제공해요. PIOPS 스토리지를 사용하면 큰 성능 이점을 보지 못하는 경우가 일반적입니다.
중요: MySQL DB 인스턴스가 장애 조치와 같은 상황에서 정상적으로 종료되지 않으면 버퍼 풀 상태가 디스크에 저장되지 않습니다. 이 경우 MySQL은 DB 인스턴스가 다시 시작될 때 사용 가능한 버퍼 풀 파일을 로드해요. 해가 되는 것은 아니지만, 복원된 버퍼 풀이 다시 시작하기 전의 버퍼 풀 최신 상태를 반영하지 못할 수 있어요. 시작 시 InnoDB 캐시를 워밍할 수 있는 최신 상태의 버퍼 풀을 확보하려면 버퍼 풀을 "온디맨드"로 주기적으로 덤프해 두는 것을 권장합니다.
버퍼 풀을 자동으로 정기적으로 덤프하는 이벤트를 만들 수 있어요. 예를 들어 다음 문은 매시간 버퍼 풀을 덤프하는 periodic_buffer_pool_dump라는 이벤트를 만듭니다.
CREATE EVENT periodic_buffer_pool_dump
ON SCHEDULE EVERY 1 HOUR
DO CALL mysql.rds_innodb_buffer_pool_dump_now();
MySQL 이벤트에 대한 자세한 내용은 MySQL 문서의 "이벤트 구문"을 참고하세요.
버퍼 풀 온디맨드 덤프 및 로드
InnoDB 캐시를 "온디맨드"로 저장하고 로드할 수 있어요.
- 버퍼 풀의 현재 상태를 디스크에 덤프하려면
mysql.rds_innodb_buffer_pool_dump_now저장 프로시저를 호출하세요. - 디스크에서 버퍼 풀의 저장된 상태를 로드하려면
mysql.rds_innodb_buffer_pool_load_now저장 프로시저를 호출하세요. - 진행 중인 로드 작업을 취소하려면
mysql.rds_innodb_buffer_pool_load_abort저장 프로시저를 호출하세요.
RDS for MySQL 8.4의 포용적 언어 변경 사항
RDS for MySQL 8.4에는 포용적 언어와 관련된 키워드 및 시스템 스키마에 대한 MySQL 8.4 커뮤니티 에디션의 변경 사항이 포함됩니다. 예를 들어 SHOW REPLICA STATUS 명령이 SHOW SLAVE STATUS를 대체합니다.
구성 매개변수 이름 변경
RDS for MySQL 8.4에서 다음 구성 매개변수의 이름이 변경되었어요. 호환성을 위해 mysql 클라이언트에서 두 이름 중 하나를 사용해 매개변수 이름을 확인할 수 있습니다. 커스텀 MySQL 8.4 매개변수 그룹에서 값을 수정할 때만 새 이름을 사용할 수 있어요. 자세한 내용은 "기본 및 커스텀 매개변수 그룹"을 참고하세요.
| 제거될 이름 | 새 이름 또는 권장 이름 |
|---|---|
init_slave |
init_replica |
log_slave_updates |
log_replica_updates |
log_slow_slave_statements |
log_slow_replica_statements |
rpl_stop_slave_timeout |
rpl_stop_replica_timeout |
skip_slave_start |
skip_replica_start |
slave_checkpoint_group |
replica_checkpoint_group |
slave_checkpoint_period |
replica_checkpoint_period |
slave_compressed_protocol |
replica_compressed_protocol |
slave_exec_mode |
replica_exec_mode |
slave_load_tmpdir |
replica_load_tmpdir |
slave_max_allowed_packet |
replica_max_allowed_packet |
slave_net_timeout |
replica_net_timeout |
slave_parallel_type |
replica_parallel_type |
slave_parallel_workers |
replica_parallel_workers |
slave_pending_jobs_size_max |
replica_pending_jobs_size_max |
slave_preserve_commit_order |
replica_preserve_commit_order |
slave_skip_errors |
replica_skip_errors |
slave_sql_verify_checksum |
replica_sql_verify_checksum |
slave_transaction_retries |
replica_transaction_retries |
slave_type_conversions |
replica_type_conversions |
sql_slave_skip_counter |
sql_replica_skip_counter |
참고:
replica_allow_batching매개변수는 Amazon RDS가 NDB 클러스터를 지원하지 않기 때문에 사용할 수 없어요.
저장 프로시저 이름 변경
RDS for MySQL 8.4에서 다음 저장 프로시저의 이름이 변경되었어요. 호환성을 위해 최초 RDS for MySQL 8.4 릴리스에서는 두 이름 중 하나를 사용할 수 있습니다. 이전 프로시저 이름은 향후 릴리스에서 제거될 예정이에요. 자세한 내용은 "바이너리 로그(binlog) 복제 구성, 시작 및 중지"를 참고하세요.
| 제거될 이름 | 새 이름 또는 권장 이름 |
|---|---|
mysql.rds_next_master_log |
mysql.rds_next_source_log |
mysql.rds_reset_external_master |
mysql.rds_reset_external_source |
mysql.rds_set_external_master |
mysql.rds_set_external_source |
mysql.rds_set_external_master_with_auto_position |
mysql.rds_set_external_source_with_auto_position |
mysql.rds_set_external_master_with_delay |
mysql.rds_set_external_source_with_delay |
mysql.rds_set_master_auto_position |
mysql.rds_set_source_auto_position |
Amazon RDS에서 지원하지 않는 MySQL 기능
Amazon RDS는 현재 다음 MySQL 기능을 지원하지 않습니다.
- 인증 플러그인(Authentication Plugin)
- 시스템 로그로의 오류 로깅(Error Logging to the System Log)
- InnoDB 테이블스페이스 암호화(InnoDB Tablespace Encryption)
- NDB 클러스터
- 비밀번호 강도 플러그인(Password Strength Plugin)
- 영구 시스템 변수(Persisted system variables)
- Rewriter 쿼리 재작성 플러그인(Rewriter Query Rewrite Plugin)
- 준동기 복제(Semisynchronous replication, Multi-AZ DB 클러스터 제외)
- 이식 가능한 테이블스페이스(Transportable tablespace)
- X 플러그인(X Plugin)
관리형 서비스 경험을 제공하기 위해 Amazon RDS는 DB 인스턴스에 셸 접근을 제공하지 않습니다. 또한 고급 권한이 필요한 특정 시스템 프로시저와 테이블에 대한 접근도 제한합니다. Amazon RDS는 표준 SQL 클라이언트 애플리케이션을 사용한 DB 인스턴스의 데이터베이스 접근을 지원합니다. Amazon RDS는 Telnet, Secure Shell(SSH), Windows 원격 데스크톱 연결로 DB 인스턴스에 직접 호스트 접근하는 것을 허용하지 않아요. DB 인스턴스를 만들면 해당 인스턴스의 모든 데이터베이스에 대해 db_owner로 지정되며, 백업에 사용되는 권한을 제외한 모든 데이터베이스 수준 권한을 갖게 됩니다. 백업은 Amazon RDS가 관리해 줘요.