

# Amazon RDS for MariaDB
<a name="CHAP_MariaDB"></a>

Amazon RDS는 여러 버전의 MariaDB for DB 인스턴스를 지원합니다. 지원되는 버전에 대한 전체 정보는 [Amazon RDS MariaDB 버전](MariaDB.Concepts.VersionMgmt.md) 섹션을 참조하세요.

MariaDB DB 인스턴스를 생성하려면 Amazon RDS 관리 도구 또는 인터페이스를 사용합니다. 그런 다음 Amazon RDS 도구를 사용하여 DB 인스턴스를 관리하는 작업을 수행할 수 있습니다. 이러한 작업에는 다음이 포함됩니다.
+ DB 인스턴스 재구성 또는 크기 조정
+ DB 인스턴스로의 연결 승인 
+ 백업 또는 스냅샷에서 생성 및 복원
+ 보조 다중 AZ 생성
+ 읽기 전용 복제본 생성
+ DB 인스턴스의 성능 모니터링

DB 인스턴스의 데이터를 저장하고 이에 액세스하려면 표준 MariaDB 유틸리티 및 애플리케이션을 사용하면 됩니다.

MariaDB는 모든 AWS 리전에서 이용할 수 있습니다. AWS 리전에 대한 자세한 정보는 [리전, 가용 영역 및 로컬 영역](Concepts.RegionsAndAvailabilityZones.md) 섹션을 참조하세요.

Amazon RDS for MariaDB 데이터베이스를 사용하여 HIPAA 인증 애플리케이션을 개발할 수 있습니다. 예를 들어 AWS와 체결한 비즈니스 제휴 계약(BAA)에 따라 보호 대상 건강 정보(PHI)를 비롯한 의료 관련 정보를 저장할 수 있습니다. 자세한 내용은 [HIPAA 규정 준수](https://aws.amazon.com/compliance/hipaa-compliance/)를 참조하세요. AWS 범위 내 서비스는 서드 파티 감사 기관의 철저한 평가를 거쳐 인증, 규정 준수 증명 또는 운영 권한(ATO)을 받았습니다. 자세한 내용은 [규정 준수 프로그램 제공 범위 내 AWS 서비스](https://aws.amazon.com/compliance/services-in-scope/)를 참조하세요.

DB 인스턴스를 생성하기 전에 [Amazon RDS 환경 설정](CHAP_SettingUp.md) 단계를 완료합니다. DB 인스턴스를 생성하면 RDS 마스터 사용자에 DBA 권한이 부여되나, 몇 가지 제한이 적용됩니다. 추가 데이터베이스 계정 생성과 같은 관리 작업에 이 계정을 사용합니다.

다음을 생성할 수 있습니다.
+ DB 인스턴스
+ DB 스냅샷
+ 특정 시점 복원
+ 자동 백업
+ 수동 백업

Amazon VPC를 기반으로 Virtual Private Cloud(VPC)에서 MariaDB를 실행하는 DB 인스턴스를 사용할 수 있습니다. 또한 다양한 옵션을 활성화하여 MariaDB DB 인스턴스에 기능을 추가할 수 있습니다. Amazon RDS는 고가용성 장애 조치 솔루션으로 MariaDB용 다중 AZ 배포를 지원합니다.

**중요**  
관리형 서비스 환경을 제공하기 위해 Amazon RDS는 DB 인스턴스에 대해 shell 액세스를 제공하지 않습니다. 또한 고급 권한이 필요한 특정 시스템 절차와 테이블에 대한 액세스를 제한합니다. mysql 클라이언트와 같은 표준 SQL 클라이언트를 사용하여 데이터베이스에 액세스할 수 있습니다. 그러나 Telnet 또는 SSH(Secure Shell)를 사용하여 호스트에 직접 액세스할 수는 없습니다.

**Topics**
+ [Amazon RDS에서의 MariaDB 기능 지원](MariaDB.Concepts.FeatureSupport.md)
+ [Amazon RDS MariaDB 버전](MariaDB.Concepts.VersionMgmt.md)
+ [MariaDB DB 인스턴스에 연결](USER_ConnectToMariaDBInstance.md)
+ [MariaDB DB 인스턴스 연결 보안](securing-mariadb-connections.md)
+ [Amazon RDS Optimized Reads로 RDS for MariaDB 쿼리 성능 개선](rds-optimized-reads-mariadb.md)
+ [Amazon RDS Optimized Writes for MariaDB를 통한 쓰기 성능 개선](rds-optimized-writes-mariadb.md)
+ [MariaDB DB 엔진 업그레이드](USER_UpgradeDBInstance.MariaDB.md)
+ [MariaDB DB 스냅샷 엔진 버전 업그레이드](mariadb-upgrade-snapshot.md)
+ [Amazon RDS for MariaDB DB 인스턴스로 데이터 가져오기](MariaDB.Procedural.Importing.md)
+ [Amazon RDS에서 MariaDB 복제 작업](USER_MariaDB.Replication.md)
+ [MariaDB 데이터베이스 엔진을 위한 옵션](Appendix.MariaDB.Options.md)
+ [MariaDB에 대한 파라미터](Appendix.MariaDB.Parameters.md)
+ [MySQL DB 스냅샷에서 MariaDB DB 인스턴스로 데이터 마이그레이션](USER_Migrate_MariaDB.md)
+ [Amazon RDS SQL의 MariaDB 참조](Appendix.MariaDB.SQLRef.md)
+ [MariaDB DB 인스턴스의 현지 시간대](MariaDB.Concepts.LocalTimeZone.md)
+ [RDS for MariaDB에 대해 알려진 문제 및 제한 사항](CHAP_MariaDB.Limitations.md)

# Amazon RDS에서의 MariaDB 기능 지원
<a name="MariaDB.Concepts.FeatureSupport"></a>

RDS for MariaDB는 MariaDB의 특징과 기능을 대부분 지원합니다. 일부 기능에는 제한된 지원 또는 제한된 권한이 있을 수 있습니다.

[데이터베이스 관련 새로운 소식](https://aws.amazon.com/about-aws/whats-new/database/) 페이지에서 새로운 Amazon RDS 기능을 필터링할 수 있습니다. [**제품(Products)**]에서 [**Amazon RDS**]를 선택합니다. 그런 다음 **MariaDB 2023**과 같은 키워드를 사용하여 검색합니다.

**참고**  
다음 목록이 전부는 아닙니다.

Amazon RDS의 MariaDB 기능 지원에 대한 자세한 내용은 다음 주제를 참조하세요.

**주제**
+ [Amazon RDS MariaDB에 대해 지원되는 스토리지 엔진](MariaDB.Concepts.Storage.md)
+ [Amazon RDS의 MariaDB를 위한 캐시 워밍](MariaDB.Concepts.XtraDBCacheWarming.md)
+ [Amazon RDS에서 지원하지 않는 MariaDB 기능](MariaDB.Concepts.FeatureNonSupport.md)

## Amazon RDS for MariaDB 메이저 버전의 MariaDB 기능 지원
<a name="MariaDB.Concepts.FeatureSupport.MajorVersions"></a>

아래 섹션에서 다음 Amazon RDS for MariaDB 메이저 버전의 MariaDB 기능 지원에 대해 알아볼 수 있습니다.

**Topics**
+ [Amazon RDS에서의 MariaDB 11.8 지원](#MariaDB.Concepts.FeatureSupport.11-8)
+ [Amazon RDS에서의 MariaDB 11.4 지원](#MariaDB.Concepts.FeatureSupport.11-4)
+ [Amazon RDS에서의 MariaDB 10.11 지원](#MariaDB.Concepts.FeatureSupport.10-11)
+ [Amazon RDS에서의 MariaDB 10.6 지원](#MariaDB.Concepts.FeatureSupport.10-6)
+ [Amazon RDS에서의 MariaDB 10.5 지원](#MariaDB.Concepts.FeatureSupport.10-5)
+ [Amazon RDS에서의 MariaDB 10.4 지원](#MariaDB.Concepts.FeatureSupport.10-4)

지원되는 Amazon RDS for MariaDB 마이너 버전에 대한 자세한 내용은 [Amazon RDS MariaDB 버전](MariaDB.Concepts.VersionMgmt.md) 섹션을 참조하세요.

### Amazon RDS에서의 MariaDB 11.8 지원
<a name="MariaDB.Concepts.FeatureSupport.11-8"></a>

Amazon RDS는 MariaDB 버전 11.8 이상을 실행하는 DB 인스턴스에서 다음과 같은 새로운 기능을 지원합니다.

**참고**  
MariaDB 11.8에서 `require_secure_transport`의 기본값은 이제 `1`이며 보안 SSL/TLS 연결이 필요합니다. 비보안 연결이 필요한 경우 `0`으로 설정합니다.
+ **파라미터의 새 기본값** - `require_secure_transport` 파라미터의 기본값이 `0`에서 `1`로 변경되어 기본적으로 보안 전송 연결이 적용됩니다. 자세한 내용은 [Amazon RDS의 MariaDB DB 인스턴스에 대한 모든 연결에 SSL/TLS 요구](mariadb-ssl-connections.require-ssl.md) 섹션을 참조하세요.
+ **벡터 지원** - MariaDB 벡터를 사용하여 AI 생성 벡터를 MariaDB에 직접 저장하고 검색할 수 있습니다. 이 기능은 다음과 같은 시스템 변수를 소개합니다.
  + [https://mariadb.com/docs/server/reference/sql-structure/vectors/vector-system-variables#mhnsw_default_distance](https://mariadb.com/docs/server/reference/sql-structure/vectors/vector-system-variables#mhnsw_default_distance) 변수는 MHNSW 벡터 인덱싱에 대한 기본 거리 지표를 지정합니다.
  + [https://mariadb.com/docs/server/reference/sql-structure/vectors/vector-system-variables#mhnsw_default_m](https://mariadb.com/docs/server/reference/sql-structure/vectors/vector-system-variables#mhnsw_default_m) 변수는 MHNSW 벡터 인덱싱에서 `M` 파라미터의 기본값을 정의합니다.
  + [https://mariadb.com/docs/server/reference/sql-structure/vectors/vector-system-variables#mhnsw_ef_search](https://mariadb.com/docs/server/reference/sql-structure/vectors/vector-system-variables#mhnsw_ef_search) 변수는 벡터 인덱스 검색을 위한 최소 결과 후보 수를 정의합니다.
  + [https://mariadb.com/docs/server/reference/sql-structure/vectors/vector-system-variables#mhnsw_max_cache_size](https://mariadb.com/docs/server/reference/sql-structure/vectors/vector-system-variables#mhnsw_max_cache_size) 변수는 하나의 MHNSW 벡터 인덱스 캐시에 대한 상한을 설정합니다.
+ **임시 파일 크기 제한** - 이제 RDS Maria DB 11.8 파라미터 그룹에서 사용할 수 있는 두 가지 시스템 변수를 사용하여 생성된 디스크 임시 파일 및 테이블의 크기를 제한할 수 있습니다.
  + [https://mariadb.com/docs/server/security/limiting-size-of-created-disk-temporary-files-and-tables/max_tmp_session_space_usage-system-variable](https://mariadb.com/docs/server/security/limiting-size-of-created-disk-temporary-files-and-tables/max_tmp_session_space_usage-system-variable) 변수는 사용자당 임시 공간 허용량을 제한합니다.
  + [https://mariadb.com/docs/server/security/limiting-size-of-created-disk-temporary-files-and-tables/max_tmp_total_space_usage-system-variable](https://mariadb.com/docs/server/security/limiting-size-of-created-disk-temporary-files-and-tables/max_tmp_total_space_usage-system-variable) 변수는 모든 사용자의 임시 공간 허용량을 제한합니다.
+ **임시 테이블스페이스 관리** - 임시 테이블스페이스는 임시 테이블을 저장하고 데이터가 추가되면 증가합니다. 임시 테이블을 삭제해도 스페이스는 자동으로 회수되지 않습니다. [mysql.rds\$1execute\$1operation](mysql_rds_execute_operation.md) 프로시저를 사용하여 임시 테이블스페이스를 축소하고 디스크 공간을 회수할 수 있습니다.

MariaDB 11.8 전체 기능 목록과 설명서는 MariaDB 웹 사이트에서 [MariaDB 11.8의 변경 사항 및 개선 사항](https://mariadb.com/kb/en/changes-improvements-in-mariadb-11-8/)과 [릴리스 정보 - MariaDB 11.8 시리즈](https://mariadb.com/kb/en/release-notes-mariadb-11-8-series/)를 참조하세요.

지원되지 않는 기능 목록은 [Amazon RDS에서 지원하지 않는 MariaDB 기능](MariaDB.Concepts.FeatureNonSupport.md) 섹션을 참조하세요.

### Amazon RDS에서의 MariaDB 11.4 지원
<a name="MariaDB.Concepts.FeatureSupport.11-4"></a>

Amazon RDS는 MariaDB 버전 11.4 이상을 실행하는 DB 인스턴스에서 다음과 같은 새로운 기능을 지원합니다.
+ **암호화 라이브러리** - RDS for MariaDB는 OpenSSL을 FIPS 140-3 인증을 받은 AWS Libcrypto(AWS-LC)로 대체했습니다.
+ **Simple Password Check 플러그인** - MariaDB [Simple Password Check 플러그인](https://mariadb.com/kb/en/simple-password-check-plugin/)을 사용하여 암호에 특정 유형의 특정 문자 수가 포함되어 있는지 확인할 수 있습니다. 자세한 내용은 [RDS for MariaDB용 암호 확인 플러그인 사용](MariaDB.Concepts.PasswordValidationPlugins.md) 섹션을 참조하세요.
+ **Cracklib Password Check 플러그인** - MariaDB [Cracklib Password Check 플러그인](https://mariadb.com/kb/en/cracklib-password-check-plugin/)을 사용하여 새 암호의 강도를 확인할 수 있습니다. 자세한 내용은 [RDS for MariaDB용 암호 확인 플러그인 사용](MariaDB.Concepts.PasswordValidationPlugins.md) 섹션을 참조하세요.
+ **InnoDB 개선 사항** – 이러한 개선 사항에는 다음과 같은 항목이 포함됩니다.
  + 변경 버퍼가 제거되었습니다. 자세한 내용은 [InnoDB 변경 버퍼링](https://mariadb.com/kb/en/innodb-change-buffering/)을 참조하세요.
  + InnoDB 조각 모음이 제거되었습니다. 자세한 내용은 [InnoDB 조각 모음](https://mariadb.com/kb/en/defragmenting-innodb-tablespaces/#innodb-defragmentation)을 참조하세요.
+ **새 권한** - 이제 관리 사용자에게도 `SHOW CREATE ROUTINE` 권한이 부여됩니다. 이 권한을 통해 피부여자는 다른 사용자가 소유한 루틴의 `SHOW CREATE` 정의 문을 볼 수 있습니다. 자세한 내용은 [데이터베이스 권한](https://mariadb.com/kb/en/grant/#database-privileges)을 참조하세요.
+ **복제 개선** - MariaDB 버전 11.4 DB 인스턴스는 binlog 인덱싱을 지원합니다. 각 binlog 파일에 대해 GTID 인덱스를 생성할 수 있습니다. 이러한 인덱스는 GTID를 찾는 데 걸리는 시간을 줄여 복제 성능을 개선합니다. 자세한 내용은 [Binlog 인덱싱](https://mariadb.com/kb/en/gtid/#binlog-indexing)을 참조하세요.
+ **지원 종료 또는 삭제된 파라미터** – 다음 파라미터는 MariaDB 버전 11.4 DB 인스턴스의 지원을 종료하거나 삭제했습니다.
  + `engine_condition_pushdown`이 [optimizer\$1switch](https://mariadb.com/kb/en/optimizer-switch/)에서 제거됨
  + [innodb\$1change\$1buffer\$1max\$1size](https://mariadb.com/kb/en/innodb-system-variables/#innodb_change_buffer_max_size)
  + [innodb\$1defragment](https://mariadb.com/kb/en/innodb-system-variables/#innodb_defragment)
  + `TLSv1.0` 및 `TLSv1.1`이 [tls\$1version](https://mariadb.com/kb/en/ssltls-system-variables/#tls_version)에서 제거됨
+ **파라미터의 새 기본값** - [innodb\$1undo\$1tablespaces](https://mariadb.com/kb/en/innodb-system-variables/#innodb_undo_tablespaces) 파라미터의 기본값이 `0`에서 `3`으로 변경되었습니다.
+ **파라미터의 새로운 유횻값** – 다음 파라미터에는 MariaDB 버전 11.4 DB 인스턴스에 대한 새 유효한 값이 포함됩니다.
  + 이제 [binlog\$1row\$1image](https://mariadb.com/kb/en/replication-and-binary-log-system-variables/#binlog_row_image) 파라미터의 유효한 값에 `FULL_NODUP`가 포함됩니다.
  + 이제 [OLD\$1MODE](https://mariadb.com/kb/en/old-mode/) 파라미터의 유효한 값에 `NO_NULL_COLLATION_IDS`가 포함됩니다.
+ **새 파라미터** – 다음 파라미터는 MariaDB 버전 11.4 DB 인스턴스에 새롭게 추가되었습니다.
  + [transaction\$1isolation](https://mariadb.com/kb/en/server-system-variables/#transaction_isolation) 파라미터는 [tx\$1isolation](https://mariadb.com/kb/en/server-system-variables/#tx_isolation) 파라미터를 대체합니다.
  + [transaction\$1read\$1only](https://mariadb.com/kb/en/server-system-variables/#transaction_read_only) 파라미터는 [tx\$1read\$1only](https://mariadb.com/kb/en/server-system-variables/#tx_read_only) 파라미터를 대체합니다.
  + [block\$1encryption\$1mode](https://mariadb.com/kb/en/server-system-variables/#block_encryption_mode) 파라미터는 [AES\$1ENCRYPT()](https://mariadb.com/kb/en/aes_encrypt/) 및 [AES\$1DECRYPT()](https://mariadb.com/kb/en/aes_decrypt/) 함수의 기본 블록 암호화 모드를 정의합니다.
  + [character\$1set\$1collations](https://mariadb.com/kb/en/server-system-variables/#character_set_collations)는 문자 세트 기본 데이터 정렬에 대한 재정의를 정의합니다.
  + [binlog\$1gtid\$1index](https://mariadb.com/kb/en/system-versioned-tables/#binlog_gtid_index), [binlog\$1gtid\$1index\$1page\$1size](https://mariadb.com/kb/en/system-versioned-tables/#binlog_gtid_index_page_size),[binlog\$1gtid\$1index\$1span\$1min](https://mariadb.com/kb/en/system-versioned-tables/#binlog_gtid_index_span_min)은 binlog GTID 인덱스의 속성을 정의합니다. 자세한 내용은 [Binlog 인덱싱](https://mariadb.com/kb/en/gtid/#binlog-indexing)을 참조하세요.

MariaDB 11.4 전체 기능 목록과 설명서는 MariaDB 웹 사이트에서 [MariaDB 11.4의 변경 사항 및 개선 사항](https://mariadb.com/kb/en/changes-improvements-in-mariadb-11-4/)과 [릴리스 정보 - MariaDB 11.4 시리즈](https://mariadb.com/kb/en/release-notes-mariadb-11-4-series/)를 참조하세요.

지원되지 않는 기능 목록은 [Amazon RDS에서 지원하지 않는 MariaDB 기능](MariaDB.Concepts.FeatureNonSupport.md) 섹션을 참조하세요.

### Amazon RDS에서의 MariaDB 10.11 지원
<a name="MariaDB.Concepts.FeatureSupport.10-11"></a>

Amazon RDS는 MariaDB 버전 10.11 이상을 실행하는 DB 인스턴스에서 다음과 같은 새로운 기능을 지원합니다.
+ **암호 재사용 확인 플러그인** – MariaDB 암호 재사용 확인 플러그인을 사용하여 사용자가 암호를 재사용하는 것을 방지하고 암호 보존 기간을 설정할 수 있습니다. 자세한 내용을 알아보려면 [Password Reuse Check Plugin](https://mariadb.com/kb/en/password-reuse-check-plugin/)을 참조하세요.
+ **퍼블릭에 권한 부여 인증** – 서버에 대한 액세스 권한이 있는 모든 사용자에게 권한을 부여할 수 있습니다. 자세한 내용은 [GRANT TO PUBLIC](https://mariadb.com/kb/en/grant/#to-public)을 참조하세요.
+ **슈퍼 및 읽기 전용 관리자 권한 분리** – 이전에 슈퍼 권한을 가졌던 사용자를 비롯해 모든 사용자에게 부여된 읽기 전용 관리자 권한을 제거할 수 있습니다.
+ **보안** – 이제 MariaDB 클라이언트의 기본값으로 `--ssl` 옵션을 설정할 수 있습니다. 구성이 잘못된 경우 MariaDB는 더 이상 SSL을 자동으로 비활성화하지 않습니다.
+ **SQL 명령 및 함수** – 이제 `SHOW ANALYZE FORMAT=JSON` 명령 및 함수 `ROW_NUMBER`, `SFORMAT`, `RANDOM_BYTES`를 사용할 수 있습니다. `SFORMAT`를 사용하면 문자열 형식을 지정할 수 있고, 이는 기본적으로 활성화되어 있습니다. 단일 명령으로 파티션을 테이블로, 테이블을 파티션으로 변환할 수 있습니다. `JSON_*()` 함수 관련 몇 가지 개선 사항도 있습니다. `DES_ENCRYPT` 및 `DES_DECRYPT` 함수는 버전 10.10 이상에서 더 이상 사용할 수 없습니다. 자세한 내용은 [SFORMAT](https://mariadb.com/kb/en/sformat/)를 참조하세요.
+ **InnoDB 개선 사항** – 이러한 개선 사항에는 다음과 같은 항목이 포함됩니다.
  + 쓰기 증폭을 줄이고 동시성을 개선하기 위해 다시 실행 로그의 성능을 개선했습니다.
  + 데이터 디렉터리를 다시 초기화하지 않고도 다시 실행 테이블스페이스를 변경할 수 있습니다. 이 개선 사항을 통해 컨트롤 플레인 오버헤드를 줄여줍니다. 다시 시작해야 하지만 다시 실행 테이블스페이스를 변경한 후 다시 초기화할 필요는 없습니다.
  + `CHECK TABLE … EXTENDED` 및 내부적으로 내림차순 인덱스를 지원합니다.
  + 벌크 인서트가 개선되었습니다.
+ **Binlog 변경** – 이러한 변경 사항에는 다음 항목이 포함됩니다.
  + 두 단계를 거쳐 `ALTER`를 로깅하여 복제 지연 시간을 줄입니다. `binlog_alter_two_phase` 파라미터는 기본적으로 비활성화되어 있지만 파라미터 그룹을 통해 활성화할 수 있습니다.
  + `explicit_defaults_for_timestamp`를 로깅합니다.
  + 트랜잭션을 안전하게 롤백할 수 있으면 더 이상 `INCIDENT_EVENT`를 로깅하지 않습니다.
+ **복제** **개선 사항** – MariaDB 버전 10.11 DB 인스턴스는 마스터가 지원하는 경우 GTID 복제본을 기본적으로 사용합니다. 또한 `Seconds_Behind_Master`가 더 정확해졌습니다.
+ **클라이언트** – `mysqlbinglog` 및 `mariadb-dump`에 새 명령줄 옵션을 사용할 수 있습니다. `mariadb-dump`를 사용해 과거 데이터를 덤프 및 복원할 수 있습니다.
+ **시스템 버전 관리** – 기록을 수정할 수 있습니다. MariaDB는 새 파티션을 자동으로 생성합니다.
+ **원자성 DDL** – 이제 `CREATE OR REPLACE`는 원자적입니다. 문이 성공하거나 아니면 완전히 실패합니다.
+ **다시 실행 로그 쓰기** – 다시 실행 로그는 비동기식으로 작성됩니다.
+ **저장된 함수** – 이제 저장된 함수에서는 저장된 프로시저와 마찬가지로 `IN`, `OUT`, `INOUT` 파라미터를 지원합니다.
+ **지원 종료 또는 삭제된 파라미터** – 다음 파라미터는 MariaDB 버전 10.11 DB 인스턴스의 지원을 종료하거나 삭제했습니다.
  + [innodb\$1change\$1buffering](https://mariadb.com/kb/en/innodb-system-variables/#innodb_change_buffering)
  + [innodb\$1disallow\$1writes](https://mariadb.com/kb/en/innodb-system-variables/#innodb_disallow_writes)
  + [innodb\$1log\$1write\$1ahead\$1size](https://mariadb.com/kb/en/innodb-system-variables/#innodb_log_write_ahead_size) 
  + [ innodb\$1prefix\$1index\$1cluster\$1optimization](https://mariadb.com/kb/en/innodb-system-variables/#innodb_prefix_index_cluster_optimization)
  + [ keep\$1files\$1on\$1create](https://mariadb.com/kb/en/server-system-variables/#keep_files_on_create)
  + [old](https://mariadb.com/kb/en/server-system-variables/#old)
+ **동적 파라미터** – 이제 다음 파라미터는 MariaDB 버전 10.11 DB 인스턴스에 대한 동적 파라미터입니다.
  + [innodb\$1log\$1file\$1size](https://mariadb.com/kb/en/innodb-system-variables/#innodb_log_file_size)
  + [innodb\$1write\$1io\$1threads](https://mariadb.com/kb/en/innodb-system-variables/#innodb_write_io_threads)
  + [innodb\$1read\$1io\$1threads](https://mariadb.com/kb/en/innodb-system-variables/#innodb_read_io_threads)
+ **파라미터의 새로운 기본값** – 다음 파라미터에는 MariaDB 버전 10.11 DB 인스턴스에 대한 새로운 기본값이 포함됩니다.
  + [explicit\$1defaults\$1for\$1timestamp](https://mariadb.com/kb/en/server-system-variables/#explicit_defaults_for_timestamp) 파라미터의 기본값은 `OFF`에서 `ON`으로 변경되었습니다.
  + [optimizer\$1prune\$1level](https://mariadb.com/kb/en/server-system-variables/#optimizer_prune_level) 파라미터의 기본값은 `1`에서 `2`로 변경되었습니다.
+ **파라미터의 새로운 유횻값** – 다음 파라미터에는 MariaDB 버전 10.11 DB 인스턴스에 대한 새로운 유횻값이 포함됩니다.
  + [old](https://mariadb.com/kb/en/server-system-variables/#old) 파라미터의 유횻값은 [old\$1mode](https://mariadb.com/kb/en/server-system-variables/#old_mode) 파라미터의 값에 통합되었습니다.
  + 이제 [histogram\$1type](https://mariadb.com/kb/en/server-system-variables/#histogram_type) 파라미터의 유횻값은 `JSON_HB`에 포함됩니다.
  + 이제 [innodb\$1log\$1buffer\$1size](https://mariadb.com/kb/en/innodb-system-variables/#innodb_log_buffer_size) 파라미터의 유횻값 범위는`262144`\$1`4294967295`입니다(256KB\$14096MB).
  + 이제 [innodb\$1log\$1file\$1size](https://mariadb.com/kb/en/innodb-system-variables/#innodb_log_file_size) 파라미터의 유횻값 범위는 `4194304`\$1`512GB`입니다(4MB\$1512GB).
  + 이제 [optimizer\$1prune\$1level](https://mariadb.com/kb/en/server-system-variables/#optimizer_prune_level) 파라미터의 유횻값은 `2`에 포함됩니다.
+ **새 파라미터** – 다음 파라미터는 MariaDB 버전 10.11 DB 인스턴스에 새롭게 추가되었습니다.
  + [binlog\$1alter\$1two\$1phase](https://mariadb.com/kb/en/replication-and-binary-log-system-variables//#binlog_alter_two_phase) 파라미터는 복제본 성능을 개선할 수 있습니다.
  + [log\$1slow\$1min\$1examined\$1row\$1limit](https://mariadb.com/kb/en/server-system-variables/#log_slow_min_examined_row_limit) 파라미터는 성능을 개선할 수 있습니다.
  + [log\$1slow\$1query](https://mariadb.com/kb/en/server-system-variables/#log_slow_query) 파라미터와 [log\$1slow\$1query\$1file](https://mariadb.com/kb/en/server-system-variables/#log_slow_query_file) 파라미터는 각각 `slow_query_log` 및 `slow_query_log_file`의 별칭입니다.
  +  [ optimizer\$1extra\$1pruning\$1depth](https://mariadb.com/kb/en/server-system-variables/#optimizer_extra_pruning_depth)
  + [system\$1versioning\$1insert\$1history](https://mariadb.com/kb/en/system-versioned-tables/#system_versioning_insert_history)

MariaDB 10.11 전체 기능 목록과 설명서는 MariaDB 웹 사이트에서 [MariaDB 10.11의 변경 사항 및 개선 사항](https://mariadb.com/kb/en/changes-improvements-in-mariadb-1011/)과 [릴리스 정보 - MariaDB 10.11 시리즈](https://mariadb.com/kb/en/release-notes-mariadb-1011-series/)를 참조하세요.

지원되지 않는 기능 목록은 [Amazon RDS에서 지원하지 않는 MariaDB 기능](MariaDB.Concepts.FeatureNonSupport.md) 섹션을 참조하세요.

### Amazon RDS에서의 MariaDB 10.6 지원
<a name="MariaDB.Concepts.FeatureSupport.10-6"></a>

Amazon RDS는 MariaDB 버전 10.6 이상을 실행하는 DB 인스턴스에서 다음과 같은 새로운 기능을 지원합니다.
+ **MyRocks 스토리지 엔진** - RDS for MariaDB와 함께 MyRocks 스토리지 엔진을 사용하여 쓰기 집약적인 고성능 웹 애플리케이션의 스토리지 소비를 최적화할 수 있습니다. 자세한 내용은 [Amazon RDS MariaDB에 대해 지원되는 스토리지 엔진](MariaDB.Concepts.Storage.md) 및 [MyRocks](https://mariadb.com/kb/en/myrocks/).를 참조하세요.
+ **AWS Identity and Access Management(IAM) DB 인증** - IAM DB 인증을 사용하여 MariaDB DB 인스턴스에 대한 연결을 중앙 집중식으로 관리하고 보안을 강화할 수 있습니다. 자세한 내용은 [MariaDB, MySQL 및 PostgreSQL IAM 데이터베이스 인증](UsingWithRDS.IAMDBAuth.md) 섹션을 참조하세요.
+ **업그레이드 옵션** - 이제 이전의 주요 릴리스(10.3, 10.4, 10.5)에서 RDS for MariaDB 버전 10.6으로 업그레이드할 수 있습니다. 또한 기존 MySQL 5.6 또는 5.7 DB 인스턴스의 스냅샷을 MariaDB 10.6 인스턴스로 복원할 수 있습니다. 자세한 내용은 [MariaDB DB 엔진 업그레이드](USER_UpgradeDBInstance.MariaDB.md)을 참조하세요.
+ **지연 복제** - 이제 읽기 전용 복제본이 소스 데이터베이스보다 지연되는 구성 가능한 기간을 설정할 수 있습니다. 표준 MariaDB 복제 구성에서는 소스와 복제본 간의 복제 지연이 최소화됩니다. 지연 복제를 재해 복구를 위한 전략으로 사용할 수 있습니다. 자세한 정보는 [MariaDB를 사용한 지연 복제 구성](USER_MariaDB.Replication.ReadReplicas.DelayReplication.md) 섹션을 참조하세요.
+ **Oracle PL/SQL 호환성** - RDS for MariaDB 버전 10.6을 사용하면 레거시 Oracle 애플리케이션을 Amazon RDS로 보다 쉽게 마이그레이션할 수 있습니다. 자세한 내용은 [SQL\$1MODE=ORACLE](https://mariadb.com/kb/en/sql_modeoracle/) 섹션을 참조하세요.
+ **원자성 DDL** - 동적 데이터 언어(DDL) 문은 RDS for MariaDB 버전 10.6을 사용하면 상대적으로 충돌 안정성을 개선할 수 있습니다. `CREATE TABLE`, `ALTER TABLE`, `RENAME TABLE`, `DROP TABLE`, `DROP DATABASE` 및 관련 DDL 문은 이제 원자성입니다. 명령이 성공하거나 완전히 반전됩니다. 자세한 내용은 [원자성 DDL](https://mariadb.com/kb/en/atomic-ddl/)을 참조하세요.
+ **기타 기능 향상** - 이러한 기능 향상에는 SQL 내에서 JSON 데이터를 관계형 형식으로 변환하고, Innodb를 사용하여 빈 테이블 데이터를 더 빠르게 로드하는 `JSON_TABLE` 함수를 제공합니다. 여기에는 분석 및 문제 해결, 사용되지 않는 인덱스를 무시하기 위한 최적화 도구 개선 및 성능 개선을 위한 새로운 `sys_schema`도 포함됩니다. 자세한 내용은 [JSON\$1TABLE](https://mariadb.com/kb/en/json_table/)을 참조하세요.
+ **파라미터의 새로운 기본값** – 다음 파라미터에는 MariaDB 버전 10.6 DB 인스턴스에 대한 새로운 기본값이 있습니다.
  + 다음 파라미터의 기본값은 `utf8`에서 `utf8mb3`으로 변경되었습니다.
    + [character\$1set\$1client](https://mariadb.com/kb/en/server-system-variables/#character_set_client)
    + [character\$1set\$1connection](https://mariadb.com/kb/en/server-system-variables/#character_set_connection)
    + [character\$1set\$1results](https://mariadb.com/kb/en/server-system-variables/#character_set_results)
    + [character\$1set\$1system](https://mariadb.com/kb/en/server-system-variables/#character_set_system)

    이러한 파라미터에 대한 기본값이 변경되었지만 기능적 변경은 없습니다. 자세한 내용은 MariaDB 설명서의 [지원되는 문자 집합 및 데이터 정렬](https://mariadb.com/kb/en/supported-character-sets-and-collations/)을 참조하세요.
  + [collation\$1connection](https://mariadb.com/kb/en/server-system-variables/#collation_connection) 파라미터의 기본값이 `utf8_general_ci`에서 `utf8mb3_general_ci`로 변경되었습니다. 이러한 파라미터에 대한 기본값이 변경되었지만 기능적 변경은 없습니다.
  + [old\$1mode](https://mariadb.com/kb/en/server-system-variables/#old_mode) 파라미터의 기본값이 설정 해제에서 `UTF8_IS_UTF8MB3`으로 변경되었습니다. 이러한 파라미터에 대한 기본값이 변경되었지만 기능적 변경은 없습니다.

MariaDB 10.6 전체 기능 목록과 설명서는 MariaDB 웹 사이트에서 [MariaDB 10.6의 변경 사항 및 개선 사항](https://mariadb.com/kb/en/changes-improvements-in-mariadb-106/)과 [릴리스 정보 - MariaDB 10.6시리즈](https://mariadb.com/kb/en/release-notes-mariadb-106-series/)를 참조하세요.

지원되지 않는 기능 목록은 [Amazon RDS에서 지원하지 않는 MariaDB 기능](MariaDB.Concepts.FeatureNonSupport.md) 섹션을 참조하세요.

### Amazon RDS에서의 MariaDB 10.5 지원
<a name="MariaDB.Concepts.FeatureSupport.10-5"></a>

Amazon RDS는 MariaDB 버전 10.5 이상을 실행하는 DB 인스턴스에서 다음과 같은 새로운 기능을 지원합니다.
+ **InnoDB 기능 향상** – MariaDB 버전 10.5에는 향상된 InnoDB 기능이 포함되어 있습니다. 자세한 내용은 MariaDB 설명서의 [InnoDB: 성능 향상 등](https://mariadb.com/kb/en/changes-improvements-in-mariadb-105/#innodb-performance-improvements-etc)을 참조하세요.
+ **성능 스키마 업데이트** – MariaDB 버전 10.5에는 성능 스키마 업데이트가 포함되어 있습니다. 자세한 내용은 MariaDB 설명서의 [MySQL 5.7 계측 및 테이블과 일치하도록 성능 스키마 업데이트](https://mariadb.com/kb/en/changes-improvements-in-mariadb-105/#performance-schema-updates-to-match-mysql-57-instrumentation-and-tables)를 참조하세요.
+ **InnoDB Redo 로그의 1개 파일** – MariaDB 버전 10.5 이전 버전에서는 `innodb_log_files_in_group` 파라미터 값이 `2`로 설정되었습니다. MariaDB 버전 10.5에서 이 파라미터의 값은 `1`로 설정됩니다.

  이전 버전에서 MariaDB 버전 10.5로 업그레이드하고 이 파라미터를 수정하지 않으면 `innodb_log_file_size` 파라미터 값이 변경되지 않습니다. 하지만 2개가 아닌 1개의 로그 파일에 적용됩니다. 그 결과 업그레이드된 MariaDB 버전 10.5 DB 인스턴스가 업그레이드 전에 사용했던 Redo 로그 크기의 절반을 사용합니다. 이 변경 사항은 성능에 눈에 띄는 영향을 미칠 수 있습니다. 이 문제를 해결하기 위해 `innodb_log_file_size` 파라미터 값을 두 배로 늘릴 수 있습니다. 파라미터 수정에 대한 자세한 정보는 [Amazon RDS에서 DB 파라미터 그룹의 파라미터 수정](USER_WorkingWithParamGroups.Modifying.md) 섹션을 참조하세요.
+ **SHOW SLAVE STATUS 명령이 지원되지 않음** – MariaDB 버전 10.5 이전 버전에서는 `SHOW SLAVE STATUS` 명령에 `REPLICATION SLAVE` 권한이 필요했습니다. MariaDB 버전 10.5에서는 이에 상응하는 `SHOW REPLICA STATUS` 명령에 `REPLICATION REPLICA ADMIN` 권한이 필요합니다. 이 새 권한은 RDS 마스터 사용자에게 부여되지 않습니다.

  `SHOW REPLICA STATUS` 명령을 사용하는 대신 새 `mysql.rds_replica_status` 저장 프로시저를 실행하여 유사한 정보를 반환합니다. 자세한 내용은 [mysql.rds\$1replica\$1status](mysql_rds_replica_status.md) 섹션을 참조하세요.
+ **SHOW RELAYLOG EVENTS 명령이 지원되지 않음** – MariaDB 버전 10.5 이전 버전에서는 `SHOW RELAYLOG EVENTS` 명령에 `REPLICATION SLAVE` 권한이 필요했습니다. MariaDB 버전 10.5에서 이 명령에는 `REPLICATION REPLICA ADMIN` 권한이 필요합니다. 이 새 권한은 RDS 마스터 사용자에게 부여되지 않습니다.
+ **파라미터의 새로운 기본값** – 다음 파라미터에는 MariaDB 버전 10.5 DB 인스턴스에 대한 새로운 기본값이 있습니다.
  + [max\$1connections](https://mariadb.com/kb/en/server-system-variables/#max_connections) 파라미터의 기본값이 `LEAST({DBInstanceClassMemory/25165760},12000)`로 변경되었습니다. `LEAST` 파라미터 함수에 대한 자세한 내용은 [DB 파라미터 함수](USER_ParamValuesRef.md#USER_ParamFunctions) 섹션을 참조하세요.
  + [innodb\$1adaptive\$1hash\$1index](https://mariadb.com/kb/en/innodb-system-variables/#innodb_adaptive_hash_index) 파라미터의 기본값이 `OFF`(`0`)로 변경되었습니다.
  + [innodb\$1checksum\$1algorithm](https://mariadb.com/kb/en/innodb-system-variables/#innodb_checksum_algorithm) 파라미터의 기본값이 `full_crc32`로 변경되었습니다.
  + [innodb\$1log\$1file\$1size](https://mariadb.com/kb/en/innodb-system-variables/#innodb_log_file_size) 파라미터의 기본값이 2GB로 변경되었습니다.

MariaDB 10.5 전체 기능 목록과 설명서는 MariaDB 웹 사이트에서 [MariaDB 10.4의 변경 사항 및 개선 사항](https://mariadb.com/kb/en/changes-improvements-in-mariadb-105/)과 [릴리스 정보 - MariaDB 10.5 시리즈](https://mariadb.com/kb/en/release-notes-mariadb-105-series/)를 참조하세요.

지원되지 않는 기능 목록은 [Amazon RDS에서 지원하지 않는 MariaDB 기능](MariaDB.Concepts.FeatureNonSupport.md) 섹션을 참조하세요.

### Amazon RDS에서의 MariaDB 10.4 지원
<a name="MariaDB.Concepts.FeatureSupport.10-4"></a>

Amazon RDS는 MariaDB 버전 10.4 이상을 실행하는 DB 인스턴스에서 다음과 같은 새로운 기능을 지원합니다.
+ **사용자 계정 보안 기능 향상** – [암호 만료](https://mariadb.com/kb/en/user-password-expiry/) 및 [계정 잠금](https://mariadb.com/kb/en/account-locking/) 개선
+ **Optimizer 기능 향상** – [Optimizer Trace 기능](https://mariadb.com/kb/en/optimizer-trace-overview/)
+ **InnoDB 기능 향상** – [즉각적인 DROP COLUMN 지원](https://mariadb.com/kb/en/alter-table/#drop-column)과 `VARCHAR` 및 `ROW_FORMAT=DYNAMIC`에 대한 즉각적인 `ROW_FORMAT=COMPACT` 확장 
+ **새 파라미터** – [tcp\$1nodedelay](https://mariadb.com/kb/en/server-system-variables/#tcp_nodelay), [tls\$1version](https://mariadb.com/kb/en/ssltls-system-variables/#tls_version) 및 [gtid\$1cleanup\$1batch\$1size](https://mariadb.com/kb/en/gtid/#gtid_cleanup_batch_size) 포함

MariaDB 10.4 전체 기능 목록과 설명서는 MariaDB 웹 사이트에서 [MariaDB 10.4의 변경 사항 및 개선 사항](https://mariadb.com/kb/en/library/changes-improvements-in-mariadb-104/)과 [릴리스 정보 - MariaDB 10.4 시리즈](https://mariadb.com/kb/en/library/release-notes-mariadb-104-series/)를 참조하세요.

지원되지 않는 기능 목록은 [Amazon RDS에서 지원하지 않는 MariaDB 기능](MariaDB.Concepts.FeatureNonSupport.md) 섹션을 참조하세요.

# Amazon RDS MariaDB에 대해 지원되는 스토리지 엔진
<a name="MariaDB.Concepts.Storage"></a>

RDS for MariaDB는 다음과 같은 스토리지 엔진을 지원합니다.

**Topics**
+ [InnoDB 스토리지 엔진](#MariaDB.Concepts.Storage.InnoDB)
+ [MyRocks 스토리지 엔진](#MariaDB.Concepts.Storage.MyRocks)

현재 다른 스토리지 엔진은 RDS for MariaDB에서 지원되지 않습니다.

## InnoDB 스토리지 엔진
<a name="MariaDB.Concepts.Storage.InnoDB"></a>

MariaDB는 다양한 기능을 가진 여러 스토리지 엔진을 지원하지만, 모든 엔진이 복구와 데이터 내구성에 최적화되어 있지는 않습니다. InnoDB는 Amazon RDS에서 MariaDB DB 인스턴스용으로 권장되는 스토리지 엔진입니다. 특정 시점으로 복구 및 스냅샷 복원 같은 Amazon RDS 기능을 사용하려면 복구 가능한 스토리지 엔진이 필요하며, 이러한 기능은 MariaDB 버전에 대한 권장 스토리지 엔진에서만 지원됩니다.

자세한 내용은 [InnoDB](https://mariadb.com/kb/en/innodb/)를 참조하세요.

## MyRocks 스토리지 엔진
<a name="MariaDB.Concepts.Storage.MyRocks"></a>

RDS for MariaDB 버전 10.6 이상에서 MyRocks 스토리지 엔진을 사용할 수 있습니다. 프로덕션 데이터베이스에서 MyRocks 스토리지 엔진을 사용하기 전에 철저한 벤치마킹 및 테스트를 수행하여 사용 사례에 대해 InnoDB에 비한 잠재적 이점을 확인하는 것이 좋습니다.

MariaDB 버전 10.6의 기본 파라미터 그룹에는 MyRocks 파라미터가 포함되어 있습니다. 자세한 정보는 [MariaDB에 대한 파라미터](Appendix.MariaDB.Parameters.md) 및 [Amazon RDS의 파라미터 그룹](USER_WorkingWithParamGroups.md) 섹션을 참조하세요.

MyRocks 스토리지 엔진을 사용하는 테이블을 만들려면 `ENGINE=RocksDB` 문에서 `CREATE TABLE`를 지정합니다. 다음 예제에서는 MyRocks 스토리지 엔진을 사용하는 테이블을 생성합니다.

```
CREATE TABLE test (a INT NOT NULL, b CHAR(10)) ENGINE=RocksDB;
```

InnoDB 및 MyRocks 테이블 모두에 걸쳐 있는 트랜잭션은 실행하지 않는 것이 좋습니다. MariaDB는 스토리지 엔진 간 트랜잭션에 대해 ACID(원자성, 일관성, 격리, 내구성)를 보장하지 않습니다. DB 인스턴스에 InnoDB와 MyRocks 테이블을 둘 다 가질 수 있지만, 한 스토리지 엔진에서 다른 스토리지 엔진으로 마이그레이션하는 경우를 제외하고는 이 방법을 사용하지 않는 것이 좋습니다. InnoDB와 MyRocks 테이블이 모두 DB 인스턴스에 존재하는 경우 각 스토리지 엔진마다 고유한 버퍼 풀이 있으므로 성능이 저하될 수 있습니다.

MyRocks는 `SERIALIZABLE` 격리 또는 갭 잠금을 지원하지 않습니다. 따라서 일반적으로 명령문 기반 복제와 함께 MyRocks를 사용할 수 없습니다. 자세한 내용은 [MyRocks 및 복제](https://mariadb.com/kb/en/myrocks-and-replication/)를 참조하세요.

현재 다음 MyRocks 파라미터만 수정할 수 있습니다.
+ [https://mariadb.com/kb/en/myrocks-system-variables/#rocksdb_block_cache_size](https://mariadb.com/kb/en/myrocks-system-variables/#rocksdb_block_cache_size)
+ [https://mariadb.com/kb/en/myrocks-system-variables/#rocksdb_bulk_load](https://mariadb.com/kb/en/myrocks-system-variables/#rocksdb_bulk_load)
+ [https://mariadb.com/kb/en/myrocks-system-variables/#rocksdb_bulk_load_size](https://mariadb.com/kb/en/myrocks-system-variables/#rocksdb_bulk_load_size)
+ [https://mariadb.com/kb/en/myrocks-system-variables/#rocksdb_deadlock_detect](https://mariadb.com/kb/en/myrocks-system-variables/#rocksdb_deadlock_detect)
+ [https://mariadb.com/kb/en/myrocks-system-variables/#rocksdb_deadlock_detect_depth](https://mariadb.com/kb/en/myrocks-system-variables/#rocksdb_deadlock_detect_depth)
+ [https://mariadb.com/kb/en/myrocks-system-variables/#rocksdb_max_latest_deadlocks](https://mariadb.com/kb/en/myrocks-system-variables/#rocksdb_max_latest_deadlocks)

MyRocks 스토리지 엔진과 InnoDB 스토리지 엔진은 `rocksdb_block_cache_size` 및 `innodb_buffer_pool_size` 파라미터에 따라 메모리를 놓고 경쟁할 수 있습니다. MyRocks 스토리지 엔진만 특정 DB 인스턴스에서 사용해야 하는 경우도 있습니다. 이 경우 `innodb_buffer_pool_size minimal` 파라미터를 최소 값으로 설정하고 `rocksdb_block_cache_size`를 가능한 높게 설정하는 것이 좋습니다.

[https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBLogFiles.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBLogFiles.html) 및 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DownloadDBLogFilePortion.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DownloadDBLogFilePortion.html) 작업을 사용하여 MyRocks 로그 파일에 액세스할 수 있습니다.

MyRocks 대한 자세한 내용은 MariaDB 웹사이트의 [MyRocks](https://mariadb.com/kb/en/myrocks/)를 참조하세요.

# Amazon RDS의 MariaDB를 위한 캐시 워밍
<a name="MariaDB.Concepts.XtraDBCacheWarming"></a>

InnoDB 캐시 워밍은 DB 인스턴스가 종료될 때 버퍼 풀의 현재 상태를 저장한 다음 DB 인스턴스가 시작될 때 저장된 정보에서 버퍼 풀을 다시 로드하여 MariaDB DB 인스턴스의 성능 향상을 제공할 수 있습니다. 이렇게 하면 보통 데이터베이스 사용에서 "준비"까지의 버퍼 풀에 대한 필요를 무시하고, 대신 알려진 공용 쿼리에 대한 페이지와 함께 버퍼 풀을 미리 로드합니다. 캐시 워밍에 대한 자세한 내용은 MariaDB 설명서에서 [Dumping and restoring the buffer pool](http://mariadb.com/kb/en/mariadb/xtradbinnodb-buffer-pool/#dumping-and-restoring-the-buffer-pool)을 참조하세요.

캐시 워밍은 MariaDB 10.3 이상 DB 인스턴스에서 기본적으로 활성화됩니다. 캐시 워밍을 활성화하려면 DB 인스턴스의 파라미터 그룹에서 `innodb_buffer_pool_dump_at_shutdown` 및 `innodb_buffer_pool_load_at_startup` 파라미터를 1로 설정합니다. 파라미터 그룹에서 이들 파라미터 값을 변경하면 파라미터 그룹을 사용하는 모든 MariaDB DB 인스턴스가 영향을 받습니다. 특정 MariaDB DB 인스턴스에 대해 캐시 워밍을 활성화하려면, 이들 DB 인스턴스에 대한 새 파라미터 그룹을 생성해야 할 수도 있습니다. 파라미터 그룹에 대한 자세한 내용은 [Amazon RDS의 파라미터 그룹](USER_WorkingWithParamGroups.md) 섹션을 참조하세요.

캐시 워밍은 주로 표준 스토리지를 사용하는 DB 인스턴스를 위해 성능 혜택을 제공합니다. PIOPS 스토리지를 사용하는 경우에는 통상적으로 성능 혜택이 현저하지 않습니다.

**중요**  
MariaDB DB 인스턴스가 정상적으로 종료되지 않는 경우(예: 장애 조치 도중), 버퍼 풀 상태가 디스크에 저장되지 않습니다. 이 경우 MariaDB는 DB 인스턴스가 다시 시작될 때 이용 가능한 모든 버퍼 풀 파일을 로드합니다. 어떤 손상도 발생하지 않지만, 복원된 버퍼 풀은 대부분의 경우 다시 시작하기 이전의 버퍼 풀 최신 상태를 반영하지 못할 수도 있습니다. 시작 시 캐시를 워밍하기 위해 버퍼 풀의 최신 상태를 이용할 수 있게 하려면, "요청 시" 버퍼 풀을 주기적으로 덤프하는 것이 좋습니다. 사용자가 요청 시 버퍼 풀을 덤프 또는 로드할 수 있습니다.  
버퍼 풀을 자동으로 그리고 정기적으로 덤프하는 이벤트를 생성할 수 있습니다. 예를 들면, 다음 문은 매 시간마다 버퍼 풀을 덤프하는 이름이 `periodic_buffer_pool_dump`인 이벤트를 생성합니다.  

```
1. CREATE EVENT periodic_buffer_pool_dump 
2.    ON SCHEDULE EVERY 1 HOUR 
3.    DO CALL mysql.rds_innodb_buffer_pool_dump_now();
```
자세한 내용은 MariaDB 설명서에서 [Events](http://mariadb.com/kb/en/mariadb/stored-programs-and-views-events/)를 참조하세요.

## 요청 시 버퍼 풀 덤핑 및 로딩
<a name="MariaDB.Concepts.XtraDBCacheWarming.OnDemand"></a>

다음의 저장 프로시저를 사용해 요청 시 캐시를 저장하고 로드할 수 있습니다.
+ 버퍼 풀의 현재 상태를 디스크에 덤프하려면 [mysql.rds\$1innodb\$1buffer\$1pool\$1dump\$1now](mysql-stored-proc-warming.md#mysql_rds_innodb_buffer_pool_dump_now) 저장 프로시저를 호출합니다.
+ 디스크에서 저장된 버퍼 풀의 상태를 로드하려면 [mysql.rds\$1innodb\$1buffer\$1pool\$1load\$1now](mysql-stored-proc-warming.md#mysql_rds_innodb_buffer_pool_load_now) 저장 프로시저를 호출합니다.
+ 진행 중인 로드 작업을 취소하려면 [mysql.rds\$1innodb\$1buffer\$1pool\$1load\$1abort](mysql-stored-proc-warming.md#mysql_rds_innodb_buffer_pool_load_abort) 저장 프로시저를 호출합니다.

# Amazon RDS에서 지원하지 않는 MariaDB 기능
<a name="MariaDB.Concepts.FeatureNonSupport"></a>

다음 MariaDB 기능은 Amazon RDS에서 지원되지 않습니다.
+ S3 스토리지 엔진
+ 인증 플러그인 – GSSAPI
+ 인증 플러그인 – Unix 소켓
+ AWS Key Management 암호화 플러그 인
+ 10.6보다 낮은 MariaDB 버전에 대한 지연 복제
+ InnoDB 및 Aria에 대한 기본 유휴 시 MariaDB 암호화

  [Amazon RDS 리소스 암호화](Overview.Encryption.md)의 지침에 따라 MariaDB DB 인스턴스에 유휴 시 암호화를 활성화할 수 있습니다.
+ HandlerSocket
+ 10.6보다 낮은 MariaDB 버전에 대한 JSON 테이블 유형
+ MariaDB ColumnStore
+ MariaDB Galera Cluster
+ 멀티 소스 복제
+ 10.6보다 낮은 MariaDB 버전용 MyRocks 스토리지 엔진
+ 11.4 미만의 MariaDB 버전에 대한 암호 검증 플러그인, `simple_password_check` 및 `cracklib_password_check` 
+ 스파이더 스토리지 엔진
+ Sphinx 스토리지 엔진
+ TokuDB 스토리지 엔진
+ 스토리지 엔진별 객체 속성(MariaDB 설명서의 [Engine-defined New Table/Field/Index Attributes](http://mariadb.com/kb/en/mariadb/engine-defined-new-tablefieldindex-attributes/)에서 설명).
+ 테이블 및 tablespace 암호화
+ Hashicorp 키 관리 플러그인
+ 두 업그레이드를 병렬로 실행

관리형 서비스 환경을 제공하기 위해 Amazon RDS는 DB 인스턴스에 대해 shell 액세스를 제공하지 않으며, 고급 권한을 필요로 하는 특정 시스템 절차와 테이블에 대한 액세스를 제한합니다. Amazon RDS는 표준 SQL 클라이언트 애플리케이션을 사용하여 DB 인스턴스의 데이터베이스에 대한 액세스를 지원합니다. Amazon RDS는 Telnet, SSH(보안 셸) 또는 Windows 원격 데스크톱 연결을 사용하여 DB 인스턴스에 대한 직접적인 호스트 액세스를 허용하지 않습니다.

# Amazon RDS MariaDB 버전
<a name="MariaDB.Concepts.VersionMgmt"></a>

MariaDB 버전 번호는 버전 X.Y.Z로 구성됩니다. Amazon RDS 용어에서 X.Y는 메이저 버전을 나타내고 Z는 마이너 버전 번호를 나타냅니다. Amazon RDS 구현을 위해서, 메이저 버전 번호가 변경될 경우(예: 버전 10.5에서 10.6으로 변경) 이를 메이저 버전 변경으로 간주합니다. 마이너 버전 번호만 변경된 경우(예: 버전 10.6.14에서 10.6.16로 변경)에는 마이너 버전 변경으로 간주합니다.

**Topics**
+ [Amazon RDS에서 지원되는 MariaDB 마이너 버전](#MariaDB.Concepts.VersionMgmt.Supported)
+ [Amazon RDS에서 지원되는 MariaDB 메이저 버전](#MariaDB.Concepts.VersionMgmt.ReleaseCalendar)
+ [데이터베이스 미리 보기 환경 작업](#mariadb-working-with-the-database-preview-environment)
+ [Database Preview Environment의 MariaDB 버전 11.7](#mariadb-preview-environment-version-11-7)
+ [더 이상 사용되지 않는 Amazon RDS for MariaDB 버전](#MariaDB.Concepts.DeprecatedVersions)

## Amazon RDS에서 지원되는 MariaDB 마이너 버전
<a name="MariaDB.Concepts.VersionMgmt.Supported"></a>

Amazon RDS는 현재 다음과 같은 MariaDB 마이너 버전을 지원합니다.

**참고**  
월과 연도만 있는 날짜는 대략적인 날짜이며 알 수 있는 정확한 날짜로 업데이트됩니다.

다음 표는 현재 Amazon RDS가 지원하는 MariaDB 11.8의 마이너 버전을 보여 줍니다.


| MariaDB 엔진 버전 | 커뮤니티 릴리스 날짜 | RDS 릴리스 날짜 | RDS 표준 지원 종료일 | 
| --- | --- | --- | --- | 
|  11.8.6  | 2026년 2월 4일 |  2026년 2월 10일  |  2027년 2월  | 
|  11.8.5  | 2025년 11월 14일 |  2025년 11월 20일  |  2026년 11월  | 
|  11.8.3  | 2025년 8월 6일 |  2025년 8월 25일  |  2026년 9월  | 

다음 표는 현재 Amazon RDS가 지원하는 MariaDB 11.4의 마이너 버전을 보여 줍니다.


| MariaDB 엔진 버전 | 커뮤니티 릴리스 날짜 | RDS 릴리스 날짜 | RDS 표준 지원 종료일 | 
| --- | --- | --- | --- | 
|  11.4.10  | 2026년 2월 4일 |  2026년 2월 10일  |  2027년 2월  | 
|  11.4.9  | 2025년 11월 6일 |  2025년 11월 18일  |  2026년 11월  | 
|  11.4.8  | 2025년 8월 6일 |  2025년 8월 13일  |  2026년 9월  | 
|  11.4.7  | 2025년 5월 22일 |  2025년 6월 4일  |  2026년 9월  | 
|  11.4.5  | 2025년 2월 4일 |  2025년 2월 24일  |  2026년 5월  | 
|  11.4.4  | 2024년 11월 1일 |  2024년 12월 20일  |  2026년 5월  | 
|  11.4.3  |  2024년 8월 8일  |  2024년 10월 15일  |  2026년 5월  | 

다음 표는 현재 Amazon RDS가 지원하는 MariaDB 10.11의 마이너 버전을 보여 줍니다.


| MariaDB 엔진 버전 | 커뮤니티 릴리스 날짜 | RDS 릴리스 날짜 | RDS 표준 지원 종료일 | 
| --- | --- | --- | --- | 
|  10.11.16  | 2026년 2월 4일 |  2026년 2월 10일  |  2027년 2월  | 
|  10.11.15  | 2025년 11월 6일 | 2025년 11월 18일 |  2026년 11월  | 
|  10.11.14  | 2025년 8월 6일 | 2025년 8월 13일 |  2026년 9월  | 
|  10.11.13  | 2025년 5월 22일 | 2025년 6월 4일 |  2026년 9월  | 
|  10.11.11  | 2025년 2월 4일 | 2025년 2월 24일 |  2026년 5월  | 
|  10.11.10  |  2024년 11월 1일  |  2024년 12월 20일  |  2026년 5월  | 
|  10.11.9  |  2024년 8월 8일  |  2024년 9월 4일  |  2026년 5월  | 

다음 표는 현재 Amazon RDS가 지원하는 MariaDB 10.6의 마이너 버전을 보여 줍니다.


| MariaDB 엔진 버전 | 커뮤니티 릴리스 날짜 | RDS 릴리스 날짜 | RDS 표준 지원 종료일 | 
| --- | --- | --- | --- | 
|  10.6.25  | 2026년 2월 4일 |  2026년 2월 10일  |  2026년 7월  | 
|  10.6.24  |  2025년 11월 6일  |  2025년 11월 18일  |  2026년 7월  | 
|  10.6.23  |  2025년 8월 6일  |  2025년 8월 13일  |  2026년 7월  | 
|  10.6.22  |  2025년 5월 6일  |  2025년 5월 20일  |  2026년 7월  | 
|  10.6.21  |  2025년 2월 4일  |  2025년 2월 24일  |  2026년 5월  | 
|  10.6.20  |  2024년 11월 1일  |  2024년 12월 20일  |  2026년 5월  | 
|  10.6.19  |  2024년 8월 8일  |  2024년 9월 4일  |  2026년 5월  | 

다음 표는 현재 Amazon RDS가 지원하는 MariaDB 10.5의 마이너 버전을 보여 줍니다.


| MariaDB 엔진 버전 | 커뮤니티 릴리스 날짜 | RDS 릴리스 날짜 | RDS 표준 지원 종료일 | 
| --- | --- | --- | --- | 
|  10.5.29  |  2025년 5월 6일  |  2025년 5월 20일  |  2026년 6월  | 
|  10.5.28  |  2025년 2월 4일  |  2025년 2월 24일  |  2026년 6월  | 
|  10.5.27  |  2024년 11월 1일  |  2024년 12월 20일  |  2026년 5월  | 

새 DB 인스턴스를 생성할 때는 현재 지원되는 모든 MariaDB 버전을 지정할 수 있습니다. MariaDB 10.5와 같이 메이저 버전과 지정된 메이저 버전에 대해 지원되는 모든 마이너 버전을 지정할 수 있습니다. 버전이 지정되지 않은 경우 Amazon RDS는 지원되는 버전(보통 최신 버전)을 기본값으로 설정합니다. 메이저 버전이 지정되었지만 마이너 버전이 지정되지 않은 경우, Amazon RDS는 고객이 지정한 메이저 버전의 최근 릴리스를 기본값으로 설정합니다. 지원되는 버전 목록과 새로 만든 DB 인스턴스의 기본값을 보려면 [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html) AWS CLI 명령을 사용합니다.

예를 들어 RDS for MariaDB 버전 목록을 보려면 다음 CLI 명령을 실행합니다.

```
aws rds describe-db-engine-versions --engine mariadb --query "*[].{Engine:Engine,EngineVersion:EngineVersion}" --output text
```

기본 MariaDB 버전은 AWS 리전에 따라 다를 수 있습니다. 특정 마이너 버전으로 DB 인스턴스를 생성하려면 DB 인스턴스 생성 중에 마이너 버전을 지정합니다. 다음 AWS CLI 명령을 실행하여 AWS 리전의 기본 마이너 버전을 확인할 수 있습니다.

```
aws rds describe-db-engine-versions --default-only --engine mariadb --engine-version major_engine_version --region region --query "*[].{Engine:Engine,EngineVersion:EngineVersion}" --output text
```

*major-engine-version*을 메이저 엔진 버전으로 바꾸고 *region*을 AWS 리전으로 바꿉니다. 예를 들어, 다음 AWS CLI 명령은 10.5 메이저 버전과 미국 서부(오레곤) AWS 리전(us-west-2)에 대한 기본 MariaDB 마이너 엔진 버전을 반환합니다.

```
aws rds describe-db-engine-versions --default-only --engine mariadb --engine-version 10.5 --region us-west-2 --query "*[].{Engine:Engine,EngineVersion:EngineVersion}" --output text
```

### Amazon RDS의 MariaDB 마이너 버전
<a name="MySQL.Concepts.VersionMgmt.Supported.Minor"></a>

**Topics**
+ [MariaDB 버전 11.8.6](#MariaDB.Concepts.VersionMgmt.Supported.Minor.11.8.6)
+ [MariaDB 버전 11.8.5](#MariaDB.Concepts.VersionMgmt.Supported.Minor.11.8.5)
+ [MariaDB 버전 11.8.3](#MariaDB.Concepts.VersionMgmt.Supported.Minor.11.8.3)
+ [MariaDB 버전 11.4.10](#MariaDB.Concepts.VersionMgmt.Supported.Minor.11.4.10)
+ [MariaDB 버전 11.4.9](#MariaDB.Concepts.VersionMgmt.Supported.Minor.11.4.9)
+ [MariaDB 버전 11.4.8](#MariaDB.Concepts.VersionMgmt.Supported.Minor.11.4.8)
+ [MariaDB 버전 11.4.7](#MariaDB.Concepts.VersionMgmt.Supported.Minor.11.4.7)
+ [MariaDB 버전 11.4.5](#MariaDB.Concepts.VersionMgmt.Supported.Minor.11.4.5)
+ [MariaDB 버전 11.4.4](#MariaDB.Concepts.VersionMgmt.Supported.Minor.11.4.4)
+ [MariaDB 버전 10.11.16](#MariaDB.Concepts.VersionMgmt.Supported.Minor.10.11.16)
+ [MariaDB 버전 10.11.15](#MariaDB.Concepts.VersionMgmt.Supported.Minor.10.11.15)
+ [MariaDB 버전 10.11.14](#MariaDB.Concepts.VersionMgmt.Supported.Minor.10.11.14)
+ [MariaDB 버전 10.11.13](#MariaDB.Concepts.VersionMgmt.Supported.Minor.10.11.13)
+ [MariaDB 버전 10.11.11](#MariaDB.Concepts.VersionMgmt.Supported.Minor.10.11.11)
+ [MariaDB 버전 10.11.10](#MariaDB.Concepts.VersionMgmt.Supported.Minor.10.11.10)
+ [MariaDB 버전 10.6.25](#MariaDB.Concepts.VersionMgmt.Supported.Minor.10.6.25)
+ [MariaDB 버전 10.6.24](#MariaDB.Concepts.VersionMgmt.Supported.Minor.10.6.24)
+ [MariaDB 버전 10.6.23](#MariaDB.Concepts.VersionMgmt.Supported.Minor.10.6.23)
+ [MariaDB 버전 10.6.22](#MariaDB.Concepts.VersionMgmt.Supported.Minor.10.6.22)
+ [MariaDB 버전 10.6.21](#MariaDB.Concepts.VersionMgmt.Supported.Minor.10.6.21)
+ [MariaDB 버전 10.6.20](#MariaDB.Concepts.VersionMgmt.Supported.Minor.10.6.20)
+ [MariaDB 버전 10.5.29](#MariaDB.Concepts.VersionMgmt.Supported.Minor.10.5.29)
+ [MariaDB 버전 10.5.28](#MariaDB.Concepts.VersionMgmt.Supported.Minor.10.5.28)
+ [MariaDB 버전 10.5.27](#MariaDB.Concepts.VersionMgmt.Supported.Minor.10.5.27)

#### MariaDB 버전 11.8.6
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.11.8.6"></a>

이제 Amazon RDS에서 MariaDB 버전 11.8.6를 사용할 수 있습니다. 이 릴리스에는 MariaDB 커뮤니티와 Amazon RDS에서 추가한 수정 및 개선 사항이 포함되어 있습니다.

**새로운 기능 및 개선 사항**.
+ `tzdata2025c`를 기반으로 시간대 정보를 업데이트했습니다.
+ 일부 SQL 문이 감사 로그에 로깅되지 않을 수 있는 문제를 수정했습니다.

#### MariaDB 버전 11.8.5
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.11.8.5"></a>

이제 Amazon RDS에서 MariaDB 버전 11.8.5를 사용할 수 있습니다. 이 릴리스에는 MariaDB 커뮤니티와 Amazon RDS에서 추가한 수정 및 개선 사항이 포함되어 있습니다.

#### MariaDB 버전 11.8.3
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.11.8.3"></a>

이제 Amazon RDS에서 MariaDB 버전 11.8.3를 사용할 수 있습니다. 이 릴리스에는 MariaDB 커뮤니티와 Amazon RDS에서 추가한 수정 및 개선 사항이 포함되어 있습니다.

**새로운 기능 및 개선 사항**.
+ **파라미터의 새 기본값** - `require_secure_transport` 파라미터의 기본값이 `0`에서 `1`로 변경되어 기본적으로 보안 전송 연결이 적용됩니다. 자세한 내용은 [Amazon RDS의 MariaDB DB 인스턴스에 대한 모든 연결에 SSL/TLS 요구](mariadb-ssl-connections.require-ssl.md) 섹션을 참조하세요.

#### MariaDB 버전 11.4.10
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.11.4.10"></a>

이제 Amazon RDS에서 MariaDB 버전 11.4.10를 사용할 수 있습니다. 이 릴리스에는 MariaDB 커뮤니티와 Amazon RDS에서 추가한 수정 및 개선 사항이 포함되어 있습니다.

**새로운 기능 및 개선 사항**
+ `tzdata2025c`를 기반으로 시간대 정보를 업데이트했습니다.
+ 일부 SQL 문이 감사 로그에 로깅되지 않을 수 있는 문제를 수정했습니다.

#### MariaDB 버전 11.4.9
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.11.4.9"></a>

이제 Amazon RDS에서 MariaDB 버전 11.4.9를 사용할 수 있습니다. 이 릴리스에는 MariaDB 커뮤니티와 Amazon RDS에서 추가한 수정 및 개선 사항이 포함되어 있습니다.

#### MariaDB 버전 11.4.8
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.11.4.8"></a>

이제 Amazon RDS에서 MariaDB 버전 11.4.8을 사용할 수 있습니다. 이 릴리스에는 MariaDB 커뮤니티와 Amazon RDS에서 추가한 수정 및 개선 사항이 포함되어 있습니다.

#### MariaDB 버전 11.4.7
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.11.4.7"></a>

이제 Amazon RDS에서 MariaDB 버전 11.4.7을 사용할 수 있습니다. 이 릴리스에는 MariaDB 커뮤니티와 Amazon RDS에서 추가한 수정 및 개선 사항이 포함되어 있습니다.

**새로운 기능 및 개선 사항**.
+ `tzdata2025b`를 기반으로 시간대 정보를 업데이트했습니다.

#### MariaDB 버전 11.4.5
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.11.4.5"></a>

이제 Amazon RDS에서 MariaDB 버전 11.4.5를 사용할 수 있습니다. 이 릴리스에는 MariaDB 커뮤니티와 Amazon RDS에서 추가한 수정 및 개선 사항이 포함되어 있습니다.

**새로운 기능 및 개선 사항**.
+ `tzdata2025a`를 기반으로 시간대 정보를 업데이트했습니다.

#### MariaDB 버전 11.4.4
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.11.4.4"></a>

이제 Amazon RDS에서 MariaDB 버전 11.4.4를 사용할 수 있습니다. 이 릴리스에는 MariaDB 커뮤니티와 Amazon RDS에서 추가한 수정 및 개선 사항이 포함되어 있습니다.

**새로운 기능 및 개선 사항**.
+ 시점 복구(PITR)를 실패하게 만드는 두 MariaDB 커뮤니티 변경 사항을 되돌렸습니다. 자세한 내용은 [MariaDB Server Jira issue MDEV-35528](https://jira.mariadb.org/browse/MDEV-35528)을 참조하세요.

#### MariaDB 버전 10.11.16
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.10.11.16"></a>

이제 Amazon RDS에서 MariaDB 버전 10.11.16을 사용할 수 있습니다. 이 릴리스에는 MariaDB 커뮤니티와 Amazon RDS에서 추가한 수정 및 개선 사항이 포함되어 있습니다.

**새로운 기능 및 개선 사항**.
+ `tzdata2025c`를 기반으로 시간대 정보를 업데이트했습니다.
+ 일부 SQL 문이 감사 로그에 로깅되지 않을 수 있는 문제를 수정했습니다.

#### MariaDB 버전 10.11.15
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.10.11.15"></a>

이제 Amazon RDS에서 MariaDB 버전 10.11.15을 사용할 수 있습니다. 이 릴리스에는 MariaDB 커뮤니티와 Amazon RDS에서 추가한 수정 및 개선 사항이 포함되어 있습니다.

#### MariaDB 버전 10.11.14
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.10.11.14"></a>

이제 Amazon RDS에서 MariaDB 버전 10.11.14를 사용할 수 있습니다. 이 릴리스에는 MariaDB 커뮤니티와 Amazon RDS에서 추가한 수정 및 개선 사항이 포함되어 있습니다.

#### MariaDB 버전 10.11.13
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.10.11.13"></a>

이제 Amazon RDS에서 MariaDB 버전 10.11.13을 사용할 수 있습니다. 이 릴리스에는 MariaDB 커뮤니티와 Amazon RDS에서 추가한 수정 및 개선 사항이 포함되어 있습니다.

**새로운 기능 및 개선 사항**.
+ `tzdata2025b`를 기반으로 시간대 정보를 업데이트했습니다.

#### MariaDB 버전 10.11.11
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.10.11.11"></a>

이제 Amazon RDS에서 MariaDB 버전 10.11.11을 사용할 수 있습니다. 이 릴리스에는 MariaDB 커뮤니티와 Amazon RDS에서 추가한 수정 및 개선 사항이 포함되어 있습니다.

**새로운 기능 및 개선 사항**.
+ `tzdata2025a`를 기반으로 시간대 정보를 업데이트했습니다.

#### MariaDB 버전 10.11.10
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.10.11.10"></a>

이제 Amazon RDS에서 MariaDB 버전 10.11.10을 사용할 수 있습니다. 이 릴리스에는 MariaDB 커뮤니티와 Amazon RDS에서 추가한 수정 및 개선 사항이 포함되어 있습니다.

**새로운 기능 및 개선 사항**.
+ 시점 복구(PITR)를 실패하게 만드는 두 MariaDB 커뮤니티 변경 사항을 되돌렸습니다. 자세한 내용은 [MariaDB Server Jira issue MDEV-35528](https://jira.mariadb.org/browse/MDEV-35528)을 참조하세요.

#### MariaDB 버전 10.6.25
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.10.6.25"></a>

이제 Amazon RDS에서 MariaDB 버전 10.6.25을 사용할 수 있습니다. 이 릴리스에는 MariaDB 커뮤니티와 Amazon RDS에서 추가한 수정 및 개선 사항이 포함되어 있습니다.

**새로운 기능 및 개선 사항**.
+ `tzdata2025c`를 기반으로 시간대 정보를 업데이트했습니다.
+ 일부 SQL 문이 감사 로그에 로깅되지 않을 수 있는 문제를 수정했습니다.

#### MariaDB 버전 10.6.24
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.10.6.24"></a>

이제 Amazon RDS에서 MariaDB 버전 10.6.24을 사용할 수 있습니다. 이 릴리스에는 MariaDB 커뮤니티와 Amazon RDS에서 추가한 수정 및 개선 사항이 포함되어 있습니다.

#### MariaDB 버전 10.6.23
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.10.6.23"></a>

이제 Amazon RDS에서 MariaDB 버전 10.6.23을 사용할 수 있습니다. 이 릴리스에는 MariaDB 커뮤니티와 Amazon RDS에서 추가한 수정 및 개선 사항이 포함되어 있습니다.

#### MariaDB 버전 10.6.22
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.10.6.22"></a>

이제 Amazon RDS에서 MariaDB 버전 10.6.22를 사용할 수 있습니다. 이 릴리스에는 MariaDB 커뮤니티와 Amazon RDS에서 추가한 수정 및 개선 사항이 포함되어 있습니다.

**새로운 기능 및 개선 사항**.
+ `tzdata2025b`를 기반으로 시간대 정보를 업데이트했습니다.

#### MariaDB 버전 10.6.21
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.10.6.21"></a>

이제 Amazon RDS에서 MariaDB 버전 10.6.21을 사용할 수 있습니다. 이 릴리스에는 MariaDB 커뮤니티와 Amazon RDS에서 추가한 수정 및 개선 사항이 포함되어 있습니다.

**새로운 기능 및 개선 사항**.
+ `tzdata2025a`를 기반으로 시간대 정보를 업데이트했습니다.

#### MariaDB 버전 10.6.20
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.10.6.20"></a>

이제 Amazon RDS에서 MariaDB 버전 10.6.20을 사용할 수 있습니다. 이 릴리스에는 MariaDB 커뮤니티와 Amazon RDS에서 추가한 수정 및 개선 사항이 포함되어 있습니다.

**새로운 기능 및 개선 사항**.
+ 시점 복구(PITR)를 실패하게 만드는 두 MariaDB 커뮤니티 변경 사항을 되돌렸습니다. 자세한 내용은 [MariaDB Server Jira issue MDEV-35528](https://jira.mariadb.org/browse/MDEV-35528)을 참조하세요.

#### MariaDB 버전 10.5.29
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.10.5.29"></a>

이제 Amazon RDS에서 MariaDB 버전 10.5.29를 사용할 수 있습니다. 이 릴리스에는 MariaDB 커뮤니티와 Amazon RDS에서 추가한 수정 및 개선 사항이 포함되어 있습니다.

**새로운 기능 및 개선 사항**.
+ `tzdata2025b`를 기반으로 시간대 정보를 업데이트했습니다.

#### MariaDB 버전 10.5.28
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.10.5.28"></a>

이제 Amazon RDS에서 MariaDB 버전 10.5.28을 사용할 수 있습니다. 이 릴리스에는 MariaDB 커뮤니티와 Amazon RDS에서 추가한 수정 및 개선 사항이 포함되어 있습니다.

**새로운 기능 및 개선 사항**.
+ `tzdata2025a`를 기반으로 시간대 정보를 업데이트했습니다.

#### MariaDB 버전 10.5.27
<a name="MariaDB.Concepts.VersionMgmt.Supported.Minor.10.5.27"></a>

이제 Amazon RDS에서 MariaDB 버전 10.5.27을 사용할 수 있습니다. 이 릴리스에는 MariaDB 커뮤니티와 Amazon RDS에서 추가한 수정 및 개선 사항이 포함되어 있습니다.

**새로운 기능 및 개선 사항**.
+ 시점 복구(PITR)를 실패하게 만드는 두 MariaDB 커뮤니티 변경 사항을 되돌렸습니다. 자세한 내용은 [MariaDB Server Jira issue MDEV-35528](https://jira.mariadb.org/browse/MDEV-35528)을 참조하세요.

## Amazon RDS에서 지원되는 MariaDB 메이저 버전
<a name="MariaDB.Concepts.VersionMgmt.ReleaseCalendar"></a>

RDS for MariaDB 메이저 버전은 해당 커뮤니티 버전에 대한 커뮤니티 수명이 끝날 때까지 사용할 수 있습니다. 다음 날짜를 사용하여 테스트 및 업그레이드 주기를 계획할 수 있습니다. Amazon이 RDS for MariaDB 버전에 대한 지원을 원래 명시일보다 오래 연장할 경우, 이 표를 이후 날짜를 반영하도록 업데이트할 계획입니다.

**참고**  
월과 연도만 있는 날짜는 대략적인 날짜이며 알 수 있는 정확한 날짜로 업데이트됩니다.  
[describe-db-major-engine-versions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-major-engine-versions.html) AWS CLI 명령을 실행하거나 [DescribeDBMajorEngineVersions](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBMajorEngineVersions.html) RDS API 작업을 사용하여 메이저 엔진 버전의 지원 날짜에 대한 정보를 볼 수도 있습니다.


| MariaDB 메이저 버전 | 커뮤니티 릴리스 날짜 | RDS 릴리스 날짜 | 커뮤니티 수명 종료 날짜 | RDS 표준 지원 종료일 | 
| --- | --- | --- | --- | --- | 
|  MariaDB 11.8  |  2025년 8월 6일  |  2025년 8월 25일  |  2030년 6월  |  2030년 6월  | 
|  MariaDB 11.4  |  2024년 8월 8일  |  2024년 10월 15일  |  2029년 5월  |  2029년 5월  | 
|  MariaDB 10.11  |  2023년 2월 16일  |  2023년 8월 21일  |  2028년 2월 16일  |  2028년 2월  | 
|  MariaDB 10.6  |  2021년 7월 6일  |  2022년 2월 3일  |  2026년 7월 6일  |  2026년 8월  | 
|  MariaDB 10.5  |  2020년 6월 24일  |  2021년 1월 21일  |  2024년 6월 24일  |  2026년 8월  | 

## 데이터베이스 미리 보기 환경 작업
<a name="mariadb-working-with-the-database-preview-environment"></a>

데이터베이스 미리 보기 환경의 RDS for MariaDB DB 인스턴스는 다른 RDS for MariaDB DB 인스턴스와 기능적으로 유사합니다. 하지만 프로덕션 워크로드에는 데이터베이스 미리 보기 환경을 사용할 수 없습니다.

미리 보기 환경에는 다음과 같은 제한 사항이 적용됩니다.
+ Amazon RDS는 생성 시점으로부터 60일이 지난 모든 DB 인스턴스를 백업 및 스냅샷과 함께 삭제합니다.
+ 범용 SSD와 프로비저닝된 IOPS SSD 스토리지만 사용할 수 있습니다.
+ DB 인스턴스와 관련해서는 지원의 도움을 받을 수 없습니다. 대신 AWS 관리형 Q&A 커뮤니티인 [AWS re:Post](https://repost.aws/tags/TAsibBK6ZeQYihN9as4S_psg/amazon-relational-database-service)에 질문을 게시할 수 있습니다.
+ DB 인스턴스의 스냅샷을 프로덕션 환경으로 복제할 수 없습니다.

미리 보기에서 지원되는 옵션은 다음과 같습니다.
+ db.m6i, db.r6i, db.m6g, db.m5, db.t3, db.r6g, and db.r5 DB 인스턴스 클래스를 사용하여 DB 인스턴스를 생성할 수 있습니다. RDS 인스턴스 클래스에 대한 자세한 내용은 [DB 인스턴스 클래스](Concepts.DBInstanceClass.md) 섹션을 참조하세요.
+ 단일 AZ 배포와 다중 AZ 배포를 모두 사용할 수 있습니다.
+ 표준 MariaDB 덤프 및 로드 함수를 사용하여 데이터베이스 미리 보기 환경에서 데이터베이스를 내보내거나 데이터베이스 미리 보기 환경으로 데이터베이스를 가져올 수 있습니다.

### 데이터베이스 미리 보기 환경에서 지원하지 않는 기능
<a name="mariadb-preview-environment-exclusions"></a>

다음 기능은 데이터베이스 미리 보기 환경에서 사용할 수 없습니다.
+ 리전 간 스냅샷 복제
+ 리전 간 읽기 전용 복제본
+ RDS 프록시

### 데이터베이스 미리 보기 환경에서 새 DB 인스턴스 생성
<a name="mariadb-create-db-instance-in-preview-environment"></a>

AWS Management Console, AWS CLI 또는 RDS API를 사용하여 데이터베이스 미리 보기 환경에서 DB 인스턴스를 생성할 수 있습니다.

#### 콘솔
<a name="mariadb-create-db-instance-in-preview-environment.CON"></a>

**데이터베이스 미리 보기 환경에서 DB 인스턴스를 생성하는 방법**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **대시보드**를 선택합니다.

1. 다음 그림과 같이 **대시보드** 페이지에서 **데이터베이스 미리 보기 환경** 섹션을 찾습니다.  
![\[링크가 있는 Amazon RDS 콘솔의 데이터베이스 미리 보기 환경 섹션.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/preview-environment-dashboard.png)

   [데이터베이스 미리 보기 환경](https://us-east-2.console.aws.amazon.com/rds-preview/home?region=us-east-2#)으로 바로 이동할 수도 있습니다. 계속하려면 먼저 제한 사항을 확인하고 수락해야 합니다.  
![\[데이터베이스 미리 보기 환경 서비스 계약 대화 상자를 통해 제한 사항을 확인할 수 있습니다.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/preview-environment-console.png)

1. RDS for MariaDB DB 인스턴스를 생성하려면 일반적으로 Amazon RDS DB 인스턴스를 생성할 때와 동일한 프로세스를 따릅니다. 자세한 내용은 [DB 인스턴스 생성](USER_CreateDBInstance.md#USER_CreateDBInstance.Creating)의 [콘솔](USER_CreateDBInstance.md#USER_CreateDBInstance.CON) 절차를 참조하세요.

#### AWS CLI
<a name="mariadb-create-db-instance-in-preview-environment.CLI"></a>

AWS CLI를 사용하여 데이터베이스 미리 보기 환경에 DB 인스턴스를 생성하려면 다음 엔드포인트를 사용합니다.

```
rds-preview.us-east-2.amazonaws.com
```

RDS for MariaDB DB 인스턴스를 생성하려면 일반적으로 Amazon RDS DB 인스턴스를 생성할 때와 동일한 프로세스를 따릅니다. 자세한 내용은 [DB 인스턴스 생성](USER_CreateDBInstance.md#USER_CreateDBInstance.Creating)의 [AWS CLI](USER_CreateDBInstance.md#USER_CreateDBInstance.CLI) 절차를 참조하세요.

#### RDS API
<a name="mariadb-create-db-instance-in-preview-environment.API"></a>

RDS API를 사용하여 데이터베이스 미리 보기 환경에 DB 인스턴스를 생성하려면 다음 엔드포인트를 사용합니다.

```
rds-preview.us-east-2.amazonaws.com
```

RDS for MariaDB DB 인스턴스를 생성하려면 일반적으로 Amazon RDS DB 인스턴스를 생성할 때와 동일한 프로세스를 따릅니다. 자세한 내용은 [DB 인스턴스 생성](USER_CreateDBInstance.md#USER_CreateDBInstance.Creating)의 [RDS API](USER_CreateDBInstance.md#USER_CreateDBInstance.API) 절차를 참조하세요.

## Database Preview Environment의 MariaDB 버전 11.7
<a name="mariadb-preview-environment-version-11-7"></a>

이제 MariaDB 버전 11.7을 Amazon RDS Database Preview Environment에서 사용할 수 있습니다. MariaDB 버전 11.7에는 [MariaDB 11.7의 변경 및 개선 사항](https://mariadb.com/kb/en/changes-improvements-in-mariadb-11-7/)에 설명된 여러 개선 사항이 포함되어 있습니다. 이 버전에는 벡터 데이터 유형, 인덱싱 및 검색에 대한 지원도 포함되어 있습니다. 자세한 내용은 MariaDB 설명서에서 [벡터 개요](https://mariadb.com/kb/en/vector-overview/)를 참조하세요.

데이터베이스 미리 보기 환경을 사용하여 모든 AWS 리전 프로덕션 워크로드에 사용할 수 있게 되기 전에 이 릴리스를 기준으로 워크로드를 테스트할 수 있습니다. 데이터베이스 미리 보기 환경에 대한 자세한 내용은 [데이터베이스 미리 보기 환경 작업](#mariadb-working-with-the-database-preview-environment) 섹션을 참조하세요. 콘솔에서 미리 보기 환경에 액세스하려면 [rds-preview/](https://console.aws.amazon.com/rds-preview/)를 선택합니다.

## 더 이상 사용되지 않는 Amazon RDS for MariaDB 버전
<a name="MariaDB.Concepts.DeprecatedVersions"></a>

Amazon RDS for MariaDB 버전 10.0, 10.1, 10.2, 10.3은 더 이상 지원되지 않습니다.

MariaDB에 대한 Amazon RDS 사용 중단 정책에 대한 자세한 내용은 [Amazon RDS FAQ](https://aws.amazon.com/rds/faqs/)를 참조하세요.

# MariaDB DB 인스턴스에 연결
<a name="USER_ConnectToMariaDBInstance"></a>

Amazon RDS가 DB 인스턴스를 프로비저닝한 후에는 표준 MariaDB 클라이언트 애플리케이션 또는 유틸리티를 사용하여 인스턴스에 연결할 수 있습니다. 연결 문자열에서 DB 인스턴스 엔드포인트의 Domain Name System(DNS) 주소를 호스트 파라미터로 지정합니다. 또한 DB 인스턴스 엔드포인트의 포트 번호를 포트 파라미터로 지정합니다.

Amazon RDS for MariaDB DB 인스턴스는 MySQL 명령줄 클라이언트 같은 도구를 사용하여 연결할 수 있습니다. MySQL 명령줄 클라이언트 사용에 대한 자세한 내용은 MariaDB 문서의 [mysql 명령줄 클라이언트](http://mariadb.com/kb/en/mariadb/mysql-command-line-client/)를 참조하세요. 연결에 사용할 수 있는 GUI 기반 애플리케이션 중 하나는 Heidi입니다. 자세한 내용은 [HeidiSQL 다운로드](http://www.heidisql.com/download.php) 페이지를 참조하십시오. MySQL 설치(MySQL 명령줄 클라이언트 포함)에 대한 정보는 [MySQL 설치 및 업그레이드](https://dev.mysql.com/doc/refman/8.0/en/installing.html)를 참조하세요.

대부분의 Linux 배포에는 Oracle MySQL 클라이언트 대신 MariaDB 클라이언트가 포함됩니다. Amazon Linux 2023에서 MySQL 명령줄 클라이언트를 설치하려면 다음 명령을 실행합니다.

```
sudo dnf install mariadb105
```

Amazon Linux 2에서 MySQL 명령줄 클라이언트를 설치하려면 다음 명령을 실행합니다.

```
sudo yum install mariadb
```

대부분의 DEB 기반 Linux 배포판에 MySQL 명령줄 클라이언트를 설치하려면 다음 명령을 실행합니다.

```
apt-get install mariadb-client
```

MySQL 명령줄 클라이언트의 버전을 확인하려면 다음 명령을 실행합니다.

```
mysql --version
```

현재 클라이언트 버전에 대한 MySQL 설명서를 보려면 다음 명령을 실행합니다.

```
man mysql
```

Amazon VPC 기반의 Virtual Private Cloud(VPC) 외부에서 DB 인스턴스에 연결하려면 DB 인스턴스에 공개적으로 액세스할 수 있어야 합니다. 또한 DB 인스턴스 보안 그룹의 인바운드 규칙을 사용하여 액세스 권한을 부여해야 하며, 기타 요구 사항을 충족해야 합니다. 자세한 내용은 [Amazon RDS DB 인스턴스에 연결할 수 없음](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting) 섹션을 참조하세요.

MariaDB DB 인스턴스에 연결할 때는 SSL 암호화를 사용할 수 있습니다. 자세한 내용은 [Amazon RDS의 MariaDB DB 인스턴스에 대한 SSL/TLS 지원](MariaDB.Concepts.SSLSupport.md)을 참조하세요.

RDS for MariaDB DB 인스턴스를 찾아 연결하려면 다음 주제를 참조하세요.

**Topics**
+ [MariaDB DB 인스턴스에 대한 연결 정보 찾기](USER_ConnectToMariaDBInstance.EndpointAndPort.md)
+ [RDS for MariaDB용 MySQL 명령줄 클라이언트에서 연결(암호화되지 않음)](USER_ConnectToMariaDBInstance.CLI.md)
+ [AWS JDBC 드라이버 및 AWS Python 드라이버를 사용하여 RDS for MariaDB에 연결](MariaDB.Connecting.Drivers.md)
+ [MariaDB DB 인스턴스에 대한 연결 문제 해결](USER_ConnectToMariaDBInstance.Troubleshooting.md)

# MariaDB DB 인스턴스에 대한 연결 정보 찾기
<a name="USER_ConnectToMariaDBInstance.EndpointAndPort"></a>

DB 인스턴스의 연결 정보에는 엔드포인트, 포트 및 유효한 데이터베이스 사용자(예: 마스터 사용자)가 포함됩니다. 예를 들어 엔드포인트 값이 `mydb.123456789012.us-east-1.rds.amazonaws.com`이라고 가정합니다. 이 경우 포트 값은 `3306`이고 데이터베이스 사용자는 `admin`입니다. 이 정보를 바탕으로 연결 문자열에 다음 값을 지정합니다.
+ 호스트 또는 호스트 이름 또는 DNS 이름에 `mydb.123456789012.us-east-1.rds.amazonaws.com`을 지정합니다.
+ 포트에 대해 `3306`을 지정합니다.
+ 사용자에 `admin`을 지정합니다.

DB 인스턴스에 연결하려면 MariaDB DB 엔진에 대해 임의의 클라이언트를 사용합니다. 예를 들어 MySQL 명령줄 클라이언트 또는 MySQL 워크벤치를 사용할 수 있습니다.

DB 인스턴스에 대한 연결 정보를 찾으려면 AWS Management Console, AWS Command Line Interface(AWS CLI) [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) 명령 또는 Amazon RDS API [DescribeDBInstances](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBInstances.html) 작업을 사용하여 세부 정보를 나열하면 됩니다.

## 콘솔
<a name="USER_ConnectToMariaDBInstance.EndpointAndPort.Console"></a>

**AWS Management Console에서 DB 인스턴스에 대한 연결 정보를 찾으려면**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 [**데이터베이스(Database)**] 를 선택하여 DB 인스턴스 목록을 표시합니다.

1. MariaDB DB 인스턴스의 이름을 선택하여 세부 정보를 표시합니다.

1. **Connectivity & security(연결 및 보안)** 탭에서 엔드포인트를 복사합니다. 또한 포트 번호를 적어 둡니다. DB 인스턴스에 연결하려면 엔드포인트와 포트 번호가 모두 필요합니다.  
![\[Amazon RDS 콘솔 내 DB 인스턴스의 엔드포인트 및 포트.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/endpoint-port.png)

1. 마스터 사용자 이름을 찾아야 하는 경우 [**구성(Configuration)**] 탭을 선택하고 [**마스터 사용자 이름(Master username)**] 값을 확인합니다.

## AWS CLI
<a name="USER_ConnectToMariaDBInstance.EndpointAndPort.CLI"></a>

AWS CLI를 사용하여 MariaDB DB 인스턴스의 연결 정보를 찾으려면 [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) 명령을 실행합니다. 이 호출에서 DB 인스턴스 ID, 엔드포인트, 포트 및 마스터 사용자 이름을 쿼리합니다.

대상 LinuxmacOS, 또는Unix:

```
aws rds describe-db-instances \
  --filters "Name=engine,Values=mariadb" \
  --query "*[].[DBInstanceIdentifier,Endpoint.Address,Endpoint.Port,MasterUsername]"
```

Windows의 경우:

```
aws rds describe-db-instances ^
  --filters "Name=engine,Values=mariadb" ^
  --query "*[].[DBInstanceIdentifier,Endpoint.Address,Endpoint.Port,MasterUsername]"
```

다음과 유사하게 출력되어야 합니다.

```
[
    [
        "mydb1",
        "mydb1.123456789012.us-east-1.rds.amazonaws.com",
        3306,
        "admin"
    ],
    [
        "mydb2",
        "mydb2.123456789012.us-east-1.rds.amazonaws.com",
        3306,
        "admin"
    ]
]
```

## RDS API
<a name="USER_ConnectToMariaDBInstance.EndpointAndPort.API"></a>

Amazon RDS API를 사용하여 DB 인스턴스의 연결 정보를 찾으려면 [DescribeDBInstances](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBInstances.html) 작업을 호출합니다. 출력에서 엔드포인트 주소, 엔드포인트 포트 및 마스터 사용자 이름의 값을 찾습니다.

# RDS for MariaDB용 MySQL 명령줄 클라이언트에서 연결(암호화되지 않음)
<a name="USER_ConnectToMariaDBInstance.CLI"></a>

**중요**  
클라이언트와 서버가 동일한 VPC에 있고 네트워크를 신뢰할 수 있는 경우에만 암호화되지 않은 MySQL 연결을 사용합니다. 암호화된 연결 사용에 대한 자세한 내용은 [MySQL 명령줄 클라이언트(암호화됨)에서 SSL/TLS를 사용하여 Amazon RDS의 MariaDB DB 인스턴스에 연결](USER_ConnectToMariaDBInstanceSSL.CLI.md) 섹션을 참조하세요.

MySQL 명령줄 클라이언트를 사용하여 DB 인스턴스에 연결하려면 클라이언트 컴퓨터의 명령 프롬프트에서 다음 명령을 입력합니다. 이렇게 하면 MariaDB DB 인스턴스의 데이터베이스로 연결됩니다. *`<endpoint>`*는 DB 인스턴스의 DNS 이름(엔드포인트)으로 대체하고, *`<mymasteruser>`*는 사용된 마스터 사용자 이름으로 대체합니다. 암호를 묻는 메시지가 표시되면 사용한 마스터 암호를 제공합니다.

```
mysql -h <endpoint> -P 3306 -u <mymasteruser> -p
```

사용자에 대한 암호를 입력하면 다음과 유사한 출력이 나타납니다.

```
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 31
Server version: 10.6.10-MariaDB-log Source distribution
 
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
  
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  
MariaDB [(none)]>
```

# AWS JDBC 드라이버 및 AWS Python 드라이버를 사용하여 RDS for MariaDB에 연결
<a name="MariaDB.Connecting.Drivers"></a>

AWS JDBC 드라이버 및 AWS Python 드라이버를 사용하여 RDS for MariaDB DB 인스턴스에 연결합니다. 자세한 내용은 다음 항목을 참조하세요.

**Topics**
+ [Amazon Web Services(AWS) JDBC 드라이버를 사용하여 RDS for MariaDB에 연결](#MariaDB.Connecting.JDBCDriver)
+ [Amazon Web Services(AWS) Python 드라이버를 사용하여 RDS for MariaDB에 연결](#MariaDB.Connecting.PythonDriver)

## Amazon Web Services(AWS) JDBC 드라이버를 사용하여 RDS for MariaDB에 연결
<a name="MariaDB.Connecting.JDBCDriver"></a>

Amazon Web Services(AWS) JDBC 드라이버는 고급 JDBC 래퍼로 설계되었습니다. 이 래퍼는 기존 JDBC 드라이버의 기능을 보완하고 확장합니다. 이 드라이버는 커뮤니티 MySQL Connector/J 드라이버 및 커뮤니티 MariaDB Connector/J 드라이버와 드롭인 호환됩니다.

AWS JDBC 드라이버를 설치하려면 `CLASSPATH` 애플리케이션에 있는 AWS JDBC 드라이버 .jar 파일을 추가하고 해당 커뮤니티 드라이버에 대한 참조를 보관해 두세요. 다음과 같이 해당 연결 URL 접두사를 업데이트하세요.
+ `jdbc:mysql://`\$1`jdbc:aws-wrapper:mysql://`
+ `jdbc:mariadb://`\$1`jdbc:aws-wrapper:mariadb://`

AWS JDBC 드라이버에 대한 자세한 내용 및 사용 방법에 대한 전체 지침은 [Amazon Web Services (AWS) JDBC Driver GitHub repository](https://github.com/awslabs/aws-advanced-jdbc-wrapper)를 참조하세요.

## Amazon Web Services(AWS) Python 드라이버를 사용하여 RDS for MariaDB에 연결
<a name="MariaDB.Connecting.PythonDriver"></a>

Amazon Web Services(AWS) Python 드라이버는 고급 Python 래퍼로 설계되었습니다. 이 래퍼는 오픈 소스 Psycopg 드라이버의 기능을 보완하고 확장합니다. AWS Python 드라이버는 Python 버전 3.8 이상을 지원합니다. `pip` 명령을 사용하여 `psycopg` 오픈 소스 패키지와 함께 `aws-advanced-python-wrapper` 패키지를 설치할 수 있습니다.

AWS Python 드라이버에 대한 자세한 내용 및 사용 방법에 대한 전체 지침은 [Amazon Web Services (AWS) JDBC Python GitHub repository](https://github.com/awslabs/aws-advanced-python-wrapper)를 참조하세요.

# MariaDB DB 인스턴스에 대한 연결 문제 해결
<a name="USER_ConnectToMariaDBInstance.Troubleshooting"></a>

새로운 DB 인스턴스의 연결 오류가 발생하는 두 가지 공통 원인은 다음과 같습니다.
+ 보안 그룹을 사용하여 DB 인스턴스를 생성하였지만 이 보안 그룹이 MariaDB 애플리케이션 또는 유틸리티를 실행 중인 디바이스나 Amazon EC2 인스턴스에서 연결을 승인하지 않은 경우. DB 인스턴스에 연결 권한을 부여하는 VPC 보안 그룹이 있어야 합니다. 자세한 내용은 [Amazon VPC 및 Amazon RDS](USER_VPC.md) 단원을 참조하십시오.

  보안 그룹에서 인바운드 규칙을 추가하거나 편집할 수 있습니다. **소스**에서 **내 IP**를 선택합니다. 이렇게 하면 브라우저에서 감지된 IP 주소에서 DB 인스턴스에 액세스할 수 있습니다.
+ 포트 3306을 사용해 DB 인스턴스를 만들었는데 기업 방화벽 규칙에 따라 기업 네트워크의 디바이스에서 해당 포트에 연결하는 것이 차단된 경우. 이 오류를 수정하려면 인스턴스를 다른 포트로 다시 만들어야 합니다.

연결 문제에 대한 자세한 내용은 [Amazon RDS DB 인스턴스에 연결할 수 없음](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting) 단원을 참조하십시오.

# MariaDB DB 인스턴스 연결 보안
<a name="securing-mariadb-connections"></a>

MariaDB DB 인스턴스의 보안을 관리할 수 있습니다.

**Topics**
+ [Amazon RDS MariaDB 보안](MariaDB.Concepts.UsersAndPrivileges.md)
+ [RDS for MariaDB용 암호 확인 플러그인 사용](MariaDB.Concepts.PasswordValidationPlugins.md)
+ [SSL/TLS를 사용하여 Amazon RDS의 MariaDB DB 인스턴스에 대한 클라이언트 연결 암호화](mariadb-ssl-connections.md)
+ [새 SSL/TLS 인증서를 사용해 MariaDB 인스턴스에 연결할 애플리케이션 업데이트](ssl-certificate-rotation-mariadb.md)

# Amazon RDS MariaDB 보안
<a name="MariaDB.Concepts.UsersAndPrivileges"></a>

MariaDB DB 인스턴스용 보안은 세 가지 수준에서 관리됩니다.
+ AWS Identity and Access Management는 DB 인스턴스에서 Amazon RDS 관리 작업을 수행할 수 있는 사용자를 제어합니다. IAM 자격 증명을 사용하여 AWS에 연결할 때, IAM 계정은 Amazon RDS 관리 작업을 수행하는 데 필요한 권한을 부여하는 IAM 정책을 보유하고 있어야 합니다. 자세한 내용은 [Amazon RDS의 자격 증명 및 액세스 관리](UsingWithRDS.IAM.md) 단원을 참조하십시오.
+ DB 인스턴스를 생성할 때 VPC 보안 그룹을 사용하여 어떤 디바이스와 Amazon EC2 인스턴스가 DB 인스턴스의 엔드포인트 및 포트에 대한 연결을 열 수 있는지를 제어하게 됩니다. 보안 소켓 계층(SSL) 및 전송 계층 보안(TLS)을 사용하여 이러한 연결을 구성할 수 있습니다. 또한 회사의 방화벽 규칙을 통해 회사에서 실행하는 디바이스가 DB 인스턴스에 대한 연결을 열 수 있는지를 제어할 수 있습니다.
+ 일단 MariaDB DB 인스턴스에 대한 연결이 활성화되면, 로그인 및 권한에 대한 인증은 MariaDB의 독립 실행형 인스턴스에서와 동일한 방식으로 적용됩니다. `CREATE USER`, `RENAME USER`, `GRANT`, `REVOKE` 및 `SET PASSWORD` 등의 명령은 독립 실행형 데이터베이스에서 작동하는 것과 마찬가지로 작동하며, 데이터베이스 스키마 테이블을 직접 수정할 때도 동일합니다.

 Amazon RDS DB 인스턴스를 생성할 때 마스터 사용자는 다음과 같은 기본 권한을 갖습니다.
+  `alter` 
+  `alter routine` 
+  `create` 
+  `create routine` 
+  `create temporary tables` 
+  `create user` 
+  `create view` 
+  `delete` 
+  `drop` 
+  `event` 
+  `execute` 
+  `grant option` 
+  `index` 
+  `insert` 
+  `lock tables` 
+  `process` 
+  `references` 
+  `reload` 

  MariaDB DB 인스턴스에서 이 권한은 제한됩니다. `FLUSH LOGS` 또는 `FLUSH TABLES WITH READ LOCK` 작업에는 액세스할 수 없습니다.
+  `replication client` 
+  `replication slave` 
+  `select` 
+  `show create routine` 

  이 권한은 버전 11.4 이상을 실행하는 MariaDB DB 인스턴스에만 적용됩니다.
+  `show databases` 
+  `show view` 
+  `trigger` 
+  `update` 

권한에 대한 자세한 내용은 MariaDB 설명서에서 [User Account Management](http://mariadb.com/kb/en/mariadb/grant/)를 참조하세요.

**참고**  
DB 인스턴스에서 마스터 사용자를 삭제할 수는 있지만, 마스터 사용자를 삭제하지 않을 것을 권장합니다. 마스터 사용자를 다시 생성하려면 `ModifyDBInstance` API 또는 `modify-db-instance` AWS CLI를 사용하고 적절한 파라미터와 함께 새 마스터 사용자 암호를 지정합니다. 마스터 사용자가 인스턴스에 존재하지 않는 경우 마스터 사용자가 지정된 암호와 함께 생성됩니다.

각 DB 인스턴스에 관리 서비스를 제공하기 위해 DB 인스턴스가 생성될 때 `rdsadmin` 사용자가 만들어집니다. `rdsadmin` 계정을 삭제하려고 하거나, 계정 이름 또는 암호를 변경하려고 하거나, 계정 권한을 변경하려고 하면 오류가 발생합니다.

DB 인스턴스의 관리를 허용하기 위해 표준 `kill` 및 `kill_query` 명령이 제한되었습니다. MariaDB 및 MySQL에서는 DB 인스턴스에서 사용자 세션 또는 쿼리를 종료할 수 있도록 Amazon RDS 명령 `mysql.rds_kill`, `mysql.rds_kill_query` 및 `mysql.rds_kill_query_id`가 제공됩니다.

# RDS for MariaDB용 암호 확인 플러그인 사용
<a name="MariaDB.Concepts.PasswordValidationPlugins"></a>

RDS for MariaDB 버전 11.4부터 다음 암호 확인 플러그인을 사용하여 데이터베이스 연결의 보안을 강화할 수 있습니다.
+ [simple\$1password\$1check](https://mariadb.com/kb/en/simple-password-check-plugin/) – 암호에 특정 유형의 특정 개수 이상의 문자가 포함되어 있는지 확인합니다.
+ [cracklib\$1password\$1check](https://mariadb.com/kb/en/cracklib_password_check/) – 암호가 [CrackLib](https://github.com/cracklib/cracklib) 라이브러리의 사전 파일에 나타나는지 확인합니다.

이러한 플러그인을 활성화하려면 DB 인스턴스와 연결된 DB 파라미터 그룹에서 파라미터 `simple_password_check` 또는 `cracklib_password_check`의 값을 `FORCE_PLUS_PERMANENT`로 설정합니다. 이 값을 설정하면 런타임 시 `UNINSTALL PLUGIN` 문을 사용하여 플러그인을 제거할 수 없습니다.

이러한 플러그인을 비활성화하려면 DB 인스턴스와 연결된 DB 파라미터 그룹에서 파라미터 `simple_password_check` 또는 `cracklib_password_check`의 값을 `OFF`로 설정합니다. 이 값을 설정하면 플러그인 검증 규칙이 더 이상 새 암호에 적용되지 않습니다.

파라미터 그룹에서 파라미터 값 설정에 대한 자세한 정보는 [Amazon RDS에서 DB 파라미터 그룹의 파라미터 수정](USER_WorkingWithParamGroups.Modifying.md) 섹션을 참조하세요.

# SSL/TLS를 사용하여 Amazon RDS의 MariaDB DB 인스턴스에 대한 클라이언트 연결 암호화
<a name="mariadb-ssl-connections"></a>

SSL(Secure Sockets Layer)은 클라이언트와 서버 간의 네트워크 연결을 보호하는 데 사용되는 업계 표준 프로토콜입니다. SSL 버전 3.0 이후로 이름이 전송 계층 보안(TLS)으로 변경되었습니다. Amazon RDS는 MariaDB DB 인스턴스에 SSL/TLS 암호화를 지원합니다. SSL/TLS를 사용하여 애플리케이션 클라이언트와 MariaDB DB 인스턴스 간의 연결을 암호화할 수 있습니다. SSL/TLS 지원 기능은 모든 AWS 리전에서 사용할 수 있습니다.

Amazon RDS를 사용하면 SSL/TLS로 MariaDB DB 인스턴스에 대한 클라이언트 연결을 암호화하고, MariaDB DB 인스턴스에 대한 모든 연결에 SSL/TLS를 요구하고, MySQL 명령줄 클라이언트에서 SSL/TLS(암호화됨)로 연결하여 전송 중 데이터를 보호할 수 있습니다. 다음 섹션에서는 Amazon RDS의 MariaDB DB 인스턴스에 대한 SSL/TLS 암호화를 구성하고 활용하는 방법에 대한 지침을 제공합니다.

**Topics**
+ [Amazon RDS의 MariaDB DB 인스턴스에 대한 SSL/TLS 지원](MariaDB.Concepts.SSLSupport.md)
+ [Amazon RDS의 MariaDB DB 인스턴스에 대한 특정 사용자 계정에 SSL/TLS 요구](MariaDB-ssl-connections.require-ssl-users.md)
+ [Amazon RDS의 MariaDB DB 인스턴스에 대한 모든 연결에 SSL/TLS 요구](mariadb-ssl-connections.require-ssl.md)
+ [MySQL 명령줄 클라이언트(암호화됨)에서 SSL/TLS를 사용하여 Amazon RDS의 MariaDB DB 인스턴스에 연결](USER_ConnectToMariaDBInstanceSSL.CLI.md)

# Amazon RDS의 MariaDB DB 인스턴스에 대한 SSL/TLS 지원
<a name="MariaDB.Concepts.SSLSupport"></a>

Amazon RDS가 SSL/TLS 인증서를 생성한 후 Amazon RDS가 인스턴스를 프로비저닝할 때 DB 인스턴스에 인증서를 설치합니다. 인증 기관이 서명하는 SSL 인증서에는 SSL/TLS 인증서에는 스푸핑 공격으로부터 보호해주는 SSL/TLS 인증서를 위한 일반 이름(CN)으로 DB 인스턴스 엔드포인트가 포함되어 있습니다.

Amazon RDS에서 생성하는 SSL/TLS 인증서는 신뢰할 수 있는 루트 개체이므로 대부분의 경우에 작동하지만, 애플리케이션에서 인증서 체인을 수락하지 않을 경우 사용하지 못할 수 있습니다. 애플리케이션에서 인증서 체인을 허용하지 않는 경우 중간 인증서로 사용 중인 AWS 리전에 연결해 보세요. 예를 들어, SSL/TLS를 사용하여 AWS GovCloud (US) 리전에 연결하려면 중간 인증서를 사용해야 합니다.

인증서 다운로드에 대한 자세한 내용은 [SSL/TLS를 사용하여 DB 인스턴스 또는 클러스터 에 대한 연결 암호화](UsingWithRDS.SSL.md) 단원을 참조하세요. MySQL에서 SSL/TLS를 사용하는 방법에 대한 자세한 내용은 [새 SSL/TLS 인증서를 사용해 MariaDB 인스턴스에 연결할 애플리케이션 업데이트](ssl-certificate-rotation-mariadb.md) 섹션을 참조하세요.

Amazon RDS for MariaDB는 전송 계층 보안(TLS) 버전 1.3, 1.2, 1.1 및 1,0을 지원합니다. TLS 지원은 MariaDB 마이너 버전에 따라 달라집니다. 다음 테이블은 MariaDB 마이너 버전에 대한 TLS 지원을 보여줍니다.


| TLS 버전 | MariaDB 11.8 | MariaDB 11.4 | MariaDB 10.11 | MariaDB 10.6 | MariaDB 10.5 | MariaDB 10.4 | 
| --- | --- | --- | --- | --- | --- | --- | 
|  TLS 1.3  |  모든 마이너 버전  |  모든 마이너 버전  |  모든 마이너 버전  |  모든 마이너 버전  |  모든 마이너 버전  |  모든 마이너 버전  | 
|  TLS 1.2  |  모든 마이너 버전  |  모든 마이너 버전  |  모든 마이너 버전  |  모든 마이너 버전  |  모든 마이너 버전  |  모든 마이너 버전  | 
|  TLS 1.1  |  지원되지 않음  |  지원되지 않음  |  지원되지 않음  |  10.6.16 이하  |  10.5.23 이하  |  10.4.32 이하  | 
|  TLS 1.0  |  지원되지 않음  |  지원되지 않음  | 지원되지 않음 | 10.6.16 이하 |  10.5.23 이하  |  10.4.32 이하  | 

# Amazon RDS의 MariaDB DB 인스턴스에 대한 특정 사용자 계정에 SSL/TLS 요구
<a name="MariaDB-ssl-connections.require-ssl-users"></a>

Amazon RDS의 MariaDB DB 인스턴스에 대한 지정된 사용자 계정 연결을 위해 SSL/TLS 암호화가 필요할 수 있습니다. 데이터 기밀성이 우려되는 보안 정책을 적용하려면 민감한 정보를 무단 액세스 또는 가로채기로부터 보호하는 것이 중요합니다.

특정 사용자의 계정에 대해 SSL/TLS 연결을 요구하려면 MySQL 버전에 따라 다음 문 중 하나를 사용하여 사용자 계정 `encrypted_user`에서 SSL/TLS 연결을 요구하세요.

이렇게 하려면 다음 문을 사용하면 됩니다.

```
ALTER USER 'encrypted_user'@'%' REQUIRE SSL;
```

MariaDB와의 SSL/TLS 연결에 대한 자세한 내용은 MariaDB 설명서에서 [클라이언트 및 서버에 대한 연결 보안](https://mariadb.com/kb/en/securing-connections-for-client-and-server/)을 참조하세요.

# Amazon RDS의 MariaDB DB 인스턴스에 대한 모든 연결에 SSL/TLS 요구
<a name="mariadb-ssl-connections.require-ssl"></a>

`require_secure_transport` 파라미터를 사용하여 MariaDB DB 인스턴스에 대한 모든 사용자 연결이 SSL/TLS를 사용하도록 요구합니다. 버전 11.4 이하의 경우 `require_secure_transport` 파라미터는 기본적으로 `OFF`로 설정됩니다. 11.8 이상 버전의 경우 기본값은 `ON`으로 설정되어 DB 인스턴스에 연결하기 위해 SSL/TLS를 적용합니다. 안전하지 않은 연결이 필요한 경우 `require_secure_transport` 파라미터를 `OFF`로 변경할 수 있습니다.

**참고**  
`require_secure_transport` 파라미터는 MariaDB 버전 10.5 이상에서만 지원됩니다.

`require_secure_transport` 파라미터 값은 DB 인스턴스의 DB 파라미터 그룹을 업데이트하여 설정할 수 있습니다. 변경 사항을 적용하기 위해 DB 인스턴스를 재부팅할 필요가 없습니다.

DB 클러스터에 대해 `require_secure_transport` 파라미터를 `ON`으로 설정하면 암호화된 연결을 설정할 수 있는 경우 데이터베이스 클라이언트가 인스턴스에 연결할 수 있습니다. 그렇지 않으면 다음과 유사한 오류 메시지가 클라이언트에 반환됩니다.

```
ERROR 1045 (28000): Access denied for user 'USER'@'localhost' (using password: YES | NO)
```

파라미터 설정에 대한 자세한 내용은 [Amazon RDS에서 DB 파라미터 그룹의 파라미터 수정](USER_WorkingWithParamGroups.Modifying.md)을 참조하세요.

`require_secure_transport` 파라미터에 대한 자세한 내용은 [MariaDB 설명서](https://mariadb.com/docs/ent/ref/mdb/system-variables/require_secure_transport/)를 참조하세요.

# MySQL 명령줄 클라이언트(암호화됨)에서 SSL/TLS를 사용하여 Amazon RDS의 MariaDB DB 인스턴스에 연결
<a name="USER_ConnectToMariaDBInstanceSSL.CLI"></a>

`mysql` 클라이언트 프로그램 파라미터는 MySQL 5.7 버전, MySQL 8.0 버전 또는 MariaDB 버전을 사용하는 경우 약간 다릅니다.

사용 중인 버전을 확인하려면 `--version` 옵션을 사용하여 `mysql` 명령을 실행합니다. 다음 예에서는 출력은 클라이언트 프로그램이 MariaDB의 프로그램임을 나타냅니다.

```
$ mysql --version
mysql  Ver 15.1 Distrib 10.5.15-MariaDB, for osx10.15 (x86_64) using readline 5.1
```

Amazon Linux, CentOS, SUSE 및 Debian과 같은 대부분의 Linux 배포판은 MySQL을 MariaDB로 대체했으며 `mysql` 버전은 MariaDB에서 가져온 것입니다.

다음 단계에 따라 SSL/TLS를 사용하여 DB 인스턴스에 연결합니다.

**MySQL 명령줄 클라이언트를 사용하여 SSL/TLS를 통해 DB 인스턴스에 연결하려면**

1. 모든 AWS 리전에 적용되는 루트 인증서를 다운로드할 수 있습니다.

   인증서 다운로드에 대한 자세한 내용은 [SSL/TLS를 사용하여 DB 인스턴스 또는 클러스터 에 대한 연결 암호화](UsingWithRDS.SSL.md) 단원을 참조하세요.

1. MySQL 명령줄 클라이언트를 사용하여 SSL/TLS를 통해 DB 인스턴스에 연결합니다. `-h` 파라미터의 경우 해당 DB 인스턴스의 DNS 이름(엔드포인트)로 대체합니다. `--ssl-ca` 파라미터는 해당하는 SSL/TLS 인증서 파일 이름으로 대체합니다. `-P` 파라미터에는 DB 인스턴스의 포트로 대체합니다. `-u` 파라미터에는 마스터 사용자와 같이 유효한 데이터베이스 사용자의 사용자 이름으로 대체합니다. 입력 프롬프트가 표시되면 마스터 사용자 암호를 입력합니다.

   다음 예제는 MariaDB 클라이언트를 사용하여 `--ssl-ca` 파라미터를 통해 클라이언트를 시작하는 방법을 보여줍니다.

   ```
   mysql -h mysql–instance1.123456789012.us-east-1.rds.amazonaws.com --ssl-ca=global-bundle.pem --ssl -P 3306 -u myadmin -p
   ```

   SSL/TLS 연결에서 SSL/TLS 인증서의 엔드포인트와 비교하여 DB 인스턴스 엔드포인트를 확인하도록 요구할 수 있습니다.

   ```
   mysql -h mysql–instance1.123456789012.us-east-1.rds.amazonaws.com --ssl-ca=global-bundle.pem --ssl-verify-server-cert -P 3306 -u myadmin -p
   ```

   다음 예제는 MySQL 5.7 클라이언트 이후 버전의 경우 `--ssl-ca` 파라미터를 사용하여 클라이언트를 시작하는 방법을 보여줍니다.

   ```
   mysql -h mysql–instance1.123456789012.us-east-1.rds.amazonaws.com --ssl-ca=global-bundle.pem --ssl-mode=REQUIRED -P 3306 -u myadmin -p
   ```

1. 입력 프롬프트가 표시되면 마스터 사용자 암호를 입력합니다.

다음과 유사한 출력 화면이 표시되어야 합니다.

```
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 31
Server version: 10.6.10-MariaDB-log Source distribution
 
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
  
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>
```

# 새 SSL/TLS 인증서를 사용해 MariaDB 인스턴스에 연결할 애플리케이션 업데이트
<a name="ssl-certificate-rotation-mariadb"></a>

2023년 1월 13일부터 Amazon RDS는 보안 소켓 계층(SSL) 또는 전송 계층 보안(TLS)을 사용해 RDS DB 인스턴스에 연결하기 위한 용도의 새 인증 기관(CA) 인증서를 게시하였습니다. 아래에서 새 인증서를 사용하기 위해 애플리케이션을 업데이트하는 방법에 관한 정보를 찾으실 수 있습니다.

이 주제는 애플리케이션이 DB 인스턴스에 연결하기 위해 인증서 확인이 필요한지 판단하는 데 도움이 됩니다.

**참고**  
어떤 애플리케이션은 서버에서 인증서를 성공적으로 확인할 수 있는 경우에만 MariaDB에 연결하도록 구성되어 있습니다. 이러한 애플리케이션의 경우 클라이언트 애플리케이션 트러스트 스토어를 업데이트하여 새 CA 인증서를 포함해야 합니다.  
`disabled`, `preferred` 및 `required`의 SSL 모드를 지정할 수 있습니다. `preferred` SSL 모드를 사용할 때 CA 인증서가 없거나 최신 상태가 아닌 경우 연결이 SSL을 사용하지 않는 것으로 폴백되고 여전히 성공적으로 연결됩니다.  
`preferred` 모드는 피하는 것이 좋습니다. `preferred` 모드에서 연결이 잘못된 인증서가 발견되면 모드에서 암호화 사용을 중지하고 암호화되지 않은 상태로 진행합니다.

클라이언트 애플리케이션 트러스트 스토어에서 CA 인증서를 업데이트한 후에는 DB 인스턴스에서 인증서를 교환할 수 있습니다. 이 절차를 프로덕션 환경에서 구현하기 전에 개발 또는 스테이징 환경에서 테스트해볼 것을 적극 권장합니다.

인증서 교환에 대한 자세한 내용은 [SSL/TLS 인증서 교체](UsingWithRDS.SSL-certificate-rotation.md) 단원을 참조하십시오. 인증서 다운로드에 대한 자세한 내용은 [SSL/TLS를 사용하여 DB 인스턴스 또는 클러스터 에 대한 연결 암호화](UsingWithRDS.SSL.md) 단원을 참조하십시오. MariaDB DB 인스턴스에서 SSL/TLS를 사용하는 방법에 관한 자세한 내용은 [Amazon RDS의 MariaDB DB 인스턴스에 대한 SSL/TLS 지원](MariaDB.Concepts.SSLSupport.md) 단원을 참조하십시오.

**Topics**
+ [클라이언트에서 연결을 위해 인증서 확인이 필요한지 여부 확인](#ssl-certificate-rotation-mariadb.determining)
+ [애플리케이션 트러스트 스토어 업데이트](#ssl-certificate-rotation-mariadb.updating-trust-store)
+ [SSL 연결 설정을 위한 Java 코드 예시](#ssl-certificate-rotation-mariadb.java-example)

## 클라이언트에서 연결을 위해 인증서 확인이 필요한지 여부 확인
<a name="ssl-certificate-rotation-mariadb.determining"></a>

JDBC 클라이언트 및 MySQL 클라이언트에서 연결 시 인증서 확인이 필요한지 여부를 확인할 수 있습니다.

### JDBC
<a name="ssl-certificate-rotation-mysql.determining-client.jdbc"></a>

아래의 MySQL 커넥터/J 8.0 관련 예시에서는 애플리케이션의 JDBC 연결 속성을 확인하여 성공적인 연결을 위해 유효한 인증서가 필요한지 여부를 판단하는 한 가지 방법을 보여줍니다. MySQL에 대한 모든 JDBC 연결 옵션에 대한 자세한 내용은 MySQL 문서의 [구성 속성](https://dev.mysql.com/doc/connector-j/en/connector-j-reference-configuration-properties.html)을 참조하십시오.

MySQL 커넥터/J 8.0을 사용 중인 경우 다음 예시와 같이 연결 속성에서 `sslMode`가 `VERIFY_CA` 또는 `VERIFY_IDENTITY`로 설정되어 있다면 SSL 연결 시 서버 CA 인증서에 대한 확인이 필요합니다.

```
Properties properties = new Properties();
properties.setProperty("sslMode", "VERIFY_IDENTITY");
properties.put("user", DB_USER);
properties.put("password", DB_PASSWORD);
```

**참고**  
데이터베이스에 연결할 때 SSL/TLS를 사용하도록 애플리케이션을 명시적으로 구성하지 않았더라도 MySQL Java Connector v5.1.38 이상 또는 MySQL Java Connector v8.0.9 이상을 사용하여 데이터베이스에 연결하는 경우, 이러한 클라이언트 드라이버는 기본적으로 SSL/TLS를 사용합니다. 또한 SSL/TLS 사용 시 부분 인증서 확인을 수행하고 데이터베이스 서버 인증서가 만료되면 연결에 실패합니다.  
보안 모범 사례로 여기에 표시된 프롬프트 이외의 암호를 지정하는 것이 좋습니다.

### MySQL
<a name="ssl-certificate-rotation-mysql.determining-client.mysql"></a>

MySQL 클라이언트에 관한 다음 예시에서는 스크립트의 MySQL 연결을 확인하여 성공적인 연결을 위해 유효한 인증서가 필요한지 여부를 판단하는 두 가지 방법을 보여줍니다. MySQL 클라이언트의 모든 연결 옵션에 대한 자세한 내용은 MySQL 문서의 [암호화된 연결을 위한 클라이언트 측 구성](https://dev.mysql.com/doc/refman/en/using-encrypted-connections.html#using-encrypted-connections-client-side-configuration)을 참조하십시오.

MySQL 5.7 또는 MySQL 8.0 클라이언트를 사용 중인 경우 다음 예시와 같이 `--ssl-mode` 옵션에 대해 `VERIFY_CA` 또는 `VERIFY_IDENTITY`을 지정했다면 SSL 연결 시 서버 CA 인증서에 대한 확인이 필요합니다.

```
mysql -h mysql-database.rds.amazonaws.com -uadmin -ppassword --ssl-ca=/tmp/ssl-cert.pem --ssl-mode=VERIFY_CA                
```

MySQL 5.6 클라이언트를 사용 중인 경우 다음 예시와 같이 `--ssl-verify-server-cert` 옵션을 지정했다면 SSL 연결 시 서버 CA 인증서에 대한 확인이 필요합니다.

```
mysql -h mysql-database.rds.amazonaws.com -uadmin -ppassword --ssl-ca=/tmp/ssl-cert.pem --ssl-verify-server-cert            
```

## 애플리케이션 트러스트 스토어 업데이트
<a name="ssl-certificate-rotation-mariadb.updating-trust-store"></a>

MySQL 애플리케이션의 트러스트 스토어 업데이트에 대한 정보는 MariaDB 문서에서 [MariaDB Connector/J와 함께 TLS/SSL 사용](https://mariadb.com/kb/en/library/using-tls-ssl-with-mariadb-java-connector/)을 참조하십시오.

루트 인증서 다운로드에 대한 자세한 내용은 [SSL/TLS를 사용하여 DB 인스턴스 또는 클러스터 에 대한 연결 암호화](UsingWithRDS.SSL.md) 단원을 참조하십시오.

인증서를 가져오는 샘플 스크립트는 [트러스트 스토어로 인증서를 가져오기 위한 샘플 스크립트](UsingWithRDS.SSL-certificate-rotation.md#UsingWithRDS.SSL-certificate-rotation-sample-script) 섹션을 참조하세요.

**참고**  
트러스트 스토어를 업데이트할 때 새 인증서를 추가할 뿐 아니라 이전 인증서를 유지할 수도 있습니다.

애플리케이션에서 MariaDB Connector/J JDBC 드라이버를 사용 중인 경우 애플리케이션에서 다음 속성을 설정하십시오.

```
System.setProperty("javax.net.ssl.trustStore", certs);
System.setProperty("javax.net.ssl.trustStorePassword", "password");
```

애플리케이션을 시작할 때 다음 속성을 설정하십시오.

```
java -Djavax.net.ssl.trustStore=/path_to_truststore/MyTruststore.jks -Djavax.net.ssl.trustStorePassword=my_truststore_password com.companyName.MyApplication        
```

**참고**  
보안 모범 사례로 여기에 표시된 프롬프트 이외의 암호를 지정하는 것이 좋습니다.

## SSL 연결 설정을 위한 Java 코드 예시
<a name="ssl-certificate-rotation-mariadb.java-example"></a>

다음은 JDBC를 사용하여 SSL 연결을 설정하는 방법을 보여 주는 코드 예입니다.

```
private static final String DB_USER = "admin";

        private static final String DB_USER = "user name";
        private static final String DB_PASSWORD = "password";
        // This key store has only the prod root ca.
        private static final String KEY_STORE_FILE_PATH = "file-path-to-keystore";
        private static final String KEY_STORE_PASS = "keystore-password";
        
    public static void main(String[] args) throws Exception {
        Class.forName("org.mariadb.jdbc.Driver");

        System.setProperty("javax.net.ssl.trustStore", KEY_STORE_FILE_PATH);
        System.setProperty("javax.net.ssl.trustStorePassword", KEY_STORE_PASS);

        Properties properties = new Properties();
        properties.put("user", DB_USER);
        properties.put("password", DB_PASSWORD);


        Connection connection = DriverManager.getConnection("jdbc:mysql://ssl-mariadb-public.cni62e2e7kwh.us-east-1.rds.amazonaws.com:3306?useSSL=true",properties);
        Statement stmt=connection.createStatement();

        ResultSet rs=stmt.executeQuery("SELECT 1 from dual");

        return;
    }
```

**중요**  
데이터베이스 연결에서 SSL/TLS를 사용함을 확인하고 애플리케이션 트러스트 스토어를 업데이트한 후에는 데이터베이스에서 rds-ca-rsa2048-g1 인증서를 사용하도록 업데이트할 수 있습니다. 지침은 [DB 인스턴스또는 클러스터를 수정하여 CA 인증서 업데이트](UsingWithRDS.SSL-certificate-rotation.md#UsingWithRDS.SSL-certificate-rotation-updating)의 3단계를 참조하십시오.  
보안 모범 사례로 여기에 표시된 프롬프트 이외의 암호를 지정하는 것이 좋습니다.

# Amazon RDS Optimized Reads로 RDS for MariaDB 쿼리 성능 개선
<a name="rds-optimized-reads-mariadb"></a>

Amazon RDS Optimized Reads로 RDS for MariaDB의 쿼리 처리 속도를 높일 수 있습니다. RDS Optimized Reads를 사용하는 RDS for MariaDB DB 인스턴스는 이를 사용하지 않는 DB 인스턴스에 비해 쿼리 처리 속도가 최대 2배 더 빠릅니다.

**Topics**
+ [RDS Optimized Reads 개요](#rds-optimized-reads-mariadb-overview)
+ [RDS Optimized Reads 사용 사례](#rds-optimized-reads-mariadb-use-cases)
+ [RDS Optimized Reads 모범 사례](#rds-optimized-reads-mariadb-best-practices)
+ [RDS Optimized Reads 사용](#rds-optimized-reads-mariadb-using)
+ [RDS Optimized Reads를 사용하는 DB 인스턴스 모니터링](#rds-optimized-reads-mariadb-monitoring)
+ [RDS Optimized Reads 제한 사항](#rds-optimized-reads-mariadb-limitations)

## RDS Optimized Reads 개요
<a name="rds-optimized-reads-mariadb-overview"></a>

RDS Optimized Reads가 켜져 있는 RDS for MariaDB DB 인스턴스를 사용하면 DB 인스턴스가 인스턴스 스토어를 사용하여 더 빠른 쿼리 성능을 얻을 수 있습니다. *인스턴스 스토어*는 DB 인스턴스에 블록 수준의 임시 스토리지를 제공합니다. 스토리지는 호스트 서버에 물리적으로 연결된 NVMe(Non-Volatile Memory Express) 솔리드 스테이트 드라이브(SSD)에 있습니다. 이 스토리지는 짧은 지연 시간, 높은 임의 I/O 성능, 높은 순차 읽기 처리량(throughput)에 최적화되어 있습니다.

RDS Optimized Reads는 DB 인스턴스가 db.m5d 또는 db.m6gd 같은 DB 인스턴스 클래스를 인스턴스 스토어와 함께 사용할 때 기본적으로 켜집니다. RDS Optimized Reads를 사용하면 일부 임시 객체가 인스턴스 스토어에 저장됩니다. 이러한 임시 객체에는 내부 임시 파일, 내부 온디스크 임시 테이블, 메모리 맵 파일, 이진 로그(binlog) 캐시 파일이 포함됩니다. 인스턴스 스토어 유형에 대한 자세한 내용은 *Linux 인스턴스용 Amazon Elastic Compute Cloud 사용 설명서*의 [Amazon EC2 인스턴스 스토어](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html) 섹션을 참조하세요.

쿼리 처리를 위해 MariaDB에서 임시 객체를 생성하는 워크로드는 인스턴스 스토어를 활용하여 쿼리를 더 빠르게 처리할 수 있습니다. 이러한 유형의 워크로드에는 정렬, 해시 집계, 고부하 조인, CTE(Common Table Expression) 및 인덱싱되지 않은 열에 대한 쿼리가 포함됩니다. 이러한 인스턴스 스토어 볼륨은 영구 Amazon EBS 스토리지에 사용되는 스토리지 구성과 관계없이 더 높은 IOPS와 성능을 제공합니다. RDS Optimized Reads는 임시 객체에 대한 작업을 인스턴스 스토어로 오프로드하므로 이제 영구 객체에 대한 작업에 영구 스토리지(Amazon EBS)의 초당 입출력 작업 처리량(IOPS) 또는 처리량(throughput)을 사용할 수 있습니다. 이러한 작업에는 일반 데이터 파일 읽기 및 쓰기와 플러싱 및 버퍼 병합 삽입과 같은 백그라운드 엔진 작업이 포함됩니다.

**참고**  
수동 및 자동 RDS 스냅샷에는 모두 영구 객체를 위한 엔진 파일만 포함됩니다. 인스턴스 스토어에서 생성된 임시 객체는 RDS 스냅샷에 포함되지 않습니다.

## RDS Optimized Reads 사용 사례
<a name="rds-optimized-reads-mariadb-use-cases"></a>

쿼리 실행을 위해 내부 테이블이나 파일 같은 임시 객체에 크게 의존하는 워크로드가 있는 경우 RDS Optimized Reads를 켜는 것이 좋습니다. RDS Optimized Reads의 사용 사례는 다음과 같습니다.
+ 복잡한 CTE(Common Table Expression), 파생된 테이블, 그룹화 작업을 사용하여 분석 쿼리를 실행하는 애플리케이션
+ 최적화되지 않은 쿼리로 많은 읽기 트래픽을 처리하는 읽기 전용 복제본
+ `GROUP BY` 및 `ORDER BY` 절이 있는 쿼리와 같이 복잡한 작업이 필요한 온디맨드 또는 동적 보고 쿼리를 실행하는 애플리케이션
+ 쿼리 처리를 위해 내부 임시 테이블을 사용하는 워크로드

  엔진 상태 변수 `created_tmp_disk_tables`를 모니터링하여 DB 인스턴스에 생성된 디스크 기반 임시 테이블의 수를 확인할 수 있습니다.
+ 직접 또는 절차에 따라 대형 임시 테이블을 생성하여 중간 결과를 저장하는 애플리케이션
+ 인덱싱되지 않은 열에서 그룹화 또는 정렬 작업을 수행하는 데이터베이스 쿼리

## RDS Optimized Reads 모범 사례
<a name="rds-optimized-reads-mariadb-best-practices"></a>

RDS Optimized Reads에 대한 다음 모범 사례를 따릅니다.
+ 실행 중 인스턴스 스토어가 가득 차서 쿼리가 실패하는 경우에 대비하여 읽기 전용 쿼리의 재시도 로직을 추가합니다.
+ CloudWatch 지표 `FreeLocalStorage`를 사용하여 인스턴스 스토어에서 사용 가능한 스토리지 공간을 모니터링합니다. DB 인스턴스의 워크로드로 인해 인스턴스 스토어가 한도에 도달하면 더 큰 DB 인스턴스 클래스를 사용하도록 DB 인스턴스를 수정하세요.
+ DB 인스턴스의 메모리가 충분하지만 여전히 인스턴스 스토어의 스토리지 한도에 도달하면 `binlog_cache_size` 값을 늘려 세션별 binlog 항목을 메모리에 유지합니다. 이 구성은 binlog 항목을 디스크의 임시 binlog 캐시 파일에 쓰는 것을 방지합니다.

  `binlog_cache_size` 파라미터는 세션별로 다릅니다. 새 세션마다 값을 변경할 수 있습니다. 이 파라미터를 설정하면 피크 워크로드 중에 DB 인스턴스의 메모리 사용률을 높일 수 있습니다. 따라서 애플리케이션의 워크로드 패턴과 DB 인스턴스의 가용 메모리를 기반으로 파라미터 값을 높이는 것을 고려해 보세요.
+ `binlog_format`에 기본값 `MIXED`를 사용합니다. 트랜잭션 크기에 따라 `binlog_format`을 `ROW`로 설정하면 인스턴스 스토어에 큰 binlog 캐시 파일이 생성될 수 있습니다.
+ 단일 트랜잭션에서 대량 변경을 수행하지 마세요. 이러한 유형의 트랜잭션은 인스턴스 스토어에 대용량 binlog 캐시 파일을 생성할 수 있으며, 인스턴스 스토어가 가득 차면 문제가 발생할 수 있습니다. binlog 캐시 파일의 스토리지 사용을 최소화하려면 쓰기를 여러 개의 작은 트랜잭션으로 분할하는 것이 좋습니다.

## RDS Optimized Reads 사용
<a name="rds-optimized-reads-mariadb-using"></a>

단일 AZ DB 인스턴스 배포 또는 다중 AZ DB 인스턴스 배포에서 다음 DB 인스턴스 클래스 중 하나를 사용하여 RDS for MariaDB DB 인스턴스를 프로비저닝하면 DB 인스턴스는 자동으로 RDS Optimized Reads를 사용합니다.

RDS Optimized Read를 켜려면 다음 중 하나를 수행합니다.
+ 이러한 DB 인스턴스 클래스 중 하나를 사용하여 RDS for MariaDB DB 인스턴스를 생성합니다. 자세한 내용은 [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md) 섹션을 참조하세요.
+ 이러한 DB 인스턴스 클래스 중 하나를 사용하여 기존 RDS for MariaDB DB 인스턴스를 수정합니다. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

RDS Optimized Reads는 로컬 NVMe SSD 스토리지가 있는 DB 인스턴스 클래스 중 하나 이상이 지원되는 모든 AWS 리전에서 사용 가능합니다. DB 인스턴스 클래스에 대한 자세한 내용은 [DB 인스턴스 클래스](Concepts.DBInstanceClass.md) 섹션을 참조하세요.

DB 인스턴스 클래스 가용성은 AWS 리전에 따라 다릅니다. 특정 AWS 리전 클래스에서 DB 인스턴스 클래스가 지원되는지 여부를 확인하려면 [AWS 리전에서 DB 인스턴스 클래스 지원 확인](Concepts.DBInstanceClass.RegionSupport.md)를 참조하세요.

RDS Optimized Reads를 사용하지 않으려면 기능을 지원하는 DB 인스턴스 클래스를 사용하지 않도록 DB 인스턴스를 수정하세요.

## RDS Optimized Reads를 사용하는 DB 인스턴스 모니터링
<a name="rds-optimized-reads-mariadb-monitoring"></a>

다음 CloudWatch 지표를 사용하여 RDS Optimized Reads를 사용하는 DB 인스턴스를 모니터링할 수 있습니다.
+ `FreeLocalStorage`
+ `ReadIOPSLocalStorage`
+ `ReadLatencyLocalStorage`
+ `ReadThroughputLocalStorage`
+ `WriteIOPSLocalStorage`
+ `WriteLatencyLocalStorage`
+ `WriteThroughputLocalStorage`

이러한 지표는 사용 가능한 인스턴스 스토어 스토리지, IOPS 및 처리량(throughput)에 대한 데이터를 제공합니다. 이러한 지표에 대한 자세한 내용은 섹션을 참조하세요.[Amazon RDS에 대한 Amazon CloudWatch 지표](rds-metrics.md#rds-cw-metrics-instance)

## RDS Optimized Reads 제한 사항
<a name="rds-optimized-reads-mariadb-limitations"></a>

RDS Optimized Reads에는 다음과 같은 제한 사항이 적용됩니다.
+ RDS Optimized Reads는 다음 RDS for MariaDB 버전에서 지원됩니다.
  + 11.4 이상 메이저 릴리스의 사용 가능한 모든 마이너 버전
  + 10.11.4 이상의 10.11 버전
  + 10.6.7 이상의 10.6 버전
  + 10.5.16 이상의 10.5 버전
  + 10.4.25 이상의 10.4 버전

  RDS for MariaDB 버전에 대한 자세한 내용은 [Amazon RDS MariaDB 버전](MariaDB.Concepts.VersionMgmt.md) 섹션을 참조하세요.
+ RDS Optimized Reads를 지원하는 DB 인스턴스 클래스에서는 임시 객체의 위치를 영구 스토리지(Amazon EBS)로 변경할 수 없습니다.
+ DB 인스턴스에서 이진 로깅이 활성화된 경우 최대 트랜잭션 크기는 인스턴스 스토어의 크기에 의해 제한됩니다. MariaDB에서 `binlog_cache_size` 값보다 더 많은 스토리지가 필요한 세션은 인스턴스 스토어에 생성된 임시 binlog 캐시 파일에 트랜잭션 변경 사항을 기록합니다.
+ 인스턴스 스토어가 가득 차면 트랜잭션이 실패할 수 있습니다.

# Amazon RDS Optimized Writes for MariaDB를 통한 쓰기 성능 개선
<a name="rds-optimized-writes-mariadb"></a>

RDS Optimized Writes for MariaDB를 사용하여 쓰기 트랜잭션의 성능을 개선할 수 있습니다. RDS for MariaDB 데이터베이스에서 RDS Optimized Writes를 사용하는 경우 쓰기 트랜잭션 처리량을 최대 2배까지 높일 수 있습니다.

**Topics**
+ [RDS Optimized Writes 개요](#rds-optimized-writes-overview)
+ [RDS Optimized Writes 사용](#rds-optimized-writes-using-mariadb)
+ [기존 데이터베이스에서 RDS 최적화된 쓰기 활성화](#rds-optimized-writes-modify-enable-mariadb)
+ [RDS Optimized Writes 제한 사항](#rds-optimized-writes-limitations-mariadb)

## RDS Optimized Writes 개요
<a name="rds-optimized-writes-overview"></a>

RDS Optimized Writes를 켜면 이중 쓰기 버퍼를 사용할 필요 없이 내구성이 뛰어난 스토리지로 데이터를 플러싱할 때 RDS for MariaDB 데이터베이스가 데이터를 한 번만 씁니다. 데이터베이스는 향상된 성능과 함께 안정적인 데이터베이스 트랜잭션을 위한 ACID 속성 보호를 지속적으로 제공합니다.

MariaDB 같은 관계형 데이터베이스는 신뢰할 수 있는 데이터베이스 트랜잭션을 위한 *ACID(원자성, 일관성, 격리, 내구성) 속성*을 제공합니다. 이러한 속성을 제공하기 위해 MariaDB는 *이중 쓰기 버퍼*라는 데이터 스토리지 영역을 사용하여 부분 페이지 쓰기 오류를 방지합니다. 이러한 오류는 정전의 경우처럼 데이터베이스에서 페이지를 업데이트하는 동안 하드웨어 장애가 있을 때 발생합니다. MariaDB 데이터베이스는 부분 페이지 쓰기를 감지하고 이중 쓰기 버퍼에 있는 페이지 복사본으로 복구할 수 있습니다. 이 기술은 보호 기능을 제공하지만 추가 쓰기 작업도 초래합니다. MariaDB 이중 쓰기 버퍼에 대한 자세한 내용은 MariaDB 설명서의 [InnoDB 이중 쓰기 버퍼](https://mariadb.com/kb/en/innodb-doublewrite-buffer/)를 참조하세요.

RDS Optimized Writes를 켜면 이중 쓰기 버퍼를 사용하지 않고 내구성이 뛰어난 스토리지로 데이터를 플러싱할 때 RDS for MariaDB 데이터베이스가 데이터를 한 번만 씁니다. RDS Optimized Writes는 RDS for MariaDB 데이터베이스에서 쓰기가 많은 워크로드를 실행하는 경우에 유용합니다. 쓰기 작업이 많은 데이터베이스의 예로는 디지털 결제, 금융 거래, 게임 애플리케이션을 지원하는 데이터베이스가 있습니다.

이러한 데이터베이스는 AWS Nitro System을 사용하는 DB 인스턴스 클래스에서 실행됩니다. 이러한 시스템의 하드웨어 구성으로 인해 데이터베이스는 한 단계로 안정적이고 내구성 있게 16KiB 페이지를 데이터 파일에 직접 쓸 수 있습니다. AWS Nitro 시스템은 RDS Optimized Writes를 가능하게 합니다.

새 데이터베이스 매개 변수 `rds.optimized_writes`를 설정하여 RDS for MariaDB 데이터베이스의 RDS Optimized Writes 기능을 제어할 수 있습니다. RDS for MariaDB의 DB 파라미터 그룹에서 이 파라미터에 액세스할 수 있는 버전은 다음과 같습니다.
+ 11.8 이상 메이저 릴리스의 사용 가능한 모든 마이너 버전
+ 11.4.3 이상의 11.4 버전
+ 10.11.4 이상의 10.11 버전
+ 10.6.10 이상의 10.6 버전

다음 값을 사용하여 파라미터를 설정합니다.
+ `AUTO` - 데이터베이스에서 지원하는 경우 RDS Optimized Writes를 켭니다. 데이터베이스에서 지원하지 않는 경우 RDS Optimized Writes를 해제합니다. 이 설정이 기본값입니다.
+ `OFF` - 데이터베이스에서 지원하더라도 RDS Optimized Writes를 해제합니다.

RDS Optimized Writes를 사용하도록 구성된 RDS for MariaDB 데이터베이스를 해당 기능을 지원하지 않는 DB 인스턴스 클래스로 마이그레이션하는 경우, RDS는 데이터베이스의 RDS Optimized Writes를 자동으로 해제합니다.

RDS Optimized Writes가 해제된 경우 데이터베이스는 MariaDB 이중 쓰기 버퍼를 사용합니다.

RDS for MariaDB 데이터베이스에서 RDS Optimized Writes를 사용하고 있는지 확인하려면 데이터베이스 `innodb_doublewrite` 파라미터의 현재 값을 확인하세요. 데이터베이스에서 RDS Optimized Writes를 사용 중인 경우 이 파라미터는 `FALSE`(`0`)로 설정됩니다.

## RDS Optimized Writes 사용
<a name="rds-optimized-writes-using-mariadb"></a>

RDS 콘솔, AWS CLI 또는 RDS API를 사용하여 RDS for MariaDB 데이터베이스를 생성할 때 RDS Optimized Writes를 켤 수 있습니다. 데이터베이스 생성 중에 다음 두 가지 조건이 모두 적용되는 경우 RDS Optimized Writes가 자동으로 켜집니다.
+ RDS Optimized Writes를 지원하는 DB 엔진 버전과 DB 인스턴스 클래스를 지정합니다.
  + RDS Optimized Writes는 다음 RDS for MariaDB 버전에서 지원됩니다.
    + 11.8 이상 메이저 릴리스의 사용 가능한 모든 마이너 버전
    + 11.4.3 이상의 11.4 버전
    + 10.11.4 이상의 10.11 버전
    + 10.6.10 이상의 10.6 버전

    RDS for MariaDB 버전에 대한 자세한 내용은 [Amazon RDS MariaDB 버전](MariaDB.Concepts.VersionMgmt.md) 섹션을 참조하세요.
  + RDS Optimized Writes는 다음 DB 인스턴스 클래스를 사용하는 RDS for MariaDB 데이터베이스에서 지원됩니다.
    + db.m7i
    + db.m7g
    + db.m6g
    + db.m6gd
    + db.m6i
    + db.m5
    + db.m5d
    + db.r7i
    + db.r7g
    + db.r6g
    + db.r6gd
    + db.r6i
    + db.r5
    + db.r5b
    + db.r5d
    + db.x2idn
    + db.x2iedn

    DB 인스턴스 클래스에 대한 자세한 내용은 [DB 인스턴스 클래스](Concepts.DBInstanceClass.md) 섹션을 참조하세요.

    DB 인스턴스 클래스 가용성은 AWS 리전에 따라 다릅니다. 특정 AWS 리전 클래스에서 DB 인스턴스 클래스가 지원되는지 여부를 확인하려면 [AWS 리전에서 DB 인스턴스 클래스 지원 확인](Concepts.DBInstanceClass.RegionSupport.md)를 참조하세요.
+ 데이터베이스에 연결된 파라미터 그룹에서는 `rds.optimized_writes` 파라미터가 `AUTO`로 설정됩니다. 기본 파라미터 그룹에서는 이 파라미터가 항상 `AUTO`로 설정됩니다.

RDS Optimized Writes를 지원하는 DB 엔진 버전과 DB 인스턴스 클래스를 사용하고 싶지만 이 기능은 사용하고 싶지 않을 경우, 데이터베이스를 생성할 때 사용자 지정 파라미터 그룹을 지정하세요. 이 파라미터 그룹에서 `rds.optimized_writes` 파라미터를 `OFF`로 설정합니다. 나중에 데이터베이스에서 RDS Optimized Writes를 사용하도록 하려면 파라미터를 `AUTO`로 설정하여 켤 수 있습니다. 사용자 지정 파라미터 그룹 및 파라미터 설정에 대한 자세한 내용은 [Amazon RDS의 파라미터 그룹](USER_WorkingWithParamGroups.md) 섹션을 참조하세요.

DB 인스턴스 생성에 대한 자세한 내용은 [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md) 섹션을 참조하세요.

### 콘솔
<a name="rds-optimized-writes-using-console"></a>

RDS 콘솔을 사용하여 RDS for MariaDB 데이터베이스를 생성할 때 RDS Optimized Writes를 지원하는 DB 엔진 버전 및 DB 인스턴스 클래스를 필터링할 수 있습니다. 필터를 켜면 사용 가능한 DB 엔진 버전 및 DB 인스턴스 클래스 중에서 선택할 수 있습니다.

RDS Optimized Writes를 지원하는 DB 엔진 버전을 선택하려면 **엔진 버전**에서 이를 지원하는 RDS for MariaDB DB 엔진 버전을 필터링한 다음 버전을 선택합니다.

![\[엔진 버전에 대해 Amazon RDS 최적화된 쓰기 필터가 켜져 있는 엔진 옵션 섹션.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/rds-optimized-writes-version-filter-mariadb.png)


**인스턴스 구성** 섹션에서 RDS Optimized Writes를 지원하는 DB 인스턴스 클래스를 필터링한 다음 DB 인스턴스 클래스를 선택합니다.

![\[DB 인스턴스 클래스에 대해 Amazon RDS 최적화된 쓰기 필터가 켜져 있는 인스턴스 구성 섹션.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/rds-optimized-writes-class-filter.png)


이러한 선택을 완료한 후 요구 사항에 맞는 다른 설정을 선택하고 콘솔을 사용하여 RDS for MariaDB 데이터베이스 생성을 완료할 수 있습니다.

### AWS CLI
<a name="rds-optimized-writes-using-cli"></a>

AWS CLI를 사용하여 DB 인스턴스를 만들려면 [create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) 명령을 실행합니다. `--engine-version` 및 `--db-instance-class` 값이 RDS Optimized Writes를 지원하는지 확인하세요. 또한 DB 인스턴스에 연결된 파라미터 그룹에서 `rds.optimized_writes` 파라미터가 `AUTO`로 설정되어 있는지 확인합니다. 다음 예제에서는 기본 파라미터 그룹을 DB 인스턴스와 연결합니다.

**Example RDS Optimized Writes를 사용하는 DB 인스턴스 생성**  
대상 LinuxmacOS, 또는Unix:  

```
1. aws rds create-db-instance \
2.     --db-instance-identifier mydbinstance \
3.     --engine mariadb \
4.     --engine-version 10.6.10 \
5.     --db-instance-class db.r5b.large \
6.     --manage-master-user-password \
7.     --master-username admin \
8.     --allocated-storage 200
```
Windows의 경우:  

```
1. aws rds create-db-instance ^
2.     --db-instance-identifier mydbinstance ^
3.     --engine mariadb ^
4.     --engine-version 10.6.10 ^
5.     --db-instance-class db.r5b.large ^
6.     --manage-master-user-password ^
7.     --master-username admin ^
8.     --allocated-storage 200
```

### RDS API
<a name="rds-optimized-writes-using-api"></a>

[CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) 작업을 사용하여 DB 인스턴스를 생성할 수 있습니다. 이 작업을 사용할 경우 `EngineVersion` 및 `DBInstanceClass` 값이 RDS Optimized Writes를 지원하는지 확인하세요. 또한 DB 인스턴스에 연결된 파라미터 그룹에서 `rds.optimized_writes` 파라미터가 `AUTO`로 설정되어 있는지 확인합니다.

## 기존 데이터베이스에서 RDS 최적화된 쓰기 활성화
<a name="rds-optimized-writes-modify-enable-mariadb"></a>

RDS 최적화된 쓰기를 켜도록 기존 RDS for MariaDB 데이터베이스를 수정하려면 지원되는 DB 엔진 버전 및 DB 인스턴스 클래스로 데이터베이스가 생성된 상태여야 합니다. 또한 RDS 최적화된 쓰기가 출시된 2023년 3월 7일 **이후에 생성한 데이터베이스여야 합니다. 필요한 기본 파일 시스템 구성이 릴리스 전에 생성된 데이터베이스의 구성과 호환되지 않기 때문입니다. 이러한 조건이 충족되면 `rds.optimized_writes` 파라미터를 `AUTO`로 설정하여 RDS 최적화된 쓰기를 활성화할 수 있습니다.

지원되는 엔진 버전, 인스턴스 클래스 또는 파일 시스템 구성으로 데이터베이스를 **생성하지 않은 경우 RDS 블루/그린 배포를 사용하여 지원되는 구성으로 마이그레이션할 수 있습니다. 블루/그린 배포를 생성하는 동안 다음을 수행하세요.
+ **그린 데이터베이스에서 Optimized Writes 활성화**를 선택하고 RDS 최적화된 쓰기를 지원하는 엔진 버전과 DB 인스턴스 클래스를 지정합니다. 지원되는 엔진 버전과 인스턴스 클래스의 목록은 [RDS Optimized Writes 사용](#rds-optimized-writes-using-mariadb) 섹션을 참조하세요.
+ **스토리지**에서 **스토리지 파일 시스템 구성 업그레이드**를 선택합니다. 이 옵션은 데이터베이스를 호환 가능한 기본 파일 시스템 구성으로 업그레이드합니다.

블루/그린 배포를 생성하는 도중 `rds.optimized_writes` 파라미터가 `AUTO`로 설정된 경우 그린 환경에서 RDS 최적화된 쓰기가 자동으로 활성화됩니다. 그런 다음 블루/그린 배포를 전환하여 그린 환경을 새로운 프로덕션 환경으로 승격합니다.

자세한 내용은 [Amazon RDS에서 블루/그린 배포 생성](blue-green-deployments-creating.md) 섹션을 참조하세요.

## RDS Optimized Writes 제한 사항
<a name="rds-optimized-writes-limitations-mariadb"></a>

스냅샷에서 RDS for MariaDB 데이터베이스를 복원할 때는 다음 조건이 모두 적용되는 경우에만 데이터베이스의 RDS 최적화된 쓰기를 켤 수 있습니다.
+ RDS Optimized Writes를 지원하는 데이터베이스에서 스냅샷이 생성되었습니다.
+ RDS Optimized Writes가 릴리스된 *이후에* 생성한 데이터베이스에서 스냅샷이 생성되었습니다.
+ RDS Optimized Writes를 지원하는 데이터베이스로 스냅샷이 복원됩니다.
+ 복원된 데이터베이스는 `rds.optimized_writes` 파라미터가 `AUTO`로 설정된 파라미터 그룹에 연결됩니다.

# MariaDB DB 엔진 업그레이드
<a name="USER_UpgradeDBInstance.MariaDB"></a>

Amazon RDS에서 새 데이터베이스 엔진 버전을 지원하는 경우, DB 인스턴스를 새 버전으로 업그레이드할 수 있습니다. MariaDB DB 인스턴스의 업그레이드에는 메이저 버전 업그레이드와 마이너 버전 업그레이드라는 두 가지 업그레이드가 있습니다.

*메이저 버전 업그레이드*에는 기존 애플리케이션과 호환되지 않는 데이터베이스 변경 사항이 포함될 수 있습니다. 따라서 DB 인스턴스의 메이저 버전 업그레이드를 수동으로 수행해야 합니다. DB 인스턴스를 수정하여 메이저 버전 업그레이드를 시작할 수 있습니다. 그러나 메이저 버전 업그레이드를 수행하기 전에 [RDS for MariaDB 메이저 버전 업그레이드](USER_UpgradeDBInstance.MariaDB.Major.md)의 지침을 따르는 것이 좋습니다.

반대로 *마이너 버전 업그레이드*에는 기존 애플리케이션과 호환되는 변경 사항만 포함됩니다. DB 인스턴스를 수정하여 마이너 버전 업그레이드를 수동으로 시작할 수 있습니다. 또는 DB 인스턴스를 생성하거나 수정할 때 **마이너 버전 자동 업그레이드** 옵션을 활성화할 수 있습니다. 이렇게 하면 Amazon RDS에서 새 버전을 테스트 및 승인한 후 DB 인스턴스가 자동으로 업그레이드됩니다. 업그레이드 수행에 대한 자세한 내용은 [DB 인스턴스 엔진 버전 업그레이드](USER_UpgradeDBInstance.Upgrading.md) 섹션을 참조하세요.

MariaDB DB 인스턴스가 읽기 전용 복제본을 사용하는 경우 소스 인스턴스를 업그레이드하기 전에 읽기 전용 복제본을 모두 업그레이드해야 합니다. DB 인스턴스를 다중 AZ 배포로 생성한 경우 라이터와 예비 복제본이 모두 업그레이드됩니다. 업그레이드가 완료될 때까지 DB 인스턴스를 사용할 수 없습니다.

MariaDB 지원 버전 및 버전 관리에 대한 자세한 내용은 [Amazon RDS MariaDB 버전](MariaDB.Concepts.VersionMgmt.md) 섹션을 참조하세요.

데이터베이스 엔진 업그레이드에는 다운타임이 필요합니다. 다운타임 시간은 DB 인스턴스의 크기에 따라 다릅니다.

또한 Amazon RDS는 업그레이드 롤아웃 정책을 지원하여 여러 데이터베이스 리소스 및 AWS 계정에서 자동 마이너 버전 업그레이드를 관리합니다. 자세한 내용은 [자동 마이너 버전 AWS Organizations 업그레이드에 업그레이드 롤아웃 정책 사용](RDS.Maintenance.AMVU.UpgradeRollout.md) 섹션을 참조하세요.

**작은 정보**  
블루/그린 배포를 사용하면 DB 인스턴스 업그레이드에 필요한 다운타임을 최소화할 수 있습니다. 자세한 내용은 [데이터베이스 업데이트에 Amazon RDS 블루/그린 배포 사용](blue-green-deployments.md) 섹션을 참조하세요.

**Topics**
+ [MariaDB 업그레이드 고려 사항](#USER_UpgradeDBInstance.MariaDB.Considerations)
+ [유효한 업그레이드 대상 찾기](#USER_UpgradeDBInstance.MariaDB.FindingTargets)
+ [MariaDB 버전 번호](USER_UpgradeDBInstance.MariaDB.VersionID.md)
+ [RDS for MariaDB의 RDS 버전 번호](USER_UpgradeDBInstance.MariaDB.rds.version.md)
+ [RDS for MariaDB 메이저 버전 업그레이드](USER_UpgradeDBInstance.MariaDB.Major.md)
+ [MariaDB DB 인스턴스 업그레이드](#USER_UpgradeDBInstance.MariaDB.Upgrading)
+ [RDS for MariaDB 마이너 버전 자동 업그레이드](USER_UpgradeDBInstance.MariaDB.Minor.md)
+ [RDS for MariaDB 데이터베이스 업그레이드 시 읽기 전용 복제본을 사용하여 가동 중지 시간 단축](USER_UpgradeDBInstance.MariaDB.ReducedDowntime.md)
+ [이벤트를 사용하여 RDS for MariaDB DB 엔진 업그레이드 모니터링](USER_UpgradeDBInstance.MariaDB.Monitoring.md)

## MariaDB 업그레이드 고려 사항
<a name="USER_UpgradeDBInstance.MariaDB.Considerations"></a>

Amazon RDS는 업그레이드 프로세스 중에 DB 스냅샷을 2개 이상 캡처합니다. Amazon RDS는 업그레이드를 변경하기 *전에* DB 인스턴스의 스냅샷을 최대 2개까지 캡처합니다. 업그레이드가 데이터베이스에 맞지 않는 경우에는 이 스냅샷을 복구하여 이전 버전을 실행하는 DB 인스턴스를 생성할 수 있습니다. Amazon RDS는 업그레이드가 완료되면 DB 인스턴스의 또 다른 스냅샷을 캡처합니다. Amazon RDS는 AWS Backup에서 DB 인스턴스의 백업을 관리하는지 여부에 관계없이 이러한 스냅샷을 생성합니다.

**참고**  
DB 인스턴스에 대한 백업 보존 기간을 0보다 큰 수로 설정하면 Amazon RDS는 DB 스냅샷만 캡처합니다. 백업 보존 기간을 변경하려면 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

업그레이드가 완료되면 이전 버전의 데이터베이스 엔진으로 되돌릴 수 없습니다. 이때 이전 버전으로 되돌리려면 첫 번째로 캡처한 DB 스냅샷을 복구하여 새로운 DB 인스턴스를 생성해야 합니다.

DB 인스턴스를 Amazon RDS가 지원하는 새 버전으로 업그레이드하는 시기는 사용자가 직접 관리합니다. 이러한 관리 수준은 특정 데이터베이스 버전과 호환성을 유지하거나 프로덕션 환경에 배포하기 전에 애플리케이션을 이용해 새 버전을 테스트하는 데 효과적입니다. 모든 준비를 마치면 일정에 가장 적합한 시기에 버전 업그레이드를 실행할 수 있습니다.

DB 인스턴스가 읽기 전용 복제본을 사용하는 경우 원본 인스턴스를 업그레이드하기 전에 읽기 전용 복제본부터 모두 업그레이드해야 합니다.

DB 인스턴스를 다중 AZ 배포로 생성한 경우에는 기본 DB 인스턴스와 예비 DB 인스턴스가 모두 업그레이드됩니다. 기본 DB 인스턴스와 예비 DB 인스턴스가 모두 동시에 업그레이드되므로 업그레이드가 끝날 때까지 작동 중단을 겪게 됩니다. 중단 시간은 데이터베이스 엔진, 엔진 버전 및 DB 인스턴스의 크기에 따라 달라집니다.

## 유효한 업그레이드 대상 찾기
<a name="USER_UpgradeDBInstance.MariaDB.FindingTargets"></a>

AWS Management Console을 사용하여 DB 인스턴스를 업그레이드하면 DB 인스턴스의 유효한 업그레이드 대상이 표시됩니다. 다음 AWS CLI 명령을 실행하여 DB 인스턴스의 유효한 업그레이드 대상을 식별할 수도 있습니다.

대상 LinuxmacOS, 또는Unix:

```
aws rds describe-db-engine-versions \
  --engine mariadb \
  --engine-version version_number \
  --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" --output text
```

Windows의 경우:

```
aws rds describe-db-engine-versions ^
  --engine mariadb ^
  --engine-version version_number ^
  --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" --output text
```

예를 들어 MariaDB 버전 10.5.17 DB 인스턴스의 유효한 업그레이드 대상을 식별하려면 다음 AWS CLI 명령을 실행합니다.

대상 LinuxmacOS, 또는Unix:

```
aws rds describe-db-engine-versions \
  --engine mariadb \
  --engine-version 10.5.17 \
  --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" --output text
```

Windows의 경우:

```
aws rds describe-db-engine-versions ^
  --engine mariadb ^
  --engine-version 10.5.17 ^
  --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" --output text
```

# MariaDB 버전 번호
<a name="USER_UpgradeDBInstance.MariaDB.VersionID"></a>

MariaDB용 RDS 데이터베이스 엔진의 버전 번호 지정 시퀀스는 major.minor.patch.YYYYMMDD 또는 major.minor.patch 형식(예: 10.11.5.R2.20231201 또는 10.4.30)입니다.**** 최대 크기는 MariaDB 엔진 버전에 따라 다릅니다.

**메이저**  
버전 번호의 정수 부분과 첫 번째 소수 부분 모두가 메이저 버전 번호입니다(예: 10.11). 메이저 버전 업그레이드는 버전 번호의 메이저 부분이 증가합니다. 예를 들어 10.5.20에서 10.6.12로 업그레이드하는 것은 메이저 버전 업그레이드입니다. 여기서 10.5과 10.6이 메이저 버전 번호입니다.******

**마이너**  
마이너 버전 번호는 버전 번호의 세 번째 부분입니다(예: 10.11.5의 5).

**패치**  
패치는 버전 번호의 네 번째 부분입니다(예: 10.11.5.R2의 R2). RDS 패치 버전에는 릴리스 후 마이너 버전에 추가된 중요한 버그 수정이 포함되어 있습니다.

**YYYYMMDD(날짜**  
날짜는 버전 번호의 다섯 번째 부분입니다(예: 10.11.5.R2.20231201의 20231201). RDS 날짜 버전은 보안 패치로 릴리스 후 마이너 버전에 추가된 중요한 보안 수정이 포함되어 있습니다. 엔진 동작을 변경할 수 있는 수정 사항은 포함되지 않습니다.

다음 표에서는 RDS for MariaDB 버전 10.11의 이름 지정 체계를 설명합니다.


| 10.11 마이너 버전 | 이름 지정 체계 | 
| --- | --- | 
| ≥5  | 새 DB 인스턴스는 major.minor.patch.YYMMDD를 사용합니다(예: 10.11.5.R2.20231201).** 기존 DB 인스턴스는 다음 메이저 또는 마이너 버전 업그레이드 전까지 major.minor.patch(예: 10.11.5.R2)를 사용할 수 있습니다.** | 
| 5 미만 |  기존 DB 인스턴스는 major.minor.patch를 사용합니다(예: 10.11.4.R2).**  | 

다음 표에서는 RDS for MariaDB 버전 10.6의 이름 지정 체계를 설명합니다.


| 10.6 마이너 버전 | 이름 지정 체계 | 
| --- | --- | 
| 14 이상 |  새 DB 인스턴스는 major.minor.patch.YYMMDD를 사용합니다(예: 10.6.14.R2.20231201).** 기존 DB 인스턴스는 다음 메이저 또는 마이너 버전 업그레이드 전까지 major.minor.patch(예: 10.6.14.R2)를 사용할 수 있습니다.** | 
| 14 미만 | 기존 DB 인스턴스는 major.minor.patch를 사용합니다(예: 10.6.13.R2).** | 

다음 표에서는 RDS for MariaDB 버전 10.5의 이름 지정 체계를 설명합니다.


| 10.5 마이너 버전 | 이름 지정 체계 | 
| --- | --- | 
| 21 이상 |  새 DB 인스턴스는 major.minor.patch.YYMMDD를 사용합니다(예: 10.5.21.R2.20231201).** 기존 DB 인스턴스는 다음 메이저 또는 마이너 버전 업그레이드 전까지 major.minor.patch(예: 10.5.21.R2)를 사용할 수 있습니다.** | 
| 21 미만 |  기존 DB 인스턴스는 major.minor.patch를 사용합니다(예: 10.5.20.R2).**  | 

다음 표에서는 RDS for MariaDB 버전 10.4의 이름 지정 체계를 설명합니다.


| 10.4 마이너 버전 | 이름 지정 체계 | 
| --- | --- | 
| 30 이상 |  새 DB 인스턴스는 major.minor.patch.YYMMDD를 사용합니다(예: 10.4.30.R2.20231201).** 기존 DB 인스턴스는 다음 메이저 또는 마이너 버전 업그레이드 전까지 major.minor.patch(예: 10.4.30.R2)를 사용할 수 있습니다.** | 
| 30 미만 |  기존 DB 인스턴스는 major.minor.patch를 사용합니다(예: 10.4.29.R2).**  | 

# RDS for MariaDB의 RDS 버전 번호
<a name="USER_UpgradeDBInstance.MariaDB.rds.version"></a>

RDS 버전 번호는 `major.minor.patch` 또는 `major.minor.patch.YYYYMMDD` 명명 체계를 사용합니다. RDS 패치 버전에는 릴리스 후 마이너 버전에 추가된 중요한 버그 수정이 포함되어 있습니다. RDS 날짜 버전(*YYMMDD*)은 보안 패치입니다. 보안 패치에는 엔진 동작을 변경할 수 있는 수정 사항은 포함되지 않습니다.

데이터베이스의 Amazon RDS 버전 번호를 식별하려면 먼저 다음 명령을 사용하여 `rds_tools` 확장을 생성해야 합니다.

```
CREATE EXTENSION rds_tools;
```

다음 SQL 쿼리를 사용하여 RDS for MariaDB 데이터베이스의 RDS 버전 번호를 확인할 수 있습니다.

```
mysql> select mysql.rds_version();
```

예를 들어 RDS for MariaDB 10.6.14 데이터베이스를 쿼리하면 다음 아웃풋이 반환됩니다.

```
+---------------------+
| mysql.rds_version() |
+---------------------+
| 10.6.14.R2.20231201  |
+---------------------+
1 row in set (0.01 sec)
```

# RDS for MariaDB 메이저 버전 업그레이드
<a name="USER_UpgradeDBInstance.MariaDB.Major"></a>

메이저 버전 업그레이드에는 기존 애플리케이션과 호환되지 않는 데이터베이스 변경 사항이 포함될 수 있습니다. 따라서 Amazon RDS는 자동으로 메이저 버전 업그레이드를 적용하지 않습니다. DB 인스턴스를 수동으로 수정해야 합니다. 모든 업그레이드는 프로덕션 환경의 인스턴스에 적용하기 전에 반드시 철저하게 테스트하는 것이 좋습니다.

**참고**  
MariaDB 11.8에서 `require_secure_transport`의 기본값은 이제 `1`이며 보안 SSL/TLS 연결이 필요합니다. 비보안 연결이 필요한 경우 `0`으로 설정합니다.

Amazon RDS는 MariaDB 데이터베이스 엔진의 다음과 같은 메이저 버전 업그레이드를 지원합니다.
+ MariaDB 11.8에서 모든 MariaDB 버전
+ MariaDB 11.4에서 모든 MariaDB 버전
+ MariaDB 10.11에서 모든 MariaDB 버전
+ MariaDB 10.6에서 모든 MariaDB 버전
+ MariaDB 10.4에서 MariaDB 10.5로

사용자 지정 파라미터 그룹을 사용 중이고 메이전 버전 업그레이드를 수행하는 경우 새 DB 엔진 버전에 대한 기본 파라미터 그룹을 지정하거나 새 DB 엔진 버전에 대한 사용자 지정 파라미터 그룹을 만들어야 합니다. 새 파라미터 그룹을 DB 인스턴스에 연결하려면 업그레이드가 완료된 후 고객이 데이터베이스 재부팅을 시작해야 합니다. 파라미터 그룹 변경 사항을 적용하기 위해 인스턴스를 재부팅해야 하는 경우, 인스턴스의 파라미터 그룹 상태가 `pending-reboot`로 표시됩니다. 인스턴스의 파라미터 그룹 상태는 AWS Management Console에서 확인하거나 'describe' 직접 호출(예: `describe-db-instances`)을 실행하여 확인할 수 있습니다.

## MariaDB DB 인스턴스 업그레이드
<a name="USER_UpgradeDBInstance.MariaDB.Upgrading"></a>

MariaDB DB 인스턴스의 수동 또는 자동 업그레이드에 대한 자세한 내용은 [DB 인스턴스 엔진 버전 업그레이드](USER_UpgradeDBInstance.Upgrading.md) 섹션을 참조하세요.

# RDS for MariaDB 마이너 버전 자동 업그레이드
<a name="USER_UpgradeDBInstance.MariaDB.Minor"></a>

DB 인스턴스를 생성하거나 수정할 때 다음 설정을 지정하면 DB 인스턴스가 자동으로 업그레이드되도록 할 수 있습니다.
+ **마이너 버전 자동 업그레이드(Auto minor version upgrade)** 설정을 활성화되어 있습니다.
+ **백업 보존 기간(Backup retention period)** 설정이 0보다 큽니다.

AWS Management Console에서 이 설정은 **추가 구성(Additional configuration)**에 있습니다. 다음 이미지는 **자동 마이너 버전 업그레이드(Auto minor version upgrade)** 설정을 보여줍니다.

![\[마이너 버전 자동 업그레이드(Auto minor version upgrade) 설정을 활성화되어 있습니다.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/amvu.png)


이러한 설정에 대한 자세한 내용은 [DB 인스턴스에 대한 설정](USER_ModifyInstance.Settings.md) 단원을 참조하세요.

일부 AWS 리전에 있는 특정 RDS for MariaDB 메이저 버전의 경우 RDS에서 하나의 마이너 버전을 자동 업그레이드 버전으로 지정합니다. Amazon RDS가 마이너 버전을 테스트하고 승인하면 유지 관리 기간 중에 자동으로 마이너 버전 업그레이드가 실행됩니다. RDS는 자동으로 새로 릴리스된 마이너 버전을 자동 업그레이드 버전으로 설정하지 않습니다. RDS가 더 새로운 자동 업그레이드 버전을 지정하기 전에 다음과 같은 여러 기준이 고려됩니다.
+ 알려진 보안 문제
+ MariaDB 커뮤니티 버전의 버그
+ 마이너 버전 릴리스 이후 전반적인 플릿 안정성

**참고**  
TLS 버전 1.0 및 1.1 사용에 대한 지원은 MariaDB의 특정 마이너 버전부터 제거되었습니다. 지원되는 MariaDB 마이너 버전에 대한 자세한 내용은 [Amazon RDS의 MariaDB DB 인스턴스에 대한 SSL/TLS 지원](MariaDB.Concepts.SSLSupport.md) 섹션을 참조하세요.

다음 AWS CLI 명령을 실행하여 특정 AWS 리전의 지정된 MariaDB 마이너 버전에 대한 현재의 자동 마이너 업그레이드 대상 버전을 확인할 수 있습니다.

대상 LinuxmacOS, 또는Unix:

```
aws rds describe-db-engine-versions \
--engine mariadb \
--engine-version minor_version \
--region region \
--query "DBEngineVersions[*].ValidUpgradeTarget[*].{AutoUpgrade:AutoUpgrade,EngineVersion:EngineVersion}" \
--output text
```

Windows의 경우:

```
aws rds describe-db-engine-versions ^
--engine mariadb ^
--engine-version minor_version ^
--region region ^
--query "DBEngineVersions[*].ValidUpgradeTarget[*].{AutoUpgrade:AutoUpgrade,EngineVersion:EngineVersion}" ^
--output text
```

예를 들어, 다음 AWS CLI 명령은 미국 동부(오하이오) AWS 리전(us-east-2)의 MariaDB 마이너 버전 10.5.16에 대한 자동 마이너 업그레이드 대상을 결정합니다.

대상 LinuxmacOS, 또는Unix:

```
aws rds describe-db-engine-versions \
--engine mariadb \
--engine-version 10.5.16 \
--region us-east-2 \
--query "DBEngineVersions[*].ValidUpgradeTarget[*].{AutoUpgrade:AutoUpgrade,EngineVersion:EngineVersion}" \
--output table
```

Windows의 경우:

```
aws rds describe-db-engine-versions ^
--engine mariadb ^
--engine-version 10.5.16 ^
--region us-east-2 ^
--query "DBEngineVersions[*].ValidUpgradeTarget[*].{AutoUpgrade:AutoUpgrade,EngineVersion:EngineVersion}" ^
--output table
```

다음과 같은 출력이 표시됩니다.

```
----------------------------------
|    DescribeDBEngineVersions    |
+--------------+-----------------+
|  AutoUpgrade |  EngineVersion  |
+--------------+-----------------+
|  True        |  10.5.17        |
|  False       |  10.5.18        |
|  False       |  10.5.19        |
|  False       |  10.6.5         |
|  False       |  10.6.7         |
|  False       |  10.6.8         |
|  False       |  10.6.10        |
|  False       |  10.6.11        | 
|  False       |  10.6.12        |
+--------------+-----------------+
```

이 예제에서 `AutoUpgrade` 값은 MariaDB 버전 10.5.17의 경우 `True`입니다. 따라서 자동 마이너 업그레이드 대상은 출력에서 강조 표시된 MariaDB 버전 10.5.17입니다.

MariaDB DB 인스턴스는 다음 기준이 충족되면 유지 관리 기간 중에 자동으로 업그레이드됩니다.
+ **마이너 버전 자동 업그레이드(Auto minor version upgrade)** 설정을 활성화되어 있습니다.
+ **백업 보존 기간(Backup retention period)** 설정이 0보다 큽니다.
+ DB 인스턴스가 현재 자동 업그레이드 마이너 버전보다 낮은 DB 엔진 버전을 실행 중입니다.

자세한 내용은 [마이너 엔진 버전 자동 업그레이드](USER_UpgradeDBInstance.Upgrading.md#USER_UpgradeDBInstance.Upgrading.AutoMinorVersionUpgrades) 섹션을 참조하세요.

# RDS for MariaDB 데이터베이스 업그레이드 시 읽기 전용 복제본을 사용하여 가동 중지 시간 단축
<a name="USER_UpgradeDBInstance.MariaDB.ReducedDowntime"></a>

대부분의 경우 블루/그린 배포는 MariaDB DB 인스턴스를 업그레이드할 때 다운타임을 줄이는 가장 좋은 방법입니다. 자세한 내용은 [데이터베이스 업데이트에 Amazon RDS 블루/그린 배포 사용](blue-green-deployments.md) 단원을 참조하십시오.

블루/그린 배포를 사용할 수 없으며 현재 프로덕션 애플리케이션에 MariaDB DB 인스턴스를 사용 중인 경우, 다음 절차를 사용하여 DB 인스턴스의 데이터베이스 버전을 업그레이드할 수 있습니다. 이 절차는 애플리케이션의 가동 중지 시간을 줄일 수 있습니다.

읽기 전용 복제본을 사용하면 대부분의 유지 관리 단계를 미리 수행하고 실제 운영 중단 중에 필요한 변경 사항을 최소화할 수 있습니다. 이 기법을 사용하면 기존 DB 인스턴스를 변경하지 않으면서 새 DB 인스턴스를 테스트하고 준비할 수 있습니다.

이 절차는 MariaDB 버전 10.5를 MariaDB 버전 10.6으로 업그레이드하는 예를 보여줍니다. 동일한 일반 절차를 사용하여 다른 메이저 버전으로 업그레이드할 수 있습니다.

**DB 인스턴스를 사용하면서 MariaDB 데이터베이스를 업그레이드하는 방법**

1. [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 AWS Management Console에 로그인한 후 Amazon RDS 콘솔을 엽니다.

1. MariaDB 10.5 DB 인스턴스의 읽기 전용 복제본을 생성합니다. 이 프로세스에서 업그레이드 가능한 데이터베이스 사본이 만들어집니다. DB 인스턴스의 다른 읽기 전용 복제본도 존재할 수 있습니다.

   1. 콘솔에서 **데이터베이스(Databases)**와 업그레이드하려는 DB 인스턴스를 차례로 선택합니다.

   1. **작업**에서 **읽기 전용 복제본 만들기**를 선택합니다.

   1. 읽기 전용 복제본의 **DB 인스턴스 식별자** 값을 제공하고 **DB instance class**(DB 인스턴스 클래스) 및 기타 설정이 MariaDB 10.5 DB 인스턴스와 일치하는지 확인합니다.

   1. [**Create read replica**]를 선택합니다.

1. (선택 사항) 읽기 전용 복제본이 생성되고 **상태(Status)**가 **사용 가능(Available)**으로 표시되면 읽기 전용 복제본을 다중 AZ 배포로 변환하고 백업을 활성화합니다.

   기본적으로 읽기 전용 복제본은 백업이 비활성화된 단일 AZ 배포로 생성됩니다. 읽기 전용 복제본은 궁극적으로 프로덕션 DB 인스턴스가 되기 때문에 지금 다중 AZ 배포를 구성하고 백업을 활성화하는 것이 가장 좋습니다.

   1. 콘솔에서 **데이터베이스(Databases)**와 방금 생성한 읽기 전용 복제본을 차례로 선택합니다.

   1. **수정**을 선택합니다.

   1. **다중 AZ 배포(Multi-AZ deployment)**에서 **대기 인스턴스 생성(Create a standby instance)**을 선택합니다.

   1. **Backup Retention Period**(백업 보존 기간)로 0이 아닌 양수 값(예: 3일)을 선택한 후 **Continue**(계속)를 선택합니다.

   1. **수정 사항 예약**에 대해 **즉시 적용**을 선택합니다.

   1. **DB 인스턴스 수정**을 선택합니다.

1. 읽기 전용 복제본 **Status**(상태)가 **Available**(사용 가능)로 표시되면 읽기 전용 복제본을 MariaDB 10.6으로 업그레이드합니다.

   1. 콘솔에서 **데이터베이스(Databases)**와 방금 생성한 읽기 전용 복제본을 차례로 선택합니다.

   1. **수정**을 선택합니다.

   1. **DB engine version**(DB 엔진 버전)에서 업그레이드할 MariaDB 10.6 버전을 선택한 후 **Continue**(계속)를 선택합니다.

   1. **수정 사항 예약**에 대해 **즉시 적용**을 선택합니다.

   1. [**Modify DB instance**]를 선택하여 업그레이드를 시작합니다.

1. 업그레이드가 완료되고 **Status**(상태)가 **Available**(사용 가능)로 표시되면 업그레이드한 읽기 전용 복제본이 소스 MariaDB 10.5 DB 인스턴스로 업데이트되는지 확인합니다. 확인하려면 읽기 전용 복제본에 연결하고 `SHOW REPLICA STATUS` 명령을 실행합니다. `Seconds_Behind_Master` 필드가 `0`이면 복제본이 최신 상태입니다.
**참고**  
이전 버전의 MariaDB에는 `SHOW SLAVE STATUS` 대신 `SHOW REPLICA STATUS`가 사용되었습니다. 10.6 이전 MariaDB 버전을 사용하는 경우 `SHOW SLAVE STATUS`를 사용합니다.

1. (선택 사항) 읽기 전용 복제본의 읽기 전용 복제본을 생성합니다.

   DB 인스턴스가 독립형 DB 인스턴스로 승격된 후 읽기 전용 복제본을 갖도록 하려면 지금 읽기 전용 복제본을 생성하면 됩니다.

   1. 콘솔에서 **데이터베이스(Databases)**와 방금 업그레이드한 읽기 전용 복제본을 차례로 선택합니다.

   1. **작업**에서 **읽기 전용 복제본 만들기**를 선택합니다.

   1. 읽기 전용 복제본의 **DB 인스턴스 식별자** 값을 제공하고 **DB instance class**(DB 인스턴스 클래스) 및 기타 설정이 MariaDB 10.5 DB 인스턴스와 일치하는지 확인합니다.

   1. [**Create read replica**]를 선택합니다.

1. (선택 사항) 읽기 전용 복제본에 대한 사용자 지정 DB 파라미터 그룹을 구성합니다.

   DB 인스턴스가 독립형 DB 인스턴스로 승격된 후 사용자 지정 파라미터 그룹을 사용하도록 하려면 지금 DB 파라미터 그룹을 생성하여 읽기 전용 복제본과 연결하면 됩니다.

   1. MariaDB 10.6에 대한 사용자 지정 DB 파라미터 그룹을 생성합니다. 지침은 [Amazon RDS에서 DB 파라미터 그룹 생성](USER_WorkingWithParamGroups.Creating.md) 섹션을 참조하세요.

   1. 방금 생성한 DB 파라미터 그룹에서 변경하려는 파라미터를 수정합니다. 지침은 [Amazon RDS에서 DB 파라미터 그룹의 파라미터 수정](USER_WorkingWithParamGroups.Modifying.md) 섹션을 참조하세요.

   1. 콘솔에서 **데이터베이스(Databases)**와 읽기 전용 복제본을 차례로 선택합니다.

   1. **수정**을 선택합니다.

   1. **DB parameter group**(DB 파라미터 그룹)에서 방금 생성한 MariaDB 10.6 DB 파라미터 그룹을 선택한 후 **Continue**(계속)를 선택합니다.

   1. **수정 사항 예약**에 대해 **즉시 적용**을 선택합니다.

   1. [**Modify DB instance**]를 선택하여 업그레이드를 시작합니다.

1. MariaDB 10.6 읽기 전용 복제본을 독립형 DB 인스턴스로 만듭니다.
**중요**  
MariaDB 10.6 읽기 전용 복제본을 독립형 DB 인스턴스로 승격하면 더 이상 MariaDB 10.5 DB 인스턴스의 복제본이 아닙니다. 소스 MariaDB 10.5 DB 인스턴스가 읽기 전용 모드이고, 모든 쓰기 작업이 일시 중단되는 유지 관리 기간 동안 MariaDB 10.6 읽기 전용 복제본을 승격하는 것이 좋습니다. 승격이 완료되면 쓰기 연산을 MariaDB 10.6 DB 인스턴스에서 실행하여 쓰기 연산이 손실되는 것을 막을 수 있습니다.  
그밖에도 MariaDB 10.6 읽기 전용 복제본을 승격하기 전에 MariaDB 10.6 읽기 전용 복제본에서 필요한 모든 DDL(데이터 정의 언어) 작업을 수행하는 것이 좋습니다. 인덱스 생성을 예로 들 수 있습니다. 그러면 승격 후에도 MariaDB 10.6 읽기 전용 복제본의 성능에 미치는 부정적인 영향을 방지할 수 있습니다. 읽기 전용 복제본을 승격하려면 다음 절차를 사용하십시오.

   1. 콘솔에서 **데이터베이스(Databases)**와 방금 업그레이드한 읽기 전용 복제본을 차례로 선택합니다.

   1. **작업**에서 **Promote(승격)**를 선택합니다.

   1. 읽기 전용 복제본 인스턴스에 대해 자동 백업을 활성화하려면 **예**를 선택합니다. 자세한 내용은 [백업 소개](USER_WorkingWithAutomatedBackups.md) 섹션을 참조하세요.

   1. [**Continue**]를 선택합니다.

   1. [**Promote Read Replica**]를 선택합니다.

1. 이제 MariaDB 데이터베이스 버전이 업그레이드되었습니다. 이제 애플리케이션을 새로운 MariaDB 10.6 DB 인스턴스로 리디렉션할 수 있습니다.

# 이벤트를 사용하여 RDS for MariaDB DB 엔진 업그레이드 모니터링
<a name="USER_UpgradeDBInstance.MariaDB.Monitoring"></a>

RDS for MariaDB 데이터베이스의 엔진 버전을 업그레이드하면 Amazon RDS는 프로세스의 각 단계에서 특정 이벤트를 내보냅니다. 업그레이드 진행 상황을 추적하기 위해 이러한 이벤트를 보거나 구독할 수 있습니다.

 RDS 이벤트에 대한 자세한 내용은 [Amazon RDS 이벤트 모니터링](working-with-events.md) 섹션을 참조하세요.

엔진 업그레이드 중에 발생하는 특정 Amazon RDS 이벤트에 대한 자세한 내용은 [Amazon RDS 이벤트 카테고리 및 이벤트 메시지](USER_Events.Messages.md) 섹션을 참조하세요.

# MariaDB DB 스냅샷 엔진 버전 업그레이드
<a name="mariadb-upgrade-snapshot"></a>

Amazon RDS를 사용하여 MariaDB DB 인스턴스의 스토리지 볼륨 DB 스냅샷을 만들 수 있습니다. DB 스냅샷 생성 시, 생성되는 스냅샷은 DB 인스턴스에서 사용하는 엔진 버전에 기반합니다. DB 스냅샷의 엔진 버전을 업그레이드할 수 있습니다.

RDS for MariaDB의 경우 사용 가능한 모든 엔진 버전으로 업그레이드할 수 있습니다. 암호화되거나 암호화되지 않은 DB 스냅샷을 업그레이드할 수 있습니다.

RDS for MariaDB DB 스냅샷에 사용 가능한 엔진 버전을 보려면 다음 AWS CLI 예제를 사용합니다.

```
aws rds describe-db-engine-versions --engine mariadb --include-all --engine-version example-engine-version --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" --output text
```

스냅샷에 대한 결과가 표시되지 않으면 엔진 버전이 더 이상 사용되지 않을 수 있습니다. 엔진 버전이 더 이상 지원되지 않는 경우 최신 메이저 버전 업그레이드 대상 또는 해당 버전에 대해 사용 가능한 다른 업그레이드 대상 중 하나로 업그레이드하는 것이 좋습니다. 자세한 내용은 [RDS for MariaDB에서 지원되지 않는 엔진 버전이 있는 DB 스냅샷에 대한 업그레이드 옵션](mariadb-upgrade-snapshot.upgrade-options.md) 섹션을 참조하세요.

새 엔진 버전으로 업그레이드된 DB 스냅샷을 복원한 후에는 업그레이드가 성공적이었는지 테스트해야 합니다. 메이저 버전 업그레이드에 대한 자세한 내용은 [MariaDB DB 엔진 업그레이드](USER_UpgradeDBInstance.MariaDB.md) 단원을 참조하십시오. DB 스냅샷을 복원하는 방법은 [DB 인스턴스 복원](USER_RestoreFromSnapshot.md) 단원을 참조하십시오.

**참고**  
자동 백업 과정에서 생성된 자동 DB 스냅샷은 업그레이드할 수 없습니다.

AWS Management Console, AWS CLI 또는 RDS API를 사용하여 DB 스냅샷을 업그레이드할 수 있습니다.

------
#### [ Console ]

AWS Management Console을 사용하여 DB 스냅샷 엔진 버전을 업그레이드하려면 다음 절차를 사용합니다.

**DB 스냅샷을 업그레이드하려면**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 [**Snapshots**]를 선택합니다.

1. 업그레이드할 스냅샷을 선택합니다.

1. **작업**에서 **Upgrade snapshot(스냅샷 업그레이드)**을 선택합니다. **Upgrade snapshot(스냅샷 업그레이드)** 페이지가 표시됩니다.

1. 업그레이드할 **New engine version(새 엔진 버전)**을 선택합니다.

1. 스냅샷을 업그레이드하려면 **변경 내용 저장**을 선택합니다.

   업그레이드 중에는 이 DB 스냅샷의 모든 스냅샷 작업이 비활성화됩니다. 또한 DB 스냅샷 상태가 **사용 가능**에서 **업그레이드 중**으로 바뀐 다음 완료되면 **활성**으로 바뀝니다 스냅샷 손상 문제로 인해 DB 스냅샷을 업그레이드할 수 없는 경우, 상태가 **사용할 수 없음**으로 바뀝니다. 이 상태로부터 스냅샷을 복구할 수는 없습니다.
**참고**  
DB 스냅샷 업그레이드에 실패하면 스냅샷이 원래 버전의 원래 상태로 롤백됩니다.

------
#### [ AWS CLI ]

DB 스냅샷을 새 데이터베이스 엔진 버전으로 업그레이드하려면 AWS CLI [modify-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-snapshot.html) 명령을 실행합니다.

**옵션**
+ `--db-snapshot-identifier` – 업그레이드할 DB 스냅샷의 식별자입니다. 식별자는 고유의 Amazon 리소스 이름(ARN)이어야 합니다. 자세한 내용은 [Amazon RDS의 Amazon 리소스 이름(ARN)](USER_Tagging.ARN.md) 섹션을 참조하세요.
+ `--engine-version` – DB 스냅샷을 업그레이드할 엔진 버전입니다.

**Example**  
대상 LinuxmacOS, 또는Unix:  

```
1. aws rds modify-db-snapshot \
2. 
3.     --db-snapshot-identifier my_db_snapshot \
4.     --engine-version new_version
```
Windows의 경우:  

```
1. aws rds modify-db-snapshot ^
2.     --db-snapshot-identifier my_db_snapshot ^
3.     --engine-version new_version
```

------
#### [ Amazon RDS API ]

DB 스냅샷을 새 데이터베이스 엔진 버전으로 업그레이드하려면 RDS API [ModifyDBSnapshot](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBSnapshot.html) 작업을 직접 호출하세요.

**파라미터**
+ `DBSnapshotIdentifier` – 업그레이드할 DB 스냅샷의 식별자입니다. 식별자는 고유의 Amazon 리소스 이름(ARN)이어야 합니다. 자세한 내용은 [Amazon RDS의 Amazon 리소스 이름(ARN)](USER_Tagging.ARN.md) 섹션을 참조하세요.
+ `EngineVersion` – DB 스냅샷을 업그레이드할 엔진 버전입니다.

------

# RDS for MariaDB에서 지원되지 않는 엔진 버전이 있는 DB 스냅샷에 대한 업그레이드 옵션
<a name="mariadb-upgrade-snapshot.upgrade-options"></a>

다음 표에는 RDS for MariaDB DB 스냅샷에 대해 지원되지 않는 엔진 버전에서 업그레이드할 수 있는 엔진 버전이 나와 있습니다.

**참고**  
선택한 엔진 버전으로 업그레이드하려면 DB 스냅샷을 두 번 이상 업그레이드해야 할 수 있습니다.


| DB 스냅샷 엔진 버전 | 업그레이드 가능한 엔진 버전 | 
| --- | --- | 
| 10.0.17, 10.0.24, 10.0.28, 10.0.31, 10.0.32, 10.0.34, 10.0.35 |  10.0.38, 10.1.48, 10.6.19, 10.6.20, 10.11.9, 10.11.10, 11.4.3, 11.4.4, 11.8.3  | 
| 10.1.14, 10.1.16, 10.1.19, 10.1.23, 10.1.26, 10.1.31, 10.1.34 |  10.1.48, 10.2.44, 10.6.19, 10.6.20, 10.11.9, 10.11.10, 11.4.3, 11.4.4, 11.8.3  | 
| 10.2.11, 10.2.12, 10.2.15, 10.2.21, 10.2.32, 10.2.37, 10.2.39, 10.2.40, 10.2.41, 10.2.43 |  10.2.44, 10.3.39, 10.6.19, 10.6.20, 10.6.21, 10.11.9, 10.11.10, 10.11.11, 11.4.3, 11.4.4, 11.8.3  | 
| 10.3.8, 10.3.13, 10.3.20, 10.3.23, 10.3.28, 10.3.31, 10.3.32 |  10.3.39, 10.4.34, 10.6.19, 10.6.20 10.6.21, 10.11.9, 10.11.10, 10.11.11, 11.4.3, 11.4.4, 11.8.3  | 
| 10.4.8 |  10.4.34, 10.5.16, 10.5.17, 10.5.18, 10.5.20, 10.5.21, 10.5.22, 10.5.23, 10.5.24, 10.5.25, 10.5.26, 10.5.27, 10.5.28, 10.6.8, 10.6.10, 10.6.11, 10.6.13, 10.6.14, 10.6.15, 10.6.16, 10.6.18, 10.6.19, 10.6.20, 10.6.21, 10.11.4, 10.6.17, 10.11.5, 10.11.6, 10.11.7, 10.11.8, 10.11.9, 10.11.10, 10.11.11  | 

# Amazon RDS for MariaDB DB 인스턴스로 데이터 가져오기
<a name="MariaDB.Procedural.Importing"></a>

RDS for MariaDB DB 인스턴스로 데이터를 가져오는 기법에는 몇 가지가 있습니다. 가장 좋은 방법은 다음과 같은 여러 요인에 따라 달라집니다.
+ 데이터 원본
+ 데이터 분량
+ 일회성 혹은 지속적
+ 가동 중지 시간 길이

 데이터와 함께 애플리케이션을 마이그레이션하는 경우라면 감당할 수 있는 가동 중지 시간도 고려해야 합니다.

다음 표에는 RDS for MariaDB DB 인스턴스로 데이터를 가져오는 기법이 나와 있습니다.

**참고**  
Amazon RDS는 `mariadb-backup` 또는 Amazon S3 for MariaDB에서 가져오기를 지원하지 않습니다.


| 소스 | 데이터 분량 | 일회성 혹은 지속적 | 애플리케이션 가동 중지 | 기술 | 추가 정보 | 
| --- | --- | --- | --- | --- | --- | 
|  온프레미스 또는 Amazon EC2에 있는 기존 MariaDB 데이터베이스  |  임의  |  지속적  |  최소화  |  기존 MariaDB 데이터베이스가 복제 소스가 되도록 복제본을 구성합니다. 외부 인스턴스가 MariaDB 버전 10.0.24 이상인 경우 MariaDB 글로벌 트랜잭션 식별자(GTID)를 사용하거나 10.0.24 이전 버전의 MariaDB 인스턴스인 경우 바이너리 로그 좌표를 사용하여 MariaDB DB 인스턴스로의 복제를 구성할 수 있습니다. MariaDB GTID는 MySQL GTID와 다르게 구현되며, MySQL GTID는 Amazon RDS에서 지원되지 않습니다.  |  [외부 소스 인스턴스를 사용하여 이진 로그 파일 위치 복제 구성](MySQL.Procedural.Importing.External.ReplMariaDB.md) [가동 중지 시간을 줄이면서 Amazon RDS for MariaDB DB 인스턴스로 데이터 가져오기](mariadb-importing-data-reduced-downtime.md)  | 
|  기존의 모든 데이터베이스  |  모두 선택  |  일회성 혹은 지속적  |  최소화  |  AWS Database Migration Service을 사용하면 가동 중지 시간을 최소화하면서 데이터베이스를 마이그레이션할 수 있으며 대부분의 DB 엔진에서는 지속적으로 복제를 계속할 수 있습니다.  |  [AWS Database Migration Service란?](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) 및 *AWS Database Migration Service 사용 설명서*의 [AWS DMS에서 MySQL 호환 데이터베이스를 대상으로 사용](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.MySQL.html)  | 
|  기존 MariaDB DB 인스턴스  |  임의  |  일회성 혹은 지속적  |  최소화  |  지속적인 복제를 위한 읽기 전용 복제본을 생성합니다. 새 DB 인스턴스를 한 번만 생성하도록 읽기 전용 복제본을 승격시킵니다.  |  [DB 인스턴스 읽기 전용 복제본 작업](USER_ReadRepl.md)  | 
|  기존 MariaDB 데이터베이스  |  스몰  |  한 번만  |  약간  |  명령줄 유틸리티를 사용하여 MariaDB DB 인스턴스에 바로 데이터를 복제합니다.  |  [외부 MariaDB 데이터베이스에서 Amazon RDS for MariaDB DB 인스턴스로 데이터 가져오기](mariadb-importing-data-external-database.md)  | 
|  기존 데이터베이스에 저장되지 않은 데이터  |  Medium  |  한 번만  |  약간  |  플랫 파일을 만들고 MariaDB `LOAD DATA LOCAL INFILE` 문을 이용하여 가져옵니다.  |  [원하는 소스에서 Amazon RDS for MariaDB DB 인스턴스로 데이터 가져오기](mariadb-importing-data-any-source.md)  | 

**참고**  
`mysql` 시스템 데이터베이스에는 DB 인스턴스에 로그인하고 데이터에 액세스하는 데 필요한 인증 및 권한 부여 정보가 포함되어 있습니다. DB 인스턴스에 있는 `mysql` 데이터베이스의 각종 테이블, 데이터 또는 기타 콘텐츠를 삭제하거나 변경하거나 이름을 바꾸거나 자르면 오류가 발생하여 DB 인스턴스와 데이터에 액세스할 수 없게 될 수 있습니다. 이 문제가 발생할 경우 AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html) 명령을 사용하여 DB 인스턴스를 스냅샷에서 복원할 수 있습니다. [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html) 명령을 사용하여 DB 인스턴스를 복구할 수 있습니다.

# MariaDB에 대한 데이터 가져오기 고려 사항
<a name="MariaDB.Procedural.Importing.Advanced"></a>

다음 내용에는 MariaDB로 데이터를 로드하는 것과 관련된 기술 정보가 포함되어 있습니다. 이 콘텐츠는 MariaDB 서버 아키텍처에 익숙한 사용자를 대상으로 합니다.

## 이진 로깅
<a name="MariaDB.Procedural.Importing.Advanced.Log"></a>

이진 로깅을 활성화하면 로깅을 비활성화했을 때와 비교해 데이터 로드 성능이 저하되고 최대 4배의 추가 디스크 공간이 필요합니다. 데이터를 로드하는 데 사용되는 트랜잭션 크기는 시스템 성능 및 디스크 공간 요구 사항에 직접적인 영향을 미칩니다. 트랜잭션이 클수록 더 많은 리소스가 필요합니다.

## 트랜잭션 크기
<a name="MariaDB.Procedural.Importing.Advanced.Size"></a>

트랜잭션 크기는 MariaDB 데이터 로드의 다음 측면에 영향을 미칩니다.
+ 리소스 소비
+ 디스크 공간 사용률
+ 프로세스 재개
+ 복구 시간
+ 입력 형식(플랫 파일 또는 SQL)

이 섹션에서는 트랜잭션 크기가 이진 로깅에 미치는 영향을 설명하고 큰 데이터를 로드하는 중에 이진 로깅을 비활성화하는 이유를 논증합니다. Amazon RDS 자동 백업 보존 기간을 설정하여 이진 로깅을 활성화 및 비활성화할 수 있습니다. 0이 아닌 값으로 설정하면 이진 로깅이 활성화되고 0으로 설정하면 비활성화됩니다. 자세한 내용은 [백업 보존 기간](USER_WorkingWithAutomatedBackups.BackupRetention.md) 섹션을 참조하세요.

이 섹션에서는 대규모 트랜잭션이 InnoDB에 미치는 영향과 트랜잭션 크기를 작게 유지하는 것이 중요한 이유도 설명합니다.

### 작은 트랜잭션
<a name="MariaDB.Procedural.Importing.Advanced.Log.Small"></a>

작은 트랜잭션의 경우, 이진 로깅을 사용하면 데이터 로드에 필요한 디스크 쓰기 작업 수가 배가됩니다. 이 결과 다른 데이터베이스 세션의 성능이 심각하게 저하되고 데이터 로딩 시간이 증가할 수 있습니다. 발생하는 성능 저하는 부분적으로 다음 요인에 따라 달라집니다.
+ 업로드 속도
+ 로드 중에 발생하는 기타 데이터베이스 활동
+ Amazon RDS DB 인스턴스의 용량

또한, 이진 로그는 로그가 백업 및 제거될 때까지 로드된 데이터의 양과 대략적으로 같은 양의 디스크 공간을 사용합니다. Amazon RDS는 이진 로그를 자주 백업하고 제거하는 방법으로 이 문제를 최소화합니다.

### 대규모 트랜잭션
<a name="MariaDB.Procedural.Importing.Advanced.Log.Large"></a>

대규모 트랜잭션의 경우 다음과 같은 이유로 이진 로깅이 사용하는 IOPS 및 디스크가 3배로 늘어납니다.
+ 이진 로그 캐시는 트랜잭션 데이터를 일시적으로 디스크에 저장합니다.
+ 이 캐시는 디스크 공간을 소비하는 트랜잭션 크기에 따라 증가합니다.
+ 트랜잭션(커밋 또는 롤백)이 완료되면 시스템은 캐시를 이진 로그에 복사합니다.

이 프로세스는 다음과 같은 데이터 복사본 세 개를 만듭니다.
+ 원본 데이터
+ 디스크의 캐시
+ 최종 이진 로그 항목

각 쓰기 작업에는 추가 IO가 발생하여 성능에 더욱 영향을 미칩니다.

따라서 이진 로깅에는 로깅을 비활성화했을 때에 비해 디스크 공간이 3배 필요합니다. 예를 들어 10GiB의 데이터를 단일 트랜잭션으로 로드하면 다음과 같은 세 개의 복사본이 만들어집니다.
+ 테이블 데이터 10GiB
+ 이진 로그 캐시 10GiB
+ 이진 로그 파일 10GiB

필요한 총 임시 디스크 공간은 30GiB입니다.

중요한 디스크 공간 고려 사항:
+ 캐시 파일은 세션이 종료되거나 새 트랜잭션이 다른 캐시를 만들 때까지 유지됩니다.
+ 이진 로그는 백업될 때까지 유지되며, 잠재적으로 20GiB(캐시 및 로그)를 장기간 차지할 수 있습니다.

`LOAD DATA LOCAL INFILE`을 사용하여 데이터를 로드하는 경우 데이터 복구는 로드 전에 수행된 백업에서 데이터베이스를 복구해야 하는 경우를 대비하여 네 번째 복사본을 만듭니다. 복원 중에 MariaDB가 이진 로그에서 플랫 파일로 데이터를 추출합니다. 그런 다음 MariaDB는 `LOAD DATA LOCAL INFILE`을 실행합니다. 이전 예시의 내용을 바탕으로 봤을 때, 이 복구를 수행하려면 테이블, 캐시, 로그 및 로컬 파일에 대해 각각 10GiB씩 총 40GiB의 임시 디스크 공간이 필요합니다. 최소 40GiB의 여유 디스크 공간이 없으면 복구가 실패합니다.

### 대규모 데이터 로드 최적화
<a name="MariaDB.Procedural.Importing.AnySource.Advanced.Disable"></a>

대규모 데이터 로드의 경우 이진 로깅을 비활성화하여 오버헤드 및 디스크 공간 요구 사항을 줄입니다. 백업 보존 기간을 0으로 설정하여 이진 로깅을 비활성화할 수 있습니다. 로드가 완료되면 백업 보존 기간을 0이 아닌 적절한 값으로 복원합니다. 자세한 정보는 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 및 설정 표의 [백업 보존 기간](USER_ModifyInstance.Settings.md)을 참조하세요.

**참고**  
DB 인스턴스가 읽기 전용 복제본의 원본 DB 인스턴스인 경우에는 백업 보존 기간을 0으로 설정할 수 없습니다.

데이터를 로드하기 전에 DB 스냅샷을 만드는 것이 좋습니다. 자세한 내용은 [수동 백업 관리](USER_ManagingManualBackups.md) 섹션을 참조하세요.

## InnoDB
<a name="MariaDB.Procedural.Importing.Advanced.InnoDB"></a>

실행 취소 로깅 및 복구 옵션에 대한 다음 정보는 데이터베이스 성능을 최적화하기 위해 InnoDB 트랜잭션을 작게 유지하는 데 도움이 됩니다.

### InnoDB 실행 취소 로깅 이해
<a name="MariaDB.Procedural.Importing.Advanced.InnoDB.Undo"></a>

실행 취소는 트랜잭션 롤백을 활성화하고 다중 버전 동시성 제어(MVCC)를 지원하는 로깅 메커니즘입니다.

MariaDB 10.11 이하 버전의 경우 실행 취소 로그는 InnoDB 시스템 테이블스페이스(일반적으로 ibdata1)에 저장되며 제거 스레드가 로그를 제거할 때까지 유지됩니다. 따라서 대규모 데이터 로드 트랜잭션은 시스템 테이블스페이스가 상당히 커지는 원인이 될 수 있고, 이때 사용되는 디스크 공간은 데이터베이스를 다시 만들어야 회수할 수 있습니다.

모든 MariaDB 버전에서 제거 스레드는 가장 오래된 활성 트랜잭션이 커밋되거나 롤백될 때까지 실행 취소 로그를 제거할 수 없습니다. 데이터베이스가 로드 중에 다른 트랜잭션을 처리 중인 경우, 이들 트랜잭션의 실행 취소 로그 역시 누적되며 트랜잭션이 커밋되고 MVCC에 대해 실행 취소 로그가 필요한 다른 트랜잭션이 없더라도 실행 취소 로그를 제거할 수 없습니다. 이 경우 읽기 전용 트랜잭션을 포함한 모든 트랜잭션이 느려집니다. 이 속도 저하는 로드 트랜잭션뿐만 아니라 모든 트랜잭션이 변경하는 모든 행에 모든 트랜잭션이 액세스하기 때문에 발생합니다. 실제로 트랜잭션은 장기 실행 로드 트랜잭션으로 인해 실행 취소 로그 정리 중에 제거되지 않는 실행 취소 로그를 검사해야 합니다. 이는 수정된 행에 액세스하는 모든 작업의 성능에 영향을 줍니다.

### InnoDB 트랜잭션 복구 옵션
<a name="MariaDB.Procedural.Importing.Advanced.InnoDB.Rollback"></a>

InnoDB는 커밋 작업을 최적화하지만 대규모 트랜잭션 롤백은 느립니다. 더 빠른 복구를 위해 시점 복구를 수행하거나 DB 스냅샷을 복원합니다. 자세한 내용은 [시점 복구](USER_PIT.md) 및 [DB 인스턴스 복원](USER_RestoreFromSnapshot.md)(을)를 참조하세요.

## 데이터 가져오기 형식
<a name="MariaDB.Procedural.Importing.Advanced.InputFormat"></a>

MariaDB는 플랫 파일과 SQL이라는 두 가지 데이터 가져오기 형식을 지원합니다. 각 형식에 대한 정보를 검토하여 요구 사항에 가장 적합한 옵션을 결정합니다.

### 플랫 파일
<a name="MariaDB.Procedural.Importing.Advanced.InputFormat.FlatFiles"></a>

소규모 트랜잭션의 경우 `LOAD DATA LOCAL INFILE`을 사용하여 플랫 파일을 로드합니다. 이 데이터 가져오기 형식은 SQL 사용에 비해 다음과 같은 이점을 제공할 수 있습니다.
+ 더 낮은 네트워크 트래픽
+ 데이터 전송 비용 절감
+ 데이터베이스 처리 오버헤드 감소
+ 더 빠른 처리

`LOAD DATA LOCAL INFILE`은 전체 플랫 파일을 하나의 트랜잭션으로 로드합니다. 다음과 같은 이점을 위해 개별 파일의 크기를 작게 유지합니다.
+ **재개 기능** – 로드된 파일을 추적할 수 있습니다. 로드 중에 문제가 발생하면 중단된 부분부터 다시 시작할 수 있습니다. 일부 데이터를 Amazon RDS로 다시 전송해야 할 수도 있지만, 파일이 작으면 재전송되는 양이 최소화됩니다.
+ **병렬 데이터 로드** - 단일 파일 로드에 충분한 IOPS와 네트워크 대역폭이 있는 경우 병렬로 로드하면 시간이 절약될 수 있습니다.
+ **로드 속도 제어** - 데이터 로드가 다른 프로세스에 부정적인 영향을 미치는 경우 파일 간 간격을 늘려 로드 속도를 제어할 수 있습니다.

대규모 트랜잭션은 `LOAD DATA LOCAL INFILE`을 사용하여 데이터를 가져올 때의 이점을 줄입니다. 대량의 데이터를 더 작은 파일로 나눌 수 없는 경우 SQL을 사용하는 것을 고려하세요.

### SQL
<a name="MariaDB.Procedural.Importing.Advanced.InputFormat.SQL"></a>

SQL은 플랫 파일에 비해 한 가지 중요한 장점이 있는데, 그것은 바로 트랜잭션 크기를 작게 유지하기 쉽다는 점입니다. 그러나 SQL은 플랫 파일보다 로드하는 데 훨씬 더 오래 걸릴 수 있습니다. 또한 장애 발생 후 재개 위치를 결정하기 어려울 수 있으며, mariadb-dump 파일을 다시 시작할 수 없습니다. mariadb-dump 파일을 로드하는 동안 오류가 발생하는 경우 이 파일을 수정하거나 바꾸어야 로드를 재개할 수 있습니다. 또는 장애의 원인을 수정한 후 파일을 로드하고 재전송하기 전의 특정 시점으로 복원할 수 있습니다. 자세한 내용은 [시점 복구](USER_PIT.md) 섹션을 참조하세요.

## 데이터베이스 체크포인트에 Amazon RDS DB 스냅샷 사용
<a name="MariaDB.Procedural.Importing.Advanced.Checkpoints"></a>

이진 로깅 없이 몇 시간 또는 며칠 등의 긴 기간 동안 데이터를 로드하는 경우 DB 스냅샷을 사용하여 데이터 안전을 위한 주기적 체크포인트를 제공하세요. 각 DB 스냅샷은 시스템 장애 또는 데이터 손상 이벤트 중에 복구 시점 역할을 하는 데이터베이스 인스턴스의 일관된 사본을 만듭니다. DB 스냅샷은 빠르기 때문에 체크포인트를 자주 제공해도 로드 성능에 미치는 영향이 최소화됩니다. 데이터베이스 내구성이나 복구 기능에 영향을 주지 않고 이전 DB 스냅샷을 삭제할 수 있습니다. DB 스냅샷에 대한 자세한 내용은 [수동 백업 관리](USER_ManagingManualBackups.md) 섹션을 참조하세요.

## 데이터베이스 로드 시간 단축
<a name="MariaDB.Procedural.Importing.Advanced.LoadTime"></a>

다음 항목은 로드 시간을 줄이기 위한 추가 팁입니다.
+ MariaDB 데이터베이스로 데이터를 로드하기 전에 모든 보조 인덱스를 만듭니다. 다른 데이터베이스 시스템과 달리 MariaDB는 보조 인덱스를 추가하거나 수정할 때 전체 테이블을 다시 빌드합니다. 이 프로세스는 인덱스 변경 사항이 있는 새 테이블을 만들고, 모든 데이터를 복사하고, 원본 테이블을 삭제합니다.
+ 프라이머리 키 순서로 데이터를 로드합니다. InnoDB 테이블의 경우 이렇게 하면 로드 시간을 75%\$180% 줄이고 데이터 파일 크기를 50% 줄일 수 있습니다.
+ `foreign_key_checks`를 `0`으로 설정하여 외래 키 제약 조건을 비활성화합니다. `LOAD DATA LOCAL INFILE`을 통해 로드되는 플랫 파일의 경우 이 단계는 많은 경우에 필수입니다. 모든 로드에서 외래 키 검사를 비활성화하면 데이터 로드가 가속화됩니다. 로드가 완료된 후 `foreign_key_checks`를 `1`로 설정하고 데이터를 확인하여 제약 조건을 다시 활성화합니다.
+ 리소스 한도가 가까워지지 않은 한 데이터를 병렬로 로드합니다. 여러 테이블 세그먼트에서 동시 로드를 활성화하기 위해 적절한 경우 파티셔닝된 테이블을 사용합니다.
+ SQL 실행 오버헤드를 줄이려면 여러 `INSERT` 문을 단일 다중 값 `INSERT` 작업으로 결합합니다.`mariadb-dump`는 이 최적화를 자동으로 구현합니다.
+ `innodb_flush_log_at_trx_commit`을 `0`으로 설정하여 InnoDB 로그 IO 작업을 줄입니다. 로드가 완료되면 `innodb_flush_log_at_trx_commit`을 `1`로 복원합니다.
**주의**  
`innodb_flush_log_at_trx_commit`을 `0`으로 설정하면 InnoDB가 커밋이 발생할 때마다가 아닌 1초마다 로그를 플러시합니다. 이 설정은 성능을 높이지만 시스템 장애 발생 시 트랜잭션이 손실될 위험이 있습니다.
+ 읽기 전용 복제본이 없는 DB 인스턴스로 데이터를 로드하는 경우 `sync_binlog`를 `0`으로 설정합니다. 로드가 완료되면 `sync_binlog parameter`를 `1`로 복원합니다.
+ DB 인스턴스를 다중 AZ 배포로 변환하기 전에 단일 AZ DB 인스턴스로 데이터를 로드합니다. DB 인스턴스가 이미 다중 AZ 배포를 사용하는 경우 데이터 로드를 위해 단일 AZ 배포로 전환하지 않는 것이 좋습니다. 이렇게 해도 아주 작은 부분만이 개선됩니다.

# 외부 MariaDB 데이터베이스에서 Amazon RDS for MariaDB DB 인스턴스로 데이터 가져오기
<a name="mariadb-importing-data-external-database"></a>

기존 MariaDB 데이터베이스에서 RDS for MariaDB DB 인스턴스로 데이터를 가져올 수 있습니다. 이렇게 하려면 [mysqldump](https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html) 또는 [mariadb-dump](https://mariadb.com/kb/en/mariadb-dump/)를 사용하여 데이터베이스를 복사하고 RDS for MariaDB 인스턴스에 바로 파이핑합니다. `mysqldump` 또는 `mariadb-dump` 명령줄 유틸리티는 한 MariaDB 서버에서 다른 MariaDB 서버로 데이터를 전송하고 백업본을 만드는 데 흔히 사용됩니다. 이 유틸리티는 MariaDB 클라이언트 소프트웨어와 함께 포함되어 있습니다.

MariaDB 11.0.1부터 `mysqldump` 대신 `mariadb-dump`를 사용해야 합니다.

외부 데이터베이스에서 Amazon RDS DB 인스턴스로 데이터를 이동하는 일반적인 `mysqldump` 명령은 다음 예와 같습니다. 값을 실제 정보로 바꿉니다. MariaDB 11.0.1 이상 버전의 경우 `mysqldump`를 `mariadb-dump`로 교체하세요.

```
mysqldump -u local_user \
    --databases database_name \
    --single-transaction \
    --compress \
    --order-by-primary  \
    --routines=0 \
    --triggers=0 \
    --events=0 \
    -plocal_password | mariadb -u RDS_user \
        --port=port_number \
        --host=host_name \
        -pRDS_password
```

**중요**  
`-p` 옵션과 입력한 암호 사이에 공백이 없어야 합니다.  
보안 모범 사례로 예시에 표시된 프롬프트 이외의 자격 증명을 지정하는 것이 좋습니다.

다음 권장 사항과 고려 사항을 잘 파악하고 있어야 합니다.
+ 덤프 파일에서 다음 스키마를 제외합니다.
  + `sys`
  + `performance_schema`
  + `information_schema`

  `mysqldump` 및 `mariadb-dump` 유틸리티는 기본적으로 이러한 스키마를 제외합니다.
+ 사용자 및 권한을 마이그레이션해야 하는 경우 이를 다시 생성하는 데이터 제어 언어(DCL)를 생성하는 도구 사용을 고려합니다. 예를 들어 [pt-show-grants](https://www.percona.com/doc/percona-toolkit/LATEST/pt-show-grants.html) 유틸리티가 있습니다.
+ 가져오기를 수행하려면 사용자가 DB 인스턴스에 액세스할 수 있어야 합니다. 자세한 내용은 [보안 그룹을 통한 액세스 제어](Overview.RDSSecurityGroups.md) 섹션을 참조하세요.

사용되는 파라미터는 다음과 같습니다.
+ `-u local_user` – 사용자 이름을 지정하기 위해 사용합니다. 이 파라미터를 처음 사용할 때, 로컬 MariaDB 데이터베이스에서 `--databases` 파라미터로 식별되는 사용자 계정 이름을 지정합니다.
+ `--databases database_name` – 로컬 MariaDB 인스턴스에서 Amazon RDS로 가져오려는 데이터베이스 이름을 지정합니다.
+ `--single-transaction` – 로컬 데이터베이스에서 로드한 모든 데이터가 단일 시점에서 일치하는지 확인하기 위해 사용합니다. `mysqldump` 또는 `mariadb-dump`가 데이터를 읽는 동안 데이터를 변경하는 다른 프로세스가 있는 경우, 이 파라미터를 사용하여 데이터 무결성을 유지합니다.
+ `--compress` – 데이터를 Amazon RDS로 전송하기 전에 로컬 데이터베이스에서 데이터를 압축하여 네트워크 대역폭 사용을 줄이기 위해 사용합니다.
+ `--order-by-primary` – 기본 키를 기준으로 각 테이블의 데이터를 정렬하여 로드 시간을 줄이기 위해 사용합니다.
+ `--routines` - 복사하려는 데이터베이스에 저장 프로시저 또는 함수와 같은 루틴이 있는 경우 사용합니다. 파라미터를 `0`으로 설정하면 가져오기 프로세스 중에 루틴이 제외됩니다. 그런 다음 나중에 Amazon RDS 데이터베이스에서 루틴을 수동으로 다시 만듭니다.
+ `--triggers` - 복사 중인 데이터베이스에 트리거가 있는 경우 사용합니다. 파라미터를 `0`으로 설정하면 가져오기 프로세스 중에 트리거가 제외됩니다. 그런 다음 Amazon RDS 데이터베이스에서 트리거를 수동으로 다시 만듭니다.
+ `--events` - 복사하려는 데이터베이스에 이벤트가 있는 경우 사용합니다. 파라미터를 `0`으로 설정하면 가져오기 프로세스 중에 이벤트가 제외됩니다. 그런 다음 Amazon RDS 데이터베이스에서 이벤트를 수동으로 다시 만듭니다.
+ `-plocal_password` – 암호를 지정하기 위해 사용합니다. 이 파라미터를 처음 사용할 때, 첫 번째 `-u` 파라미터로 식별되는 사용자 계정 암호를 지정합니다.
+ `-u RDS_user` – 사용자 이름을 지정하기 위해 사용합니다. 이 파라미터를 두 번째로 사용할 때, `--host` 파라미터로 식별되는 MariaDB 인스턴스에 대한 기본 데이터베이스의 사용자 계정 이름을 지정합니다.
+ `--port port_number` - MariaDB DB 인스턴스의 포트를 지정하기 위해 사용합니다. DB 인스턴스를 만들 때 값을 변경하지 않는 한, 기본값은 3306입니다.
+ `--host host_name` - Amazon RDS DB 인스턴스 엔드포인트의 도메인 이름 시스템(DNS) 이름을 지정하기 위해 사용합니다(예:)`myinstance.123456789012.us-east-1.rds.amazonaws.com`. Amazon RDS 콘솔의 인스턴스 세부 정보에서 엔드포인트 값을 찾을 수 있습니다.
+ `-pRDS_password` – 암호를 지정하기 위해 사용합니다. 이 파라미터를 두 번째로 사용할 때, 두 번째 `-u` 파라미터로 식별되는 사용자 계정 암호를 지정합니다.

Amazon RDS 데이터베이스에서 저장 프로시저, 트리거, 함수 또는 이벤트를 수동으로 만들어야 합니다. 복사 중인 데이터베이스에 이런 객체가 하나라도 있는 경우에는 `mysqldump` 또는 `mariadb-dump`를 실행할 때 이런 객체를 제외합니다. 이렇게 하려면 `mysqldump` 또는 `mariadb-dump` 명령에 다음 파라미터를 포함합니다.
+ `--routines=0`
+ `--triggers=0`
+ `--events=0`

**예제**

다음 예제에서는 로컬 호스트에 있는 `world` 샘플 데이터베이스를 RDS for MariaDB DB 인스턴스로 복사합니다. 값을 실제 정보로 바꿉니다.

대상 LinuxmacOS, 또는Unix:

```
sudo mariadb-dump -u local_user \
    --databases world \
    --single-transaction \
    --compress \
    --order-by-primary  \
    --routines=0 \
    --triggers=0 \
    --events=0 \
    -plocal_password | mariadb -u rds_user \
        --port=3306 \
        --host=my_instance.123456789012.us-east-1.rds.amazonaws.com \
        -pRDS_password
```

Windows의 경우:

다음 명령은 Windows 프로그램 메뉴에서 **명령 프롬프트**를 마우스 오른쪽 버튼으로 클릭하고 **관리자 권한으로 실행**을 선택하여 열린 명령 프롬프트에서 실행해야 합니다. 값을 실제 정보로 바꿉니다.

```
mariadb-dump -u local_user ^
    --databases world ^
    --single-transaction ^
    --compress ^
    --order-by-primary  ^
    --routines=0 ^
    --triggers=0 ^
    --events=0 ^
    -plocal_password | mariadb -u RDS_user ^
        --port=3306 ^
        --host=my_instance.123456789012.us-east-1.rds.amazonaws.com ^
        -pRDS_password
```

**참고**  
보안 모범 사례로 예시에 표시된 프롬프트 이외의 자격 증명을 지정하는 것이 좋습니다.

# 가동 중지 시간을 줄이면서 Amazon RDS for MariaDB DB 인스턴스로 데이터 가져오기
<a name="mariadb-importing-data-reduced-downtime"></a>

라이브 애플리케이션을 지원하는 외부 MariaDB 데이터베이스에서 RDS for MariaDB 인스턴스로 데이터를 가져와야 할 경우가 있습니다. 다음 절차를 통해 애플리케이션 가용성에 미치는 영향을 최소화하세요. 이 절차는 대규모 데이터베이스로 작업하는 경우에도 유용합니다. 이 절차를 통해 네트워크를 거쳐 AWS로 전달되는 데이터의 양을 줄여 가져오기 비용을 줄일 수 있습니다.

이 절차에서는 데이터베이스 데이터의 복사본을 Amazon EC2 인스턴스로 전송하고 데이터를 새 Amazon RDS 데이터베이스로 가져옵니다. 그런 다음, 애플리케이션을 Amazon RDS 데이터베이스로 리디렉션하기 전에 복제를 사용하여 Amazon RDS 데이터베이스를 라이브 외부 인스턴스에 맞춰 최신 상태로 업데이트합니다. 외부 인스턴스가 MariaDB 10.0.24 이상이고 대상 인스턴스가 RDS for MariaDB일 경우에는 글로벌 트랜잭션 식별자(GTID)를 기반으로 MariaDB 복제를 구성합니다. 그렇지 않으면 이진 로그 좌표를 기반으로 복제를 구성합니다. GTID 기반 복제가 더욱 신뢰성이 높은 방법이므로 외부 데이터베이스에서 지원된다면 GTID 기반 복제를 사용하는 것이 좋습니다. 자세한 내용은 MariaDB 설명서에서 [Global Transaction ID](http://mariadb.com/kb/en/mariadb/global-transaction-id/) 섹션을 참조하세요.

다음 다이어그램은 외부 MariaDB 데이터베이스를 Amazon RDS의 MariaDB 데이터베이스로 가져오는 것을 보여 줍니다.

![\[외부 MariaDB 데이터베이스를 Amazon RDS의 MariaDB 데이터베이스로 가져오는 것을 보여 주는 워크플로\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/MigrateMariaDBToRDS_1.png)


## 작업 1: 기존 데이터베이스의 복사본 만들기
<a name="mariadb-importing-data-reduced-downtime-copy-database"></a>

최소한의 가동 중지 시간으로 대량의 데이터를 RDS for MariaDB 데이터베이스로 마이그레이션하는 프로세스에서 첫 번째 단계는 원본 데이터의 복사본을 만드는 것입니다.

다음 다이어그램은 MariaDB 데이터베이스의 백업을 만드는 방법을 보여 줍니다.

![\[MariaDB 데이터베이스의 백업 만드는 방법을 보여 주는 워크플로\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/MigrateMariaDBToRDS_2.png)


`mysqldump` 또는 `mariadb-dump` 유틸리티를 사용하여 SQL 또는 구분 기호로 분리된 텍스트 형식으로 데이터베이스 백업본을 만들 수 있습니다. MariaDB 10.5에서는 이 클라이언트를 [mariadb-dump](https://mariadb.com/kb/en/mariadb-dump/)라고 합니다. MariaDB 11.0.1부터 `mysqldump` 대신 `mariadb-dump`를 사용해야 합니다. 비프로덕션 환경에서 각각의 형식으로 테스트 실행을 통해 어떤 방법을 사용해야 `mysqldump` 또는 `mariadb-dump` 실행 시간이 최소화되는지 확인하는 것을 권장합니다.

또한, 로드를 위해 구분 기호로 분리된 텍스트 형식을 사용할 때의 이점에 대해 `mysqldump` 또는 `mariadb-dump` 성능상의 이점을 비교 검토하는 것을 권장합니다. 구분 기호로 분리된 텍스트 형식을 사용하는 백업에서는 덤프되는 각 테이블에 대해 탭으로 구분된 텍스트 파일이 생성됩니다. 데이터베이스를 가져오는 데 필요한 시간을 줄이기 위해 `LOAD DATA LOCAL INFILE` 명령을 사용하여 이런 파일을 병렬로 로드할 수 있습니다. 자세한 내용은 모든 소스에서 데이터 가져오기 절차의 [5단계: 데이터 로드](mariadb-importing-data-any-source.md#mariadb-importing-data-any-source-load-data) 섹션을 참조하세요.

백업 작업을 시작하기 전에 Amazon RDS로 복사할 MariaDB 데이터베이스에서 복제 옵션을 설정해야 합니다. 복제 옵션에는 이진 로깅 활성화와 고유한 서버 ID 설정이 포함됩니다. 이러한 옵션을 설정하면 서버가 데이터베이스 트랜잭션 로깅을 시작하고 이 프로세스의 후반부에 소스 복제 인스턴스가 되도록 서버를 준비시킵니다.

다음 권장 사항과 고려 사항을 잘 파악하고 있어야 합니다.
+ 데이터베이스의 일관된 상태를 덤프하기 때문에 `mysqldump` 또는 `mariadb-dump`와 함께 `--single-transaction` 옵션을 사용하세요. 덤프 파일이 올바른지 확인하려면 `mysqldump` 또는 `mariadb-dump`가 실행되는 동안 데이터 정의 언어(DDL) 문을 실행하지 마시기 바랍니다. 이러한 작업에 대한 유지 관리 기간을 예약할 수 있습니다.
+ 덤프 파일에서 다음 스키마를 제외합니다.
  + `sys`
  + `performance_schema`
  + `information_schema`

  `mysqldump` 및 `mariadb-dump` 유틸리티는 기본적으로 이러한 스키마를 제외합니다.
+ 사용자 및 권한을 마이그레이션해야 하는 경우 이를 다시 생성하는 데이터 제어 언어(DCL)를 생성하는 도구 사용을 고려합니다. 예를 들어 [pt-show-grants](https://www.percona.com/doc/percona-toolkit/LATEST/pt-show-grants.html) 유틸리티가 있습니다.

### 복제 옵션을 설정하려면
<a name="mariadb-importing-data-reduced-downtime-set-replication-options"></a>

1. `my.cnf` 파일을 편집합니다. 이 파일은 보통 `/etc` 아래에 있습니다.

   ```
   sudo vi /etc/my.cnf
   ```

   `log_bin` 및 `server_id` 옵션을 `[mysqld]` 섹션에 추가합니다. `log_bin` 옵션은 이진 로그 파일에 대한 파일 이름 식별자를 제공합니다. `server_id` 옵션은 소스-복제본 관계에서 서버의 고유 식별자를 제공합니다.

   다음 예제에서는 `my.cnf` 파일의 업데이트된 `[mariadb]` 섹션을 보여줍니다.

   ```
   [mariadb]
   log-bin
   server-id=1 
   log-basename=master1
   binlog-format=mixed
   ```

   자세한 내용은 MariaDB 설명서의 [Setting the Replication Source Configuration](https://mariadb.com/docs/server/ha-and-performance/standard-replication/setting-up-replication)을 참조하세요.

1. 다중 AZ DB 클러스터를 사용한 복제의 경우 `gtid_strict_mode`를 활성화합니다. 자세한 내용은 MariaDB 설명서의 [gtid\$1strict\$1mode](https://mariadb.com/docs/server/ha-and-performance/standard-replication/gtid#gtid_strict_mode)를 참조하세요.

   DB 인스턴스를 사용한 복제에는 `gtid_strict_mode` 활성화가 필요하지 않습니다.

1. `mariadb` 서비스를 다시 시작합니다.

   ```
   sudo service mariadb restart
   ```

### 기존 데이터베이스의 백업 복사본 만들기
<a name="mariadb-importing-data-reduced-downtime-create-backup"></a>

1. SQL 또는 구분 기호로 분리된 텍스트 형식을 지정하는 `mysqldump` 또는 `mariadb-dump` 유틸리티를 사용하여 데이터 백업을 만듭니다.

   성능을 개선하고 데이터 무결성을 보장하려면 `mysqldump` 및 `mariadb-dump`에 `--order-by-primary` 및 `--single-transaction` 옵션을 사용합니다.

   백업에 MySQL 시스템 데이터베이스가 포함되지 않도록 하려면 `mysqldump` 또는 `mariadb-dump`에 `--all-databases` 옵션을 사용하지 마세요. 자세한 내용은 MySQL 설명서의 [Creating a Data Snapshot Using mysqldump](https://dev.mysql.com/doc/mysql-replication-excerpt/8.0/en/replication-howto-mysqldump.html)를 참조하세요.

   필요한 경우 `chmod`를 사용하여 백업 파일이 만들어질 디렉터리가 쓰기 가능한 디렉터리가 되도록 하세요.
**중요**  
Windows에서는 명령 창을 관리자 권한으로 실행하십시오.
   + SQL 출력을 표시하려면 다음 명령을 사용합니다. MariaDB 10.11 이하 버전의 경우 `mariadb-dump`를 `mysqldump`로 바꿉니다.

     대상 LinuxmacOS, 또는Unix:

     ```
     sudo mariadb-dump \
         --databases database_name \
         --master-data=2  \
         --single-transaction \
         --order-by-primary \
         -r backup.sql \
         -u local_user \
         -ppassword
     ```
**참고**  
보안 모범 사례로 예시에 표시된 프롬프트 이외의 자격 증명을 지정하는 것이 좋습니다.

     Windows의 경우:

     ```
     mariadb-dump ^
         --databases database_name ^
         --master-data=2  ^
         --single-transaction ^
         --order-by-primary ^
         -r backup.sql ^
         -u local_user ^
         -ppassword
     ```
**참고**  
보안 모범 사례로 예시에 표시된 프롬프트 이외의 자격 증명을 지정하는 것이 좋습니다.
   + 구분 기호로 분리된 텍스트 출력을 표시하려면 다음 명령을 사용합니다. MariaDB 11.01 이상 버전의 경우 `mysqldump`를 `mariadb-dump`로 교체하세요.

     대상 LinuxmacOS, 또는Unix:

     ```
     sudo mysqldump \
         --tab=target_directory \
         --fields-terminated-by ',' \
         --fields-enclosed-by '"' \
         --lines-terminated-by 0x0d0a \
         database_name \
         --master-data=2 \
         --single-transaction \
         --order-by-primary \
         -ppassword
     ```

     Windows의 경우:

     ```
     mysqldump ^
         --tab=target_directory ^
         --fields-terminated-by "," ^
         --fields-enclosed-by """ ^
         --lines-terminated-by 0x0d0a ^
         database_name ^
         --master-data=2 ^
         --single-transaction ^
         --order-by-primary ^
         -ppassword
     ```
**참고**  
보안 모범 사례로 예시에 표시된 프롬프트 이외의 자격 증명을 지정하는 것이 좋습니다.  
Amazon RDS 데이터베이스에서 저장 프로시저, 트리거, 함수 또는 이벤트를 수동으로 만들어야 합니다. 복사 중인 데이터베이스에 이런 객체가 하나라도 있는 경우에는 `mysqldump` 또는 `mariadb-dump`를 실행할 때 이런 객체를 제외합니다. 이렇게 하려면 `mysqldump` 또는 `mariadb-dump` 명령에 다음 인수를 포함하세요.  
`--routines=0`
`--triggers=0`
`--events=0`

     `mysqldump`를 사용하고 구분 기호로 분리된 텍스트 형식을 지정하면 `CHANGE MASTER TO` 설명이 반환됩니다. 이 설명에는 마스터 로그 파일 이름과 위치가 포함됩니다. 외부 인스턴스가 MariaDB 버전 10.0.23 이상이면 `MASTER_LOG_FILE` 및 `MASTER_LOG_POS`의 값을 기록해 둡니다. 복제를 설정할 때 이러한 값이 필요합니다.

     MariaDB 버전에 대해 다음 출력이 반환됩니다.

     ```
     -- Position to start replication or point-in-time recovery from
     --
     -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin-changelog.000031', MASTER_LOG_POS=107;
     ```

1. 사용하는 외부 인스턴스가 MariaDB 버전 10.0.24 이상일 경우 GTID 기반 복제를 사용합니다. 외부 MariaDB 인스턴스에서 `SHOW MASTER STATUS`를 실행하여 이진 로그 파일 이름 및 위치를 가져온 다음, 외부 MariaDB 인스턴스에서 `BINLOG_GTID_POS`를 실행하여 GTID로 변환합니다.

   ```
   SELECT BINLOG_GTID_POS('binary_log_file_name', binary_log_file_position);
   ```

   반환된 GTID를 기록해 둡니다. 복제를 구성하는 데 GTID가 필요합니다.

1. 복사된 데이터를 압축하여 데이터를 Amazon RDS 데이터베이스로 복사하는 데 필요한 네트워크 리소스의 양을 줄입니다. 백업 파일의 크기를 기록해 둡니다. Amazon EC2 인스턴스를 얼마나 크게 만들지 결정할 때 이 정보가 필요합니다. 모두 완료되었으면, GZIP 또는 선호하는 압축 유틸리티를 사용하여 백업 파일을 압축합니다.
   + SQL 출력을 압축하려면 다음 명령을 사용합니다.

     ```
     gzip backup.sql
     ```
   + 구분 기호로 분리된 텍스트 출력을 압축하려면 다음 명령을 사용합니다.

     ```
     tar -zcvf backup.tar.gz target_directory
     ```

## 작업 2: Amazon EC2 인스턴스 만들기 및 압축된 데이터베이스 복사
<a name="mariadb-importing-data-reduced-downtime-create-ec2-copy-database"></a>

압축된 데이터베이스 백업 파일을 Amazon EC2 인스턴스로 복사할 때는 데이터베이스 인스턴스 사이에서 압축되지 않은 데이터를 직접 복사할 때보다 네트워크 리소스를 덜 사용합니다. 데이터가 Amazon EC2에 있으면 MariaDB 데이터베이스로 바로 데이터를 복사할 수 있습니다. 네트워크 리소스의 비용을 절약하려면 Amazon EC2 인스턴스가 Amazon RDS DB 인스턴스와 같은 AWS 리전에 있어야 합니다. Amazon EC2 인스턴스를 Amazon RDS 데이터베이스와 같은 AWS 리전에 두면 가져오기 도중의 네트워크 대기 시간도 줄어듭니다.

다음 다이어그램은 데이터베이스 백업을 Amazon EC2 인스턴스로 복사하는 것을 보여줍니다.

![\[Amazon EC2 인스턴스에 데이터베이스 백업을 복사하는 것을 보여 주는 워크플로\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/MigrateMariaDBToRDS_3.png)


### Amazon EC2 인스턴스를 만들고 데이터를 복사하려면
<a name="mariadb-importing-data-reduced-downtime-create-ec2"></a>

1. Amazon RDS 데이터베이스를 만들려는 AWS 리전에서 가상 프라이빗 클라우드(VPC), VPC 보안 그룹 및 VPC 서브넷을 만듭니다. VPC 보안 그룹의 인바운드 규칙에서 애플리케이션에 필요한 IP 주소가 AWS에 연결하도록 허용하는지 확인합니다. IP 주소의 범위(예: `203.0.113.0/24`) 또는 다른 VPC 보안 그룹을 지정할 수 있습니다. [Amazon VPC 콘솔](https://console.aws.amazon.com/vpc)을 사용하여 VPC, 서브넷 및 보안 그룹을 만들고 관리할 수 있습니다. 자세한 내용은 *Amazon Virtual Private Cloud 사용 설명서*의 [Getting started with Amazon VPC](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html#getting-started)를 참조하세요.

1. [Amazon EC2 콘솔](https://console.aws.amazon.com/ec2)을 열고 Amazon EC2 인스턴스와 Amazon RDS 데이터베이스를 모두 포함하는 AWS 리전을 선택합니다. 1단계에서 만든 VPC, 서브넷 및 보안 그룹을 사용하여 Amazon EC2 인스턴스를 시작합니다. 데이터베이스 백업 파일이 압축되어 있지 않을 때는 이 파일을 위한 충분한 스토리지 공간을 가진 인스턴스 유형을 선택해야 합니다. Amazon EC2 인스턴스에 관한 세부 정보는 *Amazon Elastic Compute Cloud 사용 설명서*의 [Getting started with Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html)를 참조하세요.

1.  Amazon EC2 인스턴스에서 Amazon RDS 데이터베이스로 연결하려면 VPC 보안 그룹을 편집하세요. EC2 인스턴스의 프라이빗 IP 주소를 지정하는 인바운드 규칙을 추가합니다. EC2 콘솔 창에 있는 **인스턴스** 창의 **세부 정보** 탭에서 프라이빗 IP 주소를 찾을 수 있습니다. VPC 보안 그룹을 편집하고 인바운드 규칙을 추가하려면 EC2 콘솔 탐색 창에서 **보안 그룹(Security Groups)**를 선택하고 보안 그룹을 선택한 다음 EC2 인스턴스의 프라이빗 IP 주소를 지정하는 MySQL 또는 Aurora에 대한 인바운드 규칙을 추가합니다. 인바운드 규칙을 VPC 보안 그룹에 추가하는 방법을 알아보려면 *Amazon Virtual Private Cloud 사용 설명서*의 [Security group rules](https://docs.aws.amazon.com/vpc/latest/userguide/security-group-rules.html)를 참조하세요.

1. 로컬 시스템에서 Amazon EC2 인스턴스로 압축된 데이터베이스 백업 파일을 복사합니다. 필요한 경우 `chmod`를 사용하여 Amazon EC2 인스턴스의 대상 디렉터리에 대해 쓰기 권한이 있는지 확인하세요. `scp` 또는 Secure Shell(SSH) 클라이언트를 사용하여 파일을 복사할 수 있습니다. 다음은 예제 `scp` 명령입니다.

   ```
   scp -r -i key pair.pem backup.sql.gz ec2-user@EC2 DNS:/target_directory/backup.sql.gz
   ```
**중요**  
민감한 데이터는 반드시 보안 네트워크 전송 프로토콜을 사용하여 복사해야 합니다.

1. Amazon EC2 인스턴스에 연결하고 다음 명령을 사용하여 최신 업데이트와 MariaDB 클라이언트 도구를 설치합니다.

   ```
   sudo yum update -y
   sudo yum install mariadb1011-client-utils -y
   ```

   자세한 내용은 *Amazon Elastic Compute Cloud 사용 설명서*의 Linux 인스턴스용 [인스턴스에 연결](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html#ec2-connect-to-instance-linux) 및 MariaDB 설명서의 [MariaDB 커넥터](https://mariadb.com/docs/connectors)를 참조하세요.

1. Amazon EC2 인스턴스에 연결되어 있는 상태에서 데이터베이스 백업 파일의 압축을 풉니다. 다음 명령은 예시입니다.
   + SQL 출력을 압축 해제하려면 다음 명령을 사용합니다.

     ```
     gzip backup.sql.gz -d
     ```
   + 구분 기호로 분리된 텍스트 출력을 압축 해제하려면 다음 명령을 사용합니다.

     ```
     tar xzvf backup.tar.gz
     ```

## 작업 3: MariaDB 데이터베이스 만들기 및 Amazon EC2 인스턴스에서 데이터 가져오기
<a name="mariadb-importing-data-reduced-downtime-create-database-import-data"></a>

Amazon EC2 인스턴스와 같은 AWS 리전에 RDS for MariaDB DB 인스턴스를 만들면 인터넷보다 빠른 속도로 Amazon EC2에서 데이터베이스 백업 파일을 가져올 수 있습니다.

다음 다이어그램은 Amazon EC2 인스턴스에서 MariaDB 데이터베이스로 백업을 가져오는 것을 보여 줍니다.

![\[EC2 인스턴스에서 MariaDB 데이터베이스로 백업을 가져오는 것을 보여 주는 워크플로\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/MigrateMariaDBToRDS_4.png)


### MariaDB 데이터베이스를 만들고 데이터 가져오기
<a name="mariadb-importing-data-reduced-downtime-create-database"></a>

1. 이 Amazon RDS 데이터베이스에 대해 예상되는 워크로드를 지원하기 위해 필요한 DB 인스턴스 클래스와 스토리지 공간의 양을 결정합니다. 이 프로세스의 일환으로 데이터 로드 절차를 위해 충분한 공간과 처리 용량이 어느 정도인지 결정합니다. 또한 프로덕션 워크로드를 처리하는 데 필요한 사항을 결정합니다. 원본 MariaDB 데이터베이스의 크기와 리소스를 바탕으로 평가할 수 있습니다. 자세한 내용은 [DB 인스턴스 클래스](Concepts.DBInstanceClass.md) 섹션을 참조하세요.

1. Amazon EC2 인스턴스가 포함된 AWS 리전에서 DB 인스턴스를 생성합니다. [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md)의 지침을 따르고 다음 가이드라인을 사용합니다.
   + 소스 DB 인스턴스와 호환되는 DB 엔진 버전을 지정합니다.
   + Amazon EC2 인스턴스에서와 동일한 Virtual Private Cloud(VPC) 및 VPC 보안 그룹을 지정합니다. 이 접근 방식에서는 Amazon EC2 인스턴스와 Amazon RDS 인스턴스가 네트워크를 통해 서로를 볼 수 있습니다. DB 인스턴스가 공개적으로 액세스 가능한지 확인합니다. 다음 섹션에 설명한 대로 소스 데이터베이스를 사용하여 복제를 설정하려면 DB 인스턴스에 공개적으로 액세스할 수 있어야 합니다.
   + 데이터베이스 백업을 가져온 후에만 여러 가용 영역, 백업 보존 또는 읽기 전용 복제본을 구성해야 합니다 가져오기가 완료되면 프로덕션 인스턴스에 대해 다중 AZ 및 백업 보존을 설정할 수 있습니다.

1. Amazon RDS 데이터베이스에 대한 기본 구성 옵션을 검토합니다. 데이터베이스에 대한 기본 파라미터 그룹에 원하는 구성 옵션이 없는 경우, 원하는 구성 옵션이 있는 다른 파라미터 그룹을 찾거나 새 파라미터 그룹을 생성합니다. 파라미터 그룹을 생성하는 것에 대한 자세한 내용은 [Amazon RDS의 파라미터 그룹](USER_WorkingWithParamGroups.md) 섹션을 참조하세요.

1. 마스터 사용자로 Amazon RDS 데이터베이스에 연결합니다. DB 인스턴스에 액세스해야 하는 서비스, 애플리케이션 및 관리자를 지원하는 데 필요한 사용자를 만듭니다. Amazon RDS 데이터베이스의 호스트 이름은 포트 번호를 포함하지 않은 DB 인스턴스의 **엔드포인트** 값입니다(예: `mysampledb.123456789012.us-west-2.rds.amazonaws.com`). Amazon RDS 콘솔의 데이터베이스 세부 정보에서 엔드포인트 값을 찾을 수 있습니다.

1. Amazon EC2 인스턴스에 연결합니다. 자세한 내용은 *Amazon Elastic Compute Cloud 사용 설명서*의 [Connect to your instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html#ec2-connect-to-instance-linux)를 참조하세요.

1. `mysql` 명령을 사용하여 Amazon EC2 인스턴스에서 원격 호스트로 Amazon RDS 데이터베이스에 연결합니다. 다음 명령은 예제입니다.

   ```
   mysql -h host_name -P 3306 -u db_master_user -p
   ```

   *host\$1name*은 Amazon RDS 데이터베이스 엔드포인트입니다.

1. `mysql` 프롬프트에서 `source` 명령을 실행하고 데이터베이스 덤프 파일의 이름을 전달합니다. 이 명령은 데이터를 Amazon RDS DB 인스턴스로 로드합니다.
   + SQL 형식인 경우 다음 명령을 사용합니다.

     ```
     MariaDB [(none)]> source backup.sql;
     ```
   + 구분 기호로 분리된 텍스트 형식의 경우 Amazon RDS 데이터베이스를 설정할 때 만든 기본 데이터베이스가 아니라면 먼저 데이터베이스를 만듭니다.

     ```
     MariaDB [(none)]> create database database_name;
     MariaDB [(none)]> use database_name;
     ```

     그런 다음, 테이블을 생성합니다.

     ```
     MariaDB [(none)]> source table1.sql
     MariaDB [(none)]> source table2.sql
     etc...
     ```

     그런 다음, 데이터를 가져옵니다.

     ```
     MariaDB [(none)]> LOAD DATA LOCAL INFILE 'table1.txt' INTO TABLE table1 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '0x0d0a';
     MariaDB [(none)]> LOAD DATA LOCAL INFILE 'table2.txt' INTO TABLE table2 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '0x0d0a';
     etc...
     ```

     성능을 개선하려면 여러 연결에서 이들 작업을 병렬로 수행하여 모든 테이블이 만들어진 다음에 동시에 로드되도록 할 수 있습니다.
**참고**  
처음에 테이블을 덤프할 때 `mysqldump` 또는 `LOAD DATA LOCAL INFILE`와 함께 데이터 서식 옵션을 사용했다면, `mariadb-dump`와 같은 옵션을 사용하여 데이터 파일 내용을 올바로 해석해야 합니다.

1. 가져온 데이터베이스에 있는 테이블 중 1개 또는 2개에 대해 간단한 `SELECT` 쿼리를 실행하여 가져오기에 성공했는지 확인합니다.

이 절차에 사용되는 Amazon EC2 인스턴스가 더 이상 필요하지 않은 경우 EC2 인스턴스를 종료하여 AWS 리소스 사용량을 줄여야 합니다. EC2 인스턴스를 종료하려면 *Amazon Elastic Compute Cloud 사용 설명서*의 [Terminate an instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html#terminating-instances-console)를 참조하세요.

## 작업 4: 외부 데이터베이스에서 새 Amazon RDS 데이터베이스로 데이터 복제
<a name="mariadb-importing-data-reduced-downtime-replicate-data"></a>

MariaDB 데이터베이스로 데이터를 복사하고 전송하는 데 걸린 시간 중에 원본 데이터베이스가 업데이트되었을 것입니다. 복제를 사용하여 복사된 데이터베이스를 원본 데이터베이스에 맞춰 최신 상태로 업데이트합니다.

![\[외부 MariaDB 데이터베이스에서 Amazon RDS의 데이터베이스로 데이터를 복제하는 것을 보여 주는 워크플로\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/MigrateMariaDBToRDS_5.png)


Amazon RDS 데이터베이스에서 복제를 시작하는 데 필요한 권한은 제한되고 Amazon RDS 마스터 사용자는 사용할 수 없습니다. 따라서 다음의 적절한 Amazon RDS 저장 프로시저를 사용합니다.
+ [mysql.rds\$1set\$1external\$1master](mysql-stored-proc-replicating.md#mysql_rds_set_external_master) 
+ 복제를 구성하려면 [mysql.rds\$1set\$1external\$1master\$1gtid](mysql_rds_set_external_master_gtid.md), 복제를 시작하려면 [mysql.rds\$1start\$1replication](mysql-stored-proc-replicating.md#mysql_rds_start_replication)

### 복제를 시작하려면
<a name="mariadb-importing-data-reduced-downtime-start-replication"></a>

작업 1에서 [복제 옵션을 설정](#mariadb-importing-data-reduced-downtime-set-replication-options)할 때 이진 로깅을 활성화하고 소스 데이터베이스의 고유한 서버 ID를 설정합니다. 이제 라이브 데이터베이스를 소스 복제 인스턴스로 포함하고 있는 복제본으로서 Amazon RDS 데이터베이스를 설정할 수 있습니다.

1. Amazon RDS 콘솔에서 Amazon RDS 데이터베이스에 대한 VPC 보안 그룹에 원본 데이터베이스를 호스팅하는 서버의 IP 주소를 추가합니다. VPC 보안 그룹 구성에 관한 자세한 내용은 *Amazon Virtual Private Cloud 사용 설명서*의 [Configure security group rules](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-security-group-rules.html)를 참조하세요.

   원본 인스턴스와 통신할 수 있도록, Amazon RDS 데이터베이스 IP 주소에서의 연결을 허용하도록 로컬 네트워크를 구성해야 할 수도 있습니다. Amazon RDS 데이터베이스의 IP 주소를 확인하려면 `host` 명령을 사용합니다.

   ```
   host host_name
   ```

   *host\$1name*은 Amazon RDS 데이터베이스 엔드포인트의 DNS 이름입니다(예: `myinstance.123456789012.us-east-1.rds.amazonaws.com`). Amazon RDS 콘솔의 인스턴스 세부 정보에서 엔드포인트 값을 찾을 수 있습니다.

1. 선택한 클라이언트를 사용하여 원본 인스턴스에 연결하고 복제에 사용될 사용자를 만듭니다. 이 계정은 오직 복제용으로만 사용되며 보안 향상을 위해 사용자의 도메인으로 제한되어야 합니다. 다음 명령은 예제입니다.

   ```
   CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'password';
   ```
**참고**  
보안 모범 사례로 여기에 표시된 프롬프트 이외의 보안 인증 정보를 지정하는 것이 좋습니다.

1. 원본 인스턴스의 경우 복제 사용자에게 `REPLICATION CLIENT` 및 `REPLICATION SLAVE` 권한을 부여합니다. 예를 들어 도메인의 '`REPLICATION CLIENT`' 사용자를 위해 모든 데이터베이스에서 `REPLICATION SLAVE` 및 `repl_user` 권한을 부여하려면 다음 명령을 실행합니다.

   ```
   GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com';
   ```

1. SQL 형식을 사용하여 백업 파일을 만들었고 외부 인스턴스가 MariaDB 10.0.24 이상이 아닌 경우 다음 명령을 실행하여 해당 파일의 내용을 살펴봅니다.

   ```
   cat backup.sql
   ```

   이 파일에는 마스터 로그 파일 이름과 위치를 포함한 `CHANGE MASTER TO` 설명이 포함됩니다. 이 설명은 `--master-data`와 함께 `mysqldump` 옵션을 사용할 때 백업 파일에 포함됩니다. `MASTER_LOG_FILE` 및 `MASTER_LOG_POS`에 대한 값을 확인합니다.

   ```
   --
   -- Position to start replication or point-in-time recovery from
   --
   
   -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin-changelog.000031', MASTER_LOG_POS=107;
   ```

   구분 기호로 분리된 텍스트 형식을 사용하여 백업 파일을 만들었고 외부 인스턴스가 MariaDB 10.0.24 이상이 아닌 경우, 작업 1 [존재하는 데이터베이스의 백업 복사본을 생성한 경우](#mariadb-importing-data-reduced-downtime-create-backup)의 1단계에서 바이너리 로그 좌표를 이미 확보했을 것입니다.

   외부 인스턴스가 MariaDB 10.0.24 이상인 경우, 작업 1 [기존 데이터베이스의 백업 사본을 생성한 경우](#mariadb-importing-data-reduced-downtime-create-backup)의 2단계에서 복제를 시작할 GTID를 이미 확보했을 것입니다.

1. Amazon RDS 데이터베이스를 복제본으로 만듭니다. 외부 인스턴스가 MariaDB 10.0.24 이상이 아닌 경우 마스터 사용자로 Amazon RDS 데이터베이스에 연결하고 [mysql.rds\$1set\$1external\$1master](mysql-stored-proc-replicating.md#mysql_rds_set_external_master) 저장된 프로시저를 사용하여 소스 데이터베이스를 소스 복제 인스턴스로 식별합니다.

   SQL 형식 백업 파일이 있는 경우 4단계에서 확인한 마스터 로그 파일 이름과 마스터 로그 위치를 사용합니다. 구분 기호로 분리된 텍스트 형식을 사용한 경우 백업 파일을 만들 때 확인한 이름과 위치를 사용합니다. 다음 명령은 예제입니다.

   ```
   CALL mysql.rds_set_external_master ('myserver.mydomain.com', 3306,
       'repl_user', 'password', 'mysql-bin-changelog.000031', 107, 1);
   ```
**참고**  
보안 모범 사례로 여기에 표시된 프롬프트 이외의 보안 인증 정보를 지정하는 것이 좋습니다.

   외부 인스턴스가 MariaDB 10.0.24 이상인 경우 마스터 사용자로 Amazon RDS 데이터베이스에 연결하고 [mysql.rds\$1set\$1external\$1master\$1gtid](mysql_rds_set_external_master_gtid.md) 저장된 프로시저를 사용하여 소스 데이터베이스를 소스 복제 인스턴스로 식별합니다. 작업 1의 [기존 데이터베이스의 백업 복사본을 생성한 경우](#mariadb-importing-data-reduced-downtime-create-backup)의 2단계에서 확보한 GTID를 사용합니다. 다음 명령은 예제입니다.

   ```
   CALL mysql.rds_set_external_master_gtid ('source_server_ip_address', 3306, 'ReplicationUser', 'password', 'GTID', 1); 
   ```

   `source_server_ip_address`는 소스 복제 인스턴스의 IP 주소입니다. EC2 프라이빗 DNS 주소는 현재 지원되지 않습니다.
**참고**  
보안 모범 사례로 여기에 표시된 프롬프트 이외의 보안 인증 정보를 지정하는 것이 좋습니다.

1. Amazon RDS 데이터베이스에서 [mysql.rds\$1start\$1replication](mysql-stored-proc-replicating.md#mysql_rds_start_replication) 저장 프로시저를 사용하는 다음 명령을 실행하여 복제를 시작합니다.

   ```
   CALL mysql.rds_start_replication;
   ```

1. Amazon RDS 데이터베이스에서 [SHOW REPLICA STATUS](https://dev.mysql.com/doc/refman/8.0/en/show-replica-status.html) 명령을 실행하여 복제본이 소스 복제 인스턴스에 맞게 최신 상태가 되는 시점을 파악합니다. `SHOW REPLICA STATUS` 명령의 결과에는 `Seconds_Behind_Master` 필드가 포함됩니다. `Seconds_Behind_Master` 필드가 0을 반환하면 복제본이 원본 복제 인스턴스로 업데이트됩니다.

   MariaDB 10.5, 10.6, 10.11, 11.4 또는 11.8 DB 인스턴스의 경우 MySQL 명령을 실행하는 대신 [mysql.rds\$1replica\$1status](mysql_rds_replica_status.md) 저장 프로시저를 실행합니다.

1. Amazon RDS 데이터베이스가 최신 상태로 업데이트된 후, 필요할 경우 그 데이터베이스를 복원할 수 있도록 자동 백업을 활성화합니다. [Amazon RDS 콘솔](https://console.aws.amazon.com/rds/)을 사용하여 Amazon RDS 데이터베이스에 대한 자동 백업을 켜거나 수정할 수 있습니다. 자세한 내용은 [백업 소개](USER_WorkingWithAutomatedBackups.md) 섹션을 참조하세요.

## 작업 5: 라이브 애플리케이션을 Amazon RDS 인스턴스로 리디렉션
<a name="mariadb-importing-data-reduced-downtime-redirect-app"></a>

MariaDB 데이터베이스가 소스 복제 인스턴스에 맞게 최신 상태로 업데이트되면 라이브 애플리케이션을 업데이트하여 Amazon RDS 인스턴스를 사용할 수 있습니다.

![\[복제를 중지하고 라이브 애플리케이션을 Amazon RDS 데이터베이스로 리디렉션하는 것을 보여주는 워크플로\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/MigrateMariaDBToRDS_6.png)


### 라이브 애플리케이션을 MariaDB 데이터베이스로 리디렉션하고 복제 중지
<a name="mariadb-importing-data-reduced-downtime-redirect-app-stop-app"></a>

1. Amazon RDS 데이터베이스에 대한 VPC 보안 그룹을 추가하려면 애플리케이션을 호스팅하는 서버의 IP 주소를 추가합니다. VPC 보안 그룹 수정에 대한 자세한 내용은 *Amazon Virtual Private Cloud 사용 설명서*의 [Configure security group rules](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-security-group-rules.html)를 참조하세요.

1. [SHOW REPLICA STATUS](https://dev.mysql.com/doc/refman/8.0/en/show-replica-status.html) 명령 결과에서 `Seconds_Behind_Master` 필드가 0인지 확인합니다. 이 필드가 0이라는 것은 복제본이 소스 복제 인스턴스를 통해 최신 상태가 된 것을 나타냅니다.

   ```
   SHOW REPLICA STATUS;
   ```

   MariaDB 10.5, 10.6, 10.11, 11.4 또는 11.8 DB 인스턴스의 경우 MySQL 명령을 실행하는 대신 [mysql.rds\$1replica\$1status](mysql_rds_replica_status.md) 프로시저를 실행합니다.

1. 트랜잭션이 완료되면 소스에 대한 모든 연결을 닫습니다.

1. Amazon RDS 데이터베이스를 사용할 수 있도록 애플리케이션을 업데이트합니다. 이 업데이트에는 일반적으로 Amazon RDS 데이터베이스의 호스트 이름과 포트, 연결할 사용자 계정과 암호, 사용할 데이터베이스를 식별하기 위해 연결 설정을 변경하는 과정이 포함됩니다.

1. DB 인스턴스에 연결합니다.

1. [mysql.rds\$1stop\$1replication](mysql-stored-proc-replicating.md#mysql_rds_stop_replication) 저장된 프로시저를 사용하는 다음 명령을 실행하여 Amazon RDS 인스턴스에 대한 복제를 중지합니다.

   ```
   CALL mysql.rds_stop_replication;
   ```

1. Amazon RDS 데이터베이스의 [mysql.rds\$1reset\$1external\$1master](mysql-stored-proc-replicating.md#mysql_rds_reset_external_master) 저장 프로시저를 사용하는 다음 명령을 실행하여 이 인스턴스가 더 이상 복제본으로 식별되지 않도록 복제 구성을 재설정합니다.

   ```
   CALL mysql.rds_reset_external_master;
   ```

1. 다중 AZ 지원 및 읽기 전용 복제본과 같은 Amazon RDS 기능을 추가로 활성화합니다. 자세한 내용은 [Amazon RDS에 대한 다중 AZ 배포 구성 및 관리](Concepts.MultiAZ.md) 및 [DB 인스턴스 읽기 전용 복제본 작업](USER_ReadRepl.md) 섹션을 참조하세요.

# 원하는 소스에서 Amazon RDS for MariaDB DB 인스턴스로 데이터 가져오기
<a name="mariadb-importing-data-any-source"></a>

Amazon RDS를 사용하면 기존 MariaDB 데이터를 모든 소스에서 RDS for MariaDB DB 인스턴스로 마이그레이션할 수 있습니다. 온프레미스 데이터베이스, 기타 클라우드 공급자 또는 기존 RDS for MariaDB DB 인스턴스에서 대상 RDS for MariaDB DB 인스턴스로 데이터를 전송할 수 있습니다. 이 기능을 사용하면 데이터베이스를 통합하거나, 재해 복구 솔루션을 구현하거나, 자체 관리형 데이터베이스에서 전환할 수 있습니다. 일반적인 시나리오로는 자체 호스팅 MariaDB 서버에서 완전 관리형 Amazon RDS DB 인스턴스로 이동하거나, 여러 MariaDB 데이터베이스를 단일 DB 인스턴스로 통합하거나, 프로덕션 데이터를 사용하여 테스트 환경을 생성하는 것이 있습니다. 다음 섹션에서는 `mariadb-dump`, 백업 파일 또는 복제와 같은 방법을 사용하여 MariaDB 데이터를 가져오기 위한 단계별 지침을 제공합니다.

## 1단계: 로드할 데이터를 포함한 플랫 파일 만들기
<a name="mariadb-importing-data-any-source-create-flat-files"></a>

쉼표로 구분된 값(CSV)과 같은 일반적인 형식을 사용하여 로드할 데이터를 저장합니다. 각 테이블에는 자체 파일이 있어야 하며, 여러 테이블에 대한 데이터를 같은 파일에 결합할 수 없습니다. 각 파일의 이름은 그에 상응하는 테이블과 같은 이름으로 지정합니다. 파일 확장명은 원하는 대로 정할 수 있습니다. 예를 들어, 테이블 이름이 `sales`인 경우 파일 이름은 `sales.csv` 또는 `sales.txt`일 수 있습니다.

가능하면 로드되는 테이블의 프라이머리 키를 기준으로 데이터를 정렬하세요. 그러면 로드 시간이 대폭 단축되고 데이터 스토리지 요구 사항이 최소화됩니다.

이 절차의 수행 속도와 효율성은 파일의 크기를 작게 유지하느냐에 좌우됩니다. 개별 파일의 압축되지 않은 크기가 1GiB보다 큰 경우에는 파일을 여러 개의 파일로 분할하고 각각 하나씩 따로 로드합니다.

Unix와 같은 시스템(Linux 포함)에서는 `split` 명령을 사용합니다. 예를 들어 다음 명령을 실행하면 `sales.csv` 파일이 1GiB 미만의 여러 파일로 분할되며, 줄 바꿈에서만 분할됩니다(-C 1024m). 새 파일의 이름에는 오름차순 숫자 접미사가 포함됩니다. 다음 명령은 `sales.part_00` 및 `sales.part_01`과 같은 이름의 파일을 생성합니다.

```
split -C 1024m -d sales.csv sales.part_ 
```

다른 운영 체제에서는 이와 유사한 유틸리티를 사용할 수 있습니다.

플랫 파일은 어디에나 저장할 수 있습니다. 그러나 [5단계](#mariadb-importing-data-any-source-load-data)에서 데이터를 로드할 때는 파일이 있는 위치와 동일한 위치에서 `mysql` 쉘을 간접적으로 호출하거나 `LOAD DATA LOCAL INFILE`을 실행할 때 파일의 절대 경로를 사용해야 합니다.

## 2단계: 대상 DB 인스턴스에 액세스 중인 애플리케이션을 모두 중지
<a name="mariadb-importing-data-any-source-stop-apps"></a>

대량 로드를 시작하기 전에 로드하려는 대상 DB 인스턴스에 액세스하는 모든 애플리케이션의 활동을 중단합니다. 로드 중인 테이블 혹은 참조 테이블을 다른 세션이 수정하는 경우에는 더욱 더 중단해야 합니다. 그러면 로드 중에 발생하는 제약 조건 위반의 위험이 줄어들고 로드 성능이 향상됩니다. 또한 로드에 관여하지 않는 프로세스에 의한 변경 내용이 손실되지 않고 로드 직전의 시점으로 DB 인스턴스를 복원할 수 있습니다.

물론, 이것이 가능하지 않거나 유용하지 않을 수도 있습니다. 로드 전에 애플리케이션이 DB 인스턴스에 액세스하지 못하게 막을 수 없다면, 데이터의 가용성과 무결성을 보장하기 위한 일련의 단계를 수행하세요. 필요한 구체적인 단계는 특정 사용 사례와 사이트 요구 사항에 따라 크게 달라집니다.

## 3단계: DB 스냅샷 만들기
<a name="mariadb-importing-data-any-source-create-snapshot"></a>

아무런 데이터도 없는 새 DB 인스턴스로 데이터를 로드할 경우에는 이 단계를 건너뛰어도 됩니다. 아니면 데이터 로드 전후에 대상 Amazon RDS DB 인스턴스의 DB 스냅샷을 만드는 것이 좋습니다. Amazon RDS DB 스냅샷은 DB 인스턴스를 알려진 상태로 복원하는 데 사용할 수 있는 DB 인스턴스의 완전한 백업입니다. DB 스냅샷을 시작하면 데이터베이스가 백업되는 동안 DB 인스턴스에 대한 I/O 작업이 일시 중단됩니다.

필요한 경우 로드 직전에 DB 스냅샷을 만들면 데이터베이스를 로드 이전의 상태로 복원할 수 있습니다. 로드 직후에 생성된 DB 스냅샷은 사고 발생 시 데이터를 다시 로드하지 않아도 됩니다. 또한 로드 후 DB 스냅샷을 사용하여 데이터를 새 데이터베이스 인스턴스로 가져올 수 있습니다.

아래 예시에서는 AWS CLI [create-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-snapshot.html) 명령을 실행하여 `AcmeRDS` 인스턴스의 DB 스냅샷을 만들고 DB 스냅샷에 `"preload"` 식별자를 지정합니다.

대상 LinuxmacOS, 또는Unix:

```
aws rds create-db-snapshot \
    --db-instance-identifier AcmeRDS \
    --db-snapshot-identifier preload
```

Windows의 경우:

```
aws rds create-db-snapshot ^
    --db-instance-identifier AcmeRDS ^
    --db-snapshot-identifier preload
```

DB 스냅샷 기능에서 복원하는 기능을 사용하여 테스트 실행을 위한 테스트 DB 인스턴스를 만들거나 로드 중의 변경 사항을 실행 취소할 수도 있습니다.

DB 스냅샷에서 데이터베이스를 복원하면 모든 DB 인스턴스와 마찬가지로 고유 식별자와 엔드포인트가 있는 새 DB 인스턴스가 생성된다는 점을 꼭 명심해야 합니다. 엔드포인트를 변경하지 않고 DB 인스턴스를 복원해야 한다면, 우선 엔드포인트를 다시 사용할 수 있도록 DB 인스턴스를 삭제해야 합니다.

예를 들어 테스트 실행 또는 다른 테스트를 위한 DB 인스턴스를 만들려면 DB 인스턴스에 고유 식별자를 지정합니다. 예제에서 `AcmeRDS-2`"는 식별자입니다. 이 예제는 `AcmeRDS-2`와 연결된 엔드포인트를 사용하여 DB 인스턴스에 연결합니다. 자세한 정보는 [restore-db-instance-from-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html)을 참조하세요.

대상 LinuxmacOS, 또는Unix:

```
aws rds restore-db-instance-from-db-snapshot \
    --db-instance-identifier AcmeRDS-2 \
    --db-snapshot-identifier preload
```

Windows의 경우:

```
aws rds restore-db-instance-from-db-snapshot ^
    --db-instance-identifier AcmeRDS-2 ^
    --db-snapshot-identifier preload
```

기존 엔드포인트를 재사용하려면 우선 DB 인스턴스를 삭제한 다음, 복원된 데이터베이스에 같은 식별자를 지정해야 합니다. 자세한 내용은 [delete-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/delete-db-instance.html)를 참조하세요.

다음 예제에서는 또한 DB 인스턴스의 최종 DB 스냅샷을 생성한 후에 삭제합니다. 이 단계는 선택 사항이지만 권장됩니다.

대상 LinuxmacOS, 또는Unix:

```
aws rds delete-db-instance \
    --db-instance-identifier AcmeRDS \
    --final-db-snapshot-identifier AcmeRDS-Final

aws rds restore-db-instance-from-db-snapshot \
    --db-instance-identifier AcmeRDS \
    --db-snapshot-identifier preload
```

Windows의 경우:

```
aws rds delete-db-instance ^
    --db-instance-identifier AcmeRDS ^
    --final-db-snapshot-identifier AcmeRDS-Final

aws rds restore-db-instance-from-db-snapshot ^
    --db-instance-identifier AcmeRDS ^
    --db-snapshot-identifier preload
```

## 4단계(선택 사항): Amazon RDS 자동 백업 끄기
<a name="mariadb-importing-data-any-source-turn-off-automated-backups"></a>

**주의**  
시점 복구를 수행할 필요가 있는 경우에는 자동 백업을 끄지 마세요.

자동 백업을 끄는 것은 성능 최적화 수단이며 데이터 로드에 필수적이지는 않습니다. 자동 백업을 끄면 기존 백업이 모두 지워집니다. 따라서 자동 백업을 끈 후에는 시점 복구를 수행할 수 없습니다. 자동 백업을 비활성화해도 수동 DB 스냅샷에는 영향을 주지 않습니다. 기존의 모든 수동 DB 스냅샷을 계속 복원 작업에 사용할 수 있습니다.

자동 백업을 비활성화하면 로드 시간이 약 25% 단축되고 로드 중에 필요한 스토리지 공간의 양이 줄어듭니다. 아무런 데이터도 없는 새 DB 인스턴스로 데이터를 로드할 경우에는 백업을 비활성화하는 것이 로드 속도를 높이고 백업에 필요한 추가 스토리지의 사용을 피하는 손쉬운 방법입니다. 하지만 이미 데이터가 있는 DB 인스턴스로 로드할 경우도 있습니다. 그렇다면 특정 시점으로 복구를 수행할 능력을 상실하는 데 따른 영향에 비해 백업을 해제할 때의 이점을 비교합니다.

DB 인스턴스에서는 기본적으로 자동 백업이 활성화되어 있습니다(보존 기간은 하루). 자동 백업을 비활성화하기 위해 백업 보존 기간을 0으로 설정합니다. 로드 후에는 백업 보존 기간을 0이 아닌 값으로 설정하여 백업을 다시 활성화할 수 있습니다. 백업을 켜거나 끄기 위해 Amazon RDS가 DB 인스턴스를 종료했다가 다시 시작하여 MariaDB 로깅을 켜거나 끕니다.

AWS CLI `modify-db-instance` 명령을 실행하여 백업 보존 기간을 0으로 설정하고 변경 사항을 즉시 적용합니다. 보존 기간을 0으로 설정하려면 DB 인스턴스를 다시 시작해야 하므로, 다시 시작 프로세스가 완료될 때까지 기다린 후 계속 진행합니다. 자세한 내용은 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html)를 참조하세요.

대상 LinuxmacOS, 또는Unix:

```
aws rds modify-db-instance \
    --db-instance-identifier AcmeRDS \
    --apply-immediately \
    --backup-retention-period 0
```

Windows의 경우:

```
aws rds modify-db-instance ^
    --db-instance-identifier AcmeRDS ^
    --apply-immediately ^
    --backup-retention-period 0
```

AWS CLI [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) 명령으로 DB 인스턴스의 상태를 확인할 수 있습니다. 다음 예제에서는 `AcmeRDS` DB 인스턴스의 DB 인스턴스 상태를 표시합니다.

```
aws rds describe-db-instances --db-instance-identifier AcmeRDS --query "*[].{DBInstanceStatus:DBInstanceStatus}"
```

DB 인스턴스 상태가 `available`이면 다음 단계로 계속할 준비가 된 것입니다.

## 5단계: 데이터 로드
<a name="mariadb-importing-data-any-source-load-data"></a>

플랫 파일의 행을 데이터베이스 테이블로 읽어들이려면 MariaDB `LOAD DATA LOCAL INFILE` 문을 사용합니다.

**참고**  
플랫 파일이 있는 위치와 동일한 위치에서 `mariadb` 쉘을 호출하거나 `LOAD DATA LOCAL INFILE`을 실행할 때 파일의 절대 경로를 사용해야 합니다.

다음 예시는 이름이 `sales.txt`인 파일에서 데이터베이스의 `Sales` 테이블로 데이터를 로드하는 방법을 보여줍니다.

```
MariaDB [(none)]> LOAD DATA LOCAL INFILE 'sales.txt' INTO TABLE Sales FIELDS TERMINATED BY ' ' ENCLOSED BY '' ESCAPED BY '\\';
Query OK, 1 row affected (0.01 sec)
Records: 1  Deleted: 0  Skipped: 0  Warnings: 0
```

`LOAD DATA` 문에 대한 자세한 내용은 MariaDB 설명서의 [LOAD DATA INFILE](https://mariadb.com/docs/server/reference/sql-statements/data-manipulation/inserting-loading-data/load-data-into-tables-or-index/load-data-infile)을 참조하세요.

## 6단계: Amazon RDS 자동 백업 다시 켜기
<a name="mariadb-importing-data-any-source-turn-on-automated-backups"></a>

[4단계](#mariadb-importing-data-any-source-turn-off-automated-backups)에서 Amazon RDS 자동 백업을 껐다면 로드가 완료된 후 백업 보존 기간을 로드 이전의 값으로 다시 설정하여 자동 백업을 켭니다. 4단계에서 언급한 것처럼, Amazon RDS가 DB 인스턴스를 다시 시작하므로 잠시 작동이 중단되는 상황에 대비하세요.

다음 예시에서는 AWS CLI [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) 명령을 실행하여 `AcmeRDS` DB 인스턴스에서 자동 백업을 켜고 보존 기간을 1일로 설정합니다.

대상 LinuxmacOS, 또는Unix:

```
aws rds modify-db-instance \
    --db-instance-identifier AcmeRDS \
    --backup-retention-period 1 \
    --apply-immediately
```

Windows의 경우:

```
aws rds modify-db-instance ^
    --db-instance-identifier AcmeRDS ^
    --backup-retention-period 1 ^
    --apply-immediately
```

# Amazon RDS에서 MariaDB 복제 작업
<a name="USER_MariaDB.Replication"></a>

일반적으로 읽기 전용 복제본을 사용하여 Amazon RDS DB 인스턴스 간 복제를 구성합니다. 읽기 전용 복제본에 대한 일반적인 정보는 [DB 인스턴스 읽기 전용 복제본 작업](USER_ReadRepl.md) 단원을 참조하십시오. Amazon RDS for MariaDB의 읽기 복제본 작업에 대한 자세한 내용은 [MariaDB 읽기 전용 복제본 작업](USER_MariaDB.Replication.ReadReplicas.md) 단원을 참조하세요.

또한 MariaDB DB 인스턴스에 대해 바이너리 로그 좌표를 기반으로 복제를 구성할 수 있습니다. MariaDB 인스턴스의 경우에는 전역 트랜잭션 ID(GTID)를 기반으로 복제를 구성할 수도 있습니다. 그러면 충돌 안정성이 개선됩니다. 자세한 내용은 [외부 소스 인스턴스를 사용하여 GTID 기반 복제 구성](MariaDB.Procedural.Replication.GTID.md) 단원을 참조하십시오.

다음은 RDS for MariaDB에서 사용 가능한 다른 복제 옵션입니다.
+ RDS for MySQL 또는 MariaDB DB 인스턴스와 Amazon RDS 외부에 있는 MariaDB 인스턴스 간의 복제를 설정할 수 있습니다. 외부 소스를 사용하여 복제를 구성하는 방법에 대한 자세한 내용은 [외부 소스 인스턴스를 사용하여 이진 로그 파일 위치 복제 구성](MySQL.Procedural.Importing.External.ReplMariaDB.md) 단원을 참조하십시오.
+ Amazon RDS 외부에 있는 MySQL 또는 MariaDB 인스턴스에서 데이터베이스를 가져오거나 그런 인스턴스로 데이터베이스를 내보내도록 복제를 구성할 수 있습니다. 자세한 내용은 [가동 중지 시간을 줄이면서 Amazon RDS for MariaDB DB 인스턴스로 데이터 가져오기](mariadb-importing-data-reduced-downtime.md) 및 [복제를 사용하여 MySQL DB 인스턴스에서 데이터 내보내기](MySQL.Procedural.Exporting.NonRDSRepl.md)(을)를 참조하세요.

이러한 복제 옵션의 경우 행 기반 복제, 문 기반 복제 또는 혼합 복제를 사용할 수 있습니다. 행 기반 복제는 SQL 문으로 인해 변경된 행만 복제합니다. 문 기반 복제는 전체 SQL 문을 복제합니다. 혼합 복제는 가능한 경우 문 기반 복제를 사용하지만, 문 기반 복제에 안전하지 않은 SQL 문이 실행될 경우 행 기반 복제로 전환합니다. 대부분의 경우 혼합 복제가 권장됩니다. DB 인스턴스의 이진 로그 형식은 복제가 행 기반인지, 문 기반인지, 혼합인지 결정합니다. 이진 로그 형식 설정에 대한 자세한 내용은 [MariaDB 바이너리 로깅 구성](USER_LogAccess.MariaDB.BinaryFormat.md) 단원을 참조하십시오.

MariaDB 버전 간의 복제 호환성에 대한 자세한 내용은 MariaDB 설명서의 [Replication Compatibility](https://mariadb.com/kb/en/mariadb-vs-mysql-compatibility/#replication-compatibility)를 참조하세요.

**Topics**
+ [MariaDB 읽기 전용 복제본 작업](USER_MariaDB.Replication.ReadReplicas.md)
+ [외부 소스 인스턴스를 사용하여 GTID 기반 복제 구성](MariaDB.Procedural.Replication.GTID.md)
+ [외부 소스 인스턴스를 사용하여 이진 로그 파일 위치 복제 구성](MySQL.Procedural.Importing.External.ReplMariaDB.md)

# MariaDB 읽기 전용 복제본 작업
<a name="USER_MariaDB.Replication.ReadReplicas"></a>

다음으로, Amazon RDS for MariaDB에서의 읽기 복제본 작업에 대한 특정 정보를 찾을 수 있습니다. 읽기 전용 복제본에 대한 일반적인 정보와 사용 지침은 [DB 인스턴스 읽기 전용 복제본 작업](USER_ReadRepl.md) 단원을 참조하십시오.
+ [MariaDB를 사용한 복제 필터 구성](USER_MariaDB.Replication.ReadReplicas.ReplicationFilters.md)
+ [MariaDB를 사용한 지연 복제 구성](USER_MariaDB.Replication.ReadReplicas.DelayReplication.md)
+ [MariaDB를 사용한 읽기 전용 복제본 업데이트](USER_MariaDB.Replication.ReadReplicas.Updates.md)
+ [MariaDB를 사용한 다중 AZ 읽기 전용 복제본 배포 작업](USER_MariaDB.Replication.ReadReplicas.MultiAZ.md)
+ [RDS for MariaDB에서의 계단식 읽기 전용 복제본 사용](USER_MariaDB.Replication.ReadReplicas.Cascading.md)
+ [MariaDB 읽기 전용 복제본 모니터링](USER_MariaDB.Replication.ReadReplicas.Monitor.md)
+ [MariaDB 읽기 전용 복제본을 사용한 복제 시작 및 중지](USER_MariaDB.Replication.ReadReplicas.StartStop.md)
+ [MariaDB 읽기 전용 복제본의 문제 해결](USER_ReadRepl.Troubleshooting.MariaDB.md)

## MariaDB를 사용한 읽기 전용 복제본 구성
<a name="USER_MariaDB.Replication.ReadReplicas.Configuration"></a>

MariaDB DB 인스턴스가 복제 소스 역할을 하기 전에 백업 보존 기간을 0이 아닌 값으로 설정하여 소스 DB 인스턴스에서 자동 백업을 켜야 합니다. 이 요구 사항은 다른 읽기 전용 복제본의 원본 DB 인스턴스인 읽기 전용 복제본에도 적용됩니다.

동일 리전 내의 DB 인스턴스 하나에서 최대 15개까지 읽기 전용 복제본을 생성할 수 있습니다. 효과적인 복제를 위해서는 읽기 전용 복제본도 각각 원본 DB 인스턴스와 동일한 양의 컴퓨팅 및 스토리지 리소스를 가져야 합니다. 원본 DB 인스턴스를 확장하는 경우 읽기 전용 복제본도 확장합니다.

RDS for MariaDB는 계단식 읽기 전용 복제본을 지원합니다. 읽기 전용 복제본을 계단식으로 구성하는 방법을 알아보려면 [RDS for MariaDB에서의 계단식 읽기 전용 복제본 사용](USER_MariaDB.Replication.ReadReplicas.Cascading.md) 단원을 참조하세요.

동일한 원본 DB 인스턴스를 참조하는 여러 읽기 전용 복제본 생성 및 삭제 작업을 동시에 실행할 수 있습니다. 이러한 작업을 수행할 때 각 원본 인스턴스의 읽기 전용 복제본 한도 15개를 넘지 않아야 합니다.

# MariaDB를 사용한 복제 필터 구성
<a name="USER_MariaDB.Replication.ReadReplicas.ReplicationFilters"></a>

복제 필터를 사용하여 읽기 복제본과 함께 복제할 데이터베이스와 테이블을 지정할 수 있습니다. 복제 필터는 데이터베이스와 테이블을 복제에 포함하거나 복제에서 제외할 수 있습니다.

다음은 복제 필터의 몇 가지 사용 사례입니다.
+ 읽기 복제본의 크기를 줄이는 방법. 복제 필터링을 사용하면 읽기 복제본에 필요하지 않은 데이터베이스와 테이블을 제외할 수 있습니다.
+ 보안상의 이유로 읽기 복제본에서 데이터베이스와 테이블을 제외하는 방법.
+ 다른 읽기 복제본에서 특정 사용 사례에 대해 서로 다른 데이터베이스와 테이블을 복제하는 방법. 예를 들어 분석 또는 샤딩에 특정 읽기 복제본을 사용할 수 있습니다.
+ 여러 AWS 리전에 읽기 전용 복제본이 있는 DB 인스턴스의 경우 서로 다른 AWS 리전에 있는 다른 데이터베이스 또는 테이블을 복제합니다.

**참고**  
복제 필터를 사용하여 인바운드 복제 토폴로지에서 복제본으로 구성된 기본 MariaDB DB 인스턴스로 복제할 데이터베이스 및 테이블을 지정할 수도 있습니다. 이 구성에 대한 자세한 내용은 [외부 소스 인스턴스를 사용하여 이진 로그 파일 위치 복제 구성](MySQL.Procedural.Importing.External.Repl.md) 단원을 참조하십시오.

**Topics**
+ [Amazon RDS for MariaDB에 대한 복제 필터링 파라미터 설정](#USER_MariaDB.Replication.ReadReplicas.ReplicationFilters.Configuring)
+ [RDS for MariaDB에 대한 복제 필터링 제한 사항](#USER_MariaDB.Replication.ReadReplicas.ReplicationFilters.Limitations)
+ [RDS for MariaDB에 대한 복제 필터링 예제](#USER_MariaDB.Replication.ReadReplicas.ReplicationFilters.Examples)
+ [읽기 복제본에 대한 복제 필터 보기](#USER_MariaDB.Replication.ReadReplicas.ReplicationFilters.Viewing)

## Amazon RDS for MariaDB에 대한 복제 필터링 파라미터 설정
<a name="USER_MariaDB.Replication.ReadReplicas.ReplicationFilters.Configuring"></a>

복제 필터를 구성하려면 읽기 복제본에서 다음 복제 필터링 파라미터를 설정합니다.
+ `replicate-do-db` – 지정된 데이터베이스에 변경 내용을 복제합니다. 읽기 복제본에 대해 이 파라미터를 설정하면 파라미터에 지정된 데이터베이스만 복제됩니다.
+ `replicate-ignore-db` – 지정된 데이터베이스에 변경 내용을 복제하지 마세요. 읽기 복제본에 대해 `replicate-do-db` 파라미터가 설정되면 이 파라미터는 평가되지 않습니다.
+ `replicate-do-table` – 지정된 테이블에 변경 사항을 복제합니다. 읽기 복제본에 대해 이 파라미터를 설정하면 파라미터에 지정된 테이블만 복제됩니다. 또한 `replicate-do-db` 또는 `replicate-ignore-db` 파라미터가 설정되면 지정된 테이블을 포함하는 데이터베이스가 읽기 복제본의 복제에 포함되어야 합니다.
+ `replicate-ignore-table` – 지정된 테이블에 변경 내용을 복제하지 마세요. 읽기 복제본에 대해 `replicate-do-table` 파라미터가 설정되면 이 파라미터는 평가되지 않습니다.
+ `replicate-wild-do-table` – 지정된 데이터베이스와 테이블 이름 패턴을 기반으로 테이블을 복제합니다. `%` 및 `_` 와일드카드 문자가 지원됩니다. `replicate-do-db` 또는 `replicate-ignore-db` 파라미터가 설정되면 복제에 지정된 테이블이 포함된 데이터베이스를 읽기 복제본과 함께 포함해야 합니다.
+ `replicate-wild-ignore-table` – 지정된 데이터베이스와 테이블 이름 패턴을 기반으로 테이블을 복제하지 마세요 `%` 및 `_` 와일드카드 문자가 지원됩니다. 읽기 복제본에 대해 `replicate-do-table` 또는 `replicate-wild-do-table` 파라미터가 설정되면 이 파라미터는 평가되지 않습니다.

파라미터는 나열된 순서대로 평가됩니다. 이러한 파라미터의 작동 방식에 대한 자세한 내용은 [MariaDB 설명서](https://mariadb.com/kb/en/replication-filters/#replication-filters-for-replication-slaves)를 참조하세요.

기본적으로 이러한 각 파라미터에는 빈 값이 있습니다. 각 읽기 복제본에서 이러한 파라미터를 사용하여 복제 필터를 설정, 변경 및 삭제할 수 있습니다. 이러한 파라미터 중 하나를 설정할 때 각 필터를 쉼표로 구분합니다.

`%` 및 `_` 파라미터에 `replicate-wild-do-table` 및 `replicate-wild-ignore-table` 와일드카드 문자를 사용할 수 있습니다. `%` 와일드카드는 원하는 수의 문자를 찾으며 `_` 와일드카드는 한 문자만 찾습니다.

원본 DB 인스턴스의 이진 로깅 형식은 데이터 변경 기록을 결정하므로 복제에 중요합니다. `binlog_format` 파라미터 설정에 따라 복제가 행 기반인지 또는 문 기반인지가 결정됩니다. 자세한 내용은 [MariaDB 바이너리 로깅 구성](USER_LogAccess.MariaDB.BinaryFormat.md) 섹션을 참조하세요.

**참고**  
원본 DB 인스턴스의 `binlog_format` 설정과 관계없이, 모든 DDL(데이터 정의어) 문은 문으로 복제됩니다.

## RDS for MariaDB에 대한 복제 필터링 제한 사항
<a name="USER_MariaDB.Replication.ReadReplicas.ReplicationFilters.Limitations"></a>

RDS for MariaDB에 대한 복제 필터링에 다음과 같은 제한 사항이 적용됩니다.
+ 각 복제 필터링 파라미터에는 2,000자 제한이 있습니다.
+ 복제 필터에서는 쉼표가 지원되지 않습니다.
+ 이진 로그 필터링에 대해서는 MariaDB `binlog_do_db` 및 `binlog_ignore_db` 옵션이 지원되지 않습니다.
+ 복제 필터링은 XA 트랜잭션을 지원하지 않습니다.

  자세한 내용은 MySQL 설명서에서 [XA 트랜잭션에 대한 제한 사항](https://dev.mysql.com/doc/refman/8.0/en/xa-restrictions.html)을 참조하세요.
+ RDS for MariaDB 버전 10.2에 대해서는 복제 필터링이 지원되지 않습니다.

## RDS for MariaDB에 대한 복제 필터링 예제
<a name="USER_MariaDB.Replication.ReadReplicas.ReplicationFilters.Examples"></a>

읽기 복제본에 대한 복제 필터링을 구성하려면 읽기 복제본과 연결된 파라미터 그룹에서 복제 필터링 파라미터를 수정합니다.

**참고**  
기본 파라미터 그룹을 수정할 수 없습니다. 읽기 복제본에서 기본 파라미터 그룹을 사용 중인 경우 새 파라미터 그룹을 생성하여 읽기 복제본과 연결합니다. DB 파라미터 그룹에 대한 자세한 내용은 [Amazon RDS의 파라미터 그룹](USER_WorkingWithParamGroups.md) 단원을 참조하십시오.

AWS Management Console, AWS CLI 또는 RDS API를 사용하여 파라미터 그룹에서 파라미터를 설정할 수 있습니다. 파라미터 설정에 대한 자세한 내용은 [Amazon RDS에서 DB 파라미터 그룹의 파라미터 수정](USER_WorkingWithParamGroups.Modifying.md) 섹션을 참조하세요. 파라미터 그룹에서 파라미터를 설정하면 파라미터 그룹과 연결된 모든 DB 인스턴스가 파라미터 설정을 사용합니다. 파라미터 그룹에서 복제 필터링 파라미터를 설정하는 경우, 파라미터 그룹이 읽기 복제본에만 연결되어 있는지 확인합니다. 원본 DB 인스턴스에 대해 복제 필터링 파라미터를 비워 둡니다.

다음 예제에서는 AWS CLI를 사용하여 파라미터를 설정합니다. 이 예제는 CLI 명령이 완료된 직후에 파라미터가 변경되도록 `ApplyMethod`을(를) `immediate`(으)로 설정합니다. 읽기 복제본이 재부팅된 후 보류 중인 변경 사항을 적용하려면 `ApplyMethod`을(를) `pending-reboot`(으)로 설정합니다.

다음 예제에서는 복제 필터를 설정합니다.
+ [Including databases in replication](#rep-filter-in-dbs-mariadb)
+ [Including tables in replication](#rep-filter-in-tables-mariadb)
+ [Including tables in replication with wildcard characters](#rep-filter-in-tables-wildcards-mariadb)
+ [Escaping wildcard characters in names](#rep-filter-escape-wildcards-mariadb)
+ [Excluding databases from replication](#rep-filter-ex-dbs-mariadb)
+ [Excluding tables from replication](#rep-filter-ex-tables-mariadb)
+ [Excluding tables from replication using wildcard characters](#rep-filter-ex-tables-wildcards-mariadb)<a name="rep-filter-in-dbs-mariadb"></a>

**Example 복제에 데이터베이스 포함**  
다음 예제에서는 복제에 `mydb1` 및 `mydb2` 데이터베이스가 포함되어 있습니다. 읽기 복제본에 대해 `replicate-do-db`을(를) 설정하면 파라미터에 지정된 데이터베이스만 복제됩니다.  
대상 LinuxmacOS, 또는Unix:  

```
aws rds modify-db-parameter-group \
  --db-parameter-group-name myparametergroup \
  --parameters "[{"ParameterName": "replicate-do-db", "ParameterValue": "mydb1,mydb2", "ApplyMethod":"immediate"}]"
```
Windows의 경우:  

```
aws rds modify-db-parameter-group ^
  --db-parameter-group-name myparametergroup ^
  --parameters "[{"ParameterName": "replicate-do-db", "ParameterValue": "mydb1,mydb2", "ApplyMethod":"immediate"}]"
```<a name="rep-filter-in-tables-mariadb"></a>

**Example 복제에 테이블 포함**  
다음 예제에서는 복제의 `table1` 데이터베이스에 `table2` 및 `mydb1` 테이블이 포함되어 있습니다.  
대상 LinuxmacOS, 또는Unix:  

```
aws rds modify-db-parameter-group \
  --db-parameter-group-name myparametergroup \
  --parameters "[{"ParameterName": "replicate-do-table", "ParameterValue": "mydb1.table1,mydb1.table2", "ApplyMethod":"immediate"}]"
```
Windows의 경우:  

```
aws rds modify-db-parameter-group ^
  --db-parameter-group-name myparametergroup ^
  --parameters "[{"ParameterName": "replicate-do-table", "ParameterValue": "mydb1.table1,mydb1.table2", "ApplyMethod":"immediate"}]"
```<a name="rep-filter-in-tables-wildcards-mariadb"></a>

**Example 와일드카드 문자를 사용하여 복제에 테이블 포함**  
다음 예제에서는 복제의 데이터베이스 `orders`에 `returns` 및 `mydb`(으)로 시작하는 이름을 가진 테이블이 포함되어 있습니다.  
대상 LinuxmacOS, 또는Unix:  

```
aws rds modify-db-parameter-group \
  --db-parameter-group-name myparametergroup \
  --parameters "[{"ParameterName": "replicate-wild-do-table", "ParameterValue": "mydb.orders%,mydb.returns%", "ApplyMethod":"immediate"}]"
```
Windows의 경우:  

```
aws rds modify-db-parameter-group ^
  --db-parameter-group-name myparametergroup ^
  --parameters "[{"ParameterName": "replicate-wild-do-table", "ParameterValue": "mydb.orders%,mydb.returns%", "ApplyMethod":"immediate"}]"
```<a name="rep-filter-escape-wildcards-mariadb"></a>

**Example 이름에서 와일드카드 문자 이스케이프**  
다음 예제에서는 이스케이프 문자 `\`을(를) 사용하여 이름의 일부인 와일드카드 문자를 이스케이프하는 방법을 보여줍니다.  
`mydb1`(으)로 시작하는 데이터베이스 `my_table`에 여러 테이블 이름이 있다고 가정하고, 이러한 테이블을 복제에 포함하고자 합니다. 테이블 이름에 와일드카드 문자이기도 한 밑줄이 포함되어 있으므로 테이블 이름에서 밑줄을 이스케이프합니다.  
대상 LinuxmacOS, 또는Unix:  

```
aws rds modify-db-parameter-group \
  --db-parameter-group-name myparametergroup \
  --parameters "[{"ParameterName": "replicate-wild-do-table", "ParameterValue": "my\_table%", "ApplyMethod":"immediate"}]"
```
Windows의 경우:  

```
aws rds modify-db-parameter-group ^
  --db-parameter-group-name myparametergroup ^
  --parameters "[{"ParameterName": "replicate-wild-do-table", "ParameterValue": "my\_table%", "ApplyMethod":"immediate"}]"
```<a name="rep-filter-ex-dbs-mariadb"></a>

**Example 복제에서 데이터베이스 제외**  
다음 예제에서는 `mydb1` 및 `mydb2` 데이터베이스를 복제에서 제외합니다.  
대상 LinuxmacOS, 또는Unix:  

```
aws rds modify-db-parameter-group \
  --db-parameter-group-name myparametergroup \
  --parameters "[{"ParameterName": "replicate-ignore-db", "ParameterValue": "mydb1,mydb2", "ApplyMethod":"immediate"}]"
```
Windows의 경우:  

```
aws rds modify-db-parameter-group ^
  --db-parameter-group-name myparametergroup ^
  --parameters "[{"ParameterName": "replicate-ignore-db", "ParameterValue": "mydb1,mydb2", "ApplyMethod":"immediate"}]"
```<a name="rep-filter-ex-tables-mariadb"></a>

**Example 복제에서 테이블 제외**  
다음 예제에서는 데이터베이스 `table1`의 `table2` 및 `mydb1` 테이블을 복제에서 제외합니다.  
대상 LinuxmacOS, 또는Unix:  

```
aws rds modify-db-parameter-group \
  --db-parameter-group-name myparametergroup \
  --parameters "[{"ParameterName": "replicate-ignore-table", "ParameterValue": "mydb1.table1,mydb1.table2", "ApplyMethod":"immediate"}]"
```
Windows의 경우:  

```
aws rds modify-db-parameter-group ^
  --db-parameter-group-name myparametergroup ^
  --parameters "[{"ParameterName": "replicate-ignore-table", "ParameterValue": "mydb1.table1,mydb1.table2", "ApplyMethod":"immediate"}]"
```<a name="rep-filter-ex-tables-wildcards-mariadb"></a>

**Example 와일드카드 문자를 사용하여 복제에서 테이블 제외**  
다음 예제에서는 데이터베이스 `orders`에서 `returns` 및 `mydb`(으)로 시작하는 이름을 가진 테이블을 복제에서 제외합니다.  
대상 LinuxmacOS, 또는Unix:  

```
aws rds modify-db-parameter-group \
  --db-parameter-group-name myparametergroup \
  --parameters "[{"ParameterName": "replicate-wild-ignore-table", "ParameterValue": "mydb.orders%,mydb.returns%", "ApplyMethod":"immediate"}]"
```
Windows의 경우:  

```
aws rds modify-db-parameter-group ^
  --db-parameter-group-name myparametergroup ^
  --parameters "[{"ParameterName": "replicate-wild-ignore-table", "ParameterValue": "mydb.orders%,mydb.returns%", "ApplyMethod":"immediate"}]"
```

## 읽기 복제본에 대한 복제 필터 보기
<a name="USER_MariaDB.Replication.ReadReplicas.ReplicationFilters.Viewing"></a>

다음과 같은 방법으로 읽기 복제본에 대한 복제 필터를 볼 수 있습니다.
+ 읽기 복제본과 연결된 파라미터 그룹에서 복제 필터링 파라미터 설정을 확인합니다.

  지침은 [Amazon RDS에서 DB 파라미터 그룹의 파라미터 값 보기](USER_WorkingWithParamGroups.Viewing.md) 섹션을 참조하세요.
+ MariaDB 클라이언트에서 읽기 전용 복제본에 연결하고 `SHOW REPLICA STATUS` 문을 실행합니다.

  출력 시, 다음 필드에서 읽기 복제본에 대한 복제 필터를 보여줍니다.
  + `Replicate_Do_DB`
  + `Replicate_Ignore_DB`
  + `Replicate_Do_Table`
  + `Replicate_Ignore_Table`
  + `Replicate_Wild_Do_Table`
  + `Replicate_Wild_Ignore_Table`

  이러한 필드에 대한 자세한 내용은 MySQL 설명서의 [복제 상태 확인](https://dev.mysql.com/doc/refman/8.0/en/replication-administration-status.html)을 참조하세요.
**참고**  
이전 버전의 MariaDB에는 `SHOW SLAVE STATUS` 대신 `SHOW REPLICA STATUS`가 사용되었습니다. 10.5 이전 MariaDB 버전을 사용하는 경우 `SHOW SLAVE STATUS`를 사용합니다.

# MariaDB를 사용한 지연 복제 구성
<a name="USER_MariaDB.Replication.ReadReplicas.DelayReplication"></a>

지연 복제를 재해 복구를 위한 전략으로 사용할 수 있습니다. 지연된 복제를 사용하여 원본에서 읽기 전용 복제본으로의 복제를 지연할 최소 시간(초)을 지정합니다. 재해 발생 시(예: 실수로 테이블 삭제) 다음 단계를 완료하여 재해로부터 빠르게 복구할 수 있습니다.
+ 재해를 일으킨 변경 사항이 읽기 전용 복제본으로 전송되기 이전에 읽기 전용 복제본에 대한 복제를 중지합니다.

  [mysql.rds\$1stop\$1replication](mysql-stored-proc-replicating.md#mysql_rds_stop_replication) 저장 프로시저를 사용하여 복제를 중지합니다.
+ [읽기 전용 복제본을 독립 DB 인스턴스로 승격](USER_ReadRepl.Promote.md)의 지침에 따라 읽기 전용 복제본을 새 원본 DB 인스턴스로 승격합니다.

**참고**  
지연된 복제는 MariaDB 10.6 이상에서 지원됩니다.
저장 프로시저를 사용하여 지연된 복제를 구성합니다. AWS Management Console, AWS CLI 또는 Amazon RDS API를 사용하여 지연 복제를 구성할 수 없습니다.
지연된 복제 구성에서 전역 트랜잭션 ID(GTID)를 기반으로 하는 복제를 사용할 수 있습니다.

**Topics**
+ [읽기 전용 복제본 생성 중 지연 복제 구성](#USER_MariaDB.Replication.ReadReplicas.DelayReplication.ReplicaCreation)
+ [기존 읽기 전용 복제본에 대한 지연 복제 수정](#USER_MariaDB.Replication.ReadReplicas.DelayReplication.ExistingReplica)
+ [읽기 전용 복제본 승격](#USER_MariaDB.Replication.ReadReplicas.DelayReplication.Promote)

## 읽기 전용 복제본 생성 중 지연 복제 구성
<a name="USER_MariaDB.Replication.ReadReplicas.DelayReplication.ReplicaCreation"></a>

DB 인스턴스에서 향후에 생성되는 읽기 전용 복제본에 대한 지연된 복제를 구성하려면 [mysql.rds\$1set\$1configuration](mysql-stored-proc-configuring.md#mysql_rds_set_configuration) 파라미터와 함께 `target delay` 저장 프로시저를 실행합니다.

**읽기 전용 복제본을 생성하는 동안 지연된 복제를 구성하려면**

1. MariaDB 클라이언트를 사용하여 마스터 사용자로 읽기 전용 복제본에 대한 원본이 될 MariaDB DB 인스턴스에 연결합니다.

1. [mysql.rds\$1set\$1configuration](mysql-stored-proc-configuring.md#mysql_rds_set_configuration) 파라미터와 함께 `target delay` 저장 프로시저를 실행합니다.

   예를 들어, 현재 DB 인스턴스에서 생성되는 모든 읽기 전용 복제본에 대해 1시간(3,600초) 이상 복제를 지연하도록 지정하려면 다음 저장 프로시저를 실행합니다.

   ```
   call mysql.rds_set_configuration('target delay', 3600);
   ```
**참고**  
이 저장 프로시저를 실행한 후 AWS CLI 또는 Amazon RDS API를 사용하여 생성하는 모든 읽기 전용 복제본은 지정된 시간(초)만큼 복제를 지연하도록 구성됩니다.

## 기존 읽기 전용 복제본에 대한 지연 복제 수정
<a name="USER_MariaDB.Replication.ReadReplicas.DelayReplication.ExistingReplica"></a>

기존 읽기 전용 복제본에 대한 지연된 복제를 수정하려면 [mysql.rds\$1set\$1source\$1delay](mysql-stored-proc-replicating.md#mysql_rds_set_source_delay) 저장 프로시저를 실행합니다.

**기존 읽기 전용 복제본에 대한 지연된 복제를 수정하려면**

1. MariaDB 클라이언트를 사용하여 마스터 사용자로 읽기 전용 복제본에 연결합니다.

1. [mysql.rds\$1stop\$1replication](mysql-stored-proc-replicating.md#mysql_rds_stop_replication) 저장 프로시저를 사용하여 복제를 중지합니다.

1. [mysql.rds\$1set\$1source\$1delay](mysql-stored-proc-replicating.md#mysql_rds_set_source_delay) 저장 프로시저를 실행합니다.

   예를 들어, 읽기 전용 복제본에 대한 복제가 1시간(3,600초) 이상 지연되도록 지정하려면 다음 저장 프로시저를 실행합니다.

   ```
   call mysql.rds_set_source_delay(3600);
   ```

1. [mysql.rds\$1start\$1replication](mysql-stored-proc-replicating.md#mysql_rds_start_replication) 저장 프로시저를 사용하여 복제를 시작합니다.

## 읽기 전용 복제본 승격
<a name="USER_MariaDB.Replication.ReadReplicas.DelayReplication.Promote"></a>

복제가 중지된 후 재해 복구 시나리오에서 읽기 전용 복제본을 새 원본 DB 인스턴스로 승격할 수 있습니다. 읽기 전용 복제본 승격에 대한 자세한 내용은 [읽기 전용 복제본을 독립 DB 인스턴스로 승격](USER_ReadRepl.Promote.md) 단원을 참조하십시오.

# MariaDB를 사용한 읽기 전용 복제본 업데이트
<a name="USER_MariaDB.Replication.ReadReplicas.Updates"></a>

읽기 전용 복제본은 읽기 쿼리를 지원하도록 설계되었지만 경우에 따라 업데이트가 필요할 수 있습니다. 예를 들어 특정 유형의 쿼리가 복제본에 액세스하는 속도를 높이기 위해 인덱스를 추가해야 할 경우가 있습니다. 읽기 전용 복제본의 DB 파라미터 그룹에서 `read_only` 파라미터를 **0**으로 설정하여 업데이트를 활성화할 수 있습니다.

# MariaDB를 사용한 다중 AZ 읽기 전용 복제본 배포 작업
<a name="USER_MariaDB.Replication.ReadReplicas.MultiAZ"></a>

단일 AZ 또는 다중 AZ DB 인스턴스 배포를 통해 읽기 전용 복제본을 생성할 수 있습니다. 다중 AZ 배포는 중요 데이터의 내구성과 가용성을 개선하는 데 효과적이지만 읽기 전용 쿼리를 실행하는 데 보조로 사용할 수는 없습니다. 대신 트래픽이 많은 다중 AZ DB 인스턴스에서 읽기 전용 쿼리를 오프로드할 목적으로 읽기 전용 복제본을 생성할 수 있습니다. 다중 AZ 배포의 원본 인스턴스가 보조 인스턴스로 장애 조치되는 경우 연결된 모든 읽기 전용 복제본이 자동으로 전환되어 보조(이제는 기본) 인스턴스를 복제 원본으로 사용합니다. 자세한 내용은 [Amazon RDS에 대한 다중 AZ 배포 구성 및 관리](Concepts.MultiAZ.md) 섹션을 참조하세요.

다중 AZ DB 인스턴스에서 읽기 전용 복제본을 생성할 수 있습니다. Amazon RDS는 복제본에 대한 장애 조치 지원을 위해 대기 복제본을 다른 가용 영역에 생성합니다. 읽기 전용 복제본을 다중 AZ DB 인스턴스로 생성하는 작업은 원본 데이터베이스가 다중 AZ DB 인스턴스인지 여부와는 무관합니다.

# RDS for MariaDB에서의 계단식 읽기 전용 복제본 사용
<a name="USER_MariaDB.Replication.ReadReplicas.Cascading"></a>

RDS for MariaDB는 계단식 읽기 전용 복제본을 지원합니다. *계단식 읽기 전용 복제본*을 사용하면 소스 RDS for MariaDB DB 인스턴스에 오버헤드를 추가하지 않고도 읽기 전용 복제본 크기를 조정할 수 있습니다.

계단식 읽기 전용 복제본을 사용하면 RDS for MariaDB DB 인스턴스가 데이터를 체인의 첫 번째 읽기 전용 복제본으로 전송합니다. 뒤이어 해당 읽기 전용 복제본이 데이터를 체인의 두 번째 복제본으로 전송하는 식으로 이루어집니다. 결과적으로 체인의 모든 읽기 전용 복제본이 소스 DB 인스턴스에만 오버헤드가 발생하는 일 없이 RDS for MariaDB DB 인스턴스에서 변경됩니다.

소스 RDS for MariaDB DB 인스턴스에서 체인에 최대 3개의 읽기 전용 복제본을 생성할 수 있습니다. 예를 들어 RDS MariaDB DB 인스턴스, `mariadb-main`이 있다고 가정해봅니다. 다음을 수행할 수 있습니다.
+ `mariadb-main`부터 시작해서 체인에 첫 번째 읽기 전용 복제본 `read-replica-1`을 생성합니다.
+ 다음으로 `read-replica-1`에서 체인에 다음 읽기 전용 복제본 `read-replica-2`를 생성합니다.
+ 마지막으로 `read-replica-2`에서 체인에 세 번째 읽기 전용 복제본 `read-replica-3`을 생성합니다.

체인에서 `mariadb-main`에 대한 세 번째 계단식 읽기 전용 복제본 다음으로 또 다른 읽기 전용 복제본을 생성할 수 없습니다. RDS for MariaDB 소스 DB 인스턴스부터 계단식 읽기 전용 복제본 체인의 마지막에 이르는 전체 인스턴스는 최대 4개의 DB 인스턴스로 구성될 수 있습니다.

읽기 전용 복제본을 계단식으로 실행하려면 각 소스 RDS for MariaDB DB 인스턴스에 자동 백업이 켜져 있어야 합니다. 읽기 전용 복제본에서 자동 백업을 켜려면 먼저 읽기 전용 복제본을 생성한 다음 자동 백업이 켜지도록 읽기 전용 복제본을 수정합니다. 자세한 내용은 [읽기 전용 복제본 생성](USER_ReadRepl.Create.md) 단원을 참조하십시오.

모든 읽기 전용 복제본과 마찬가지로 계단식 구성에 포함된 읽기 전용 복제본을 승격할 수 있습니다. 읽기 전용 복제본 체인의 한 읽기 전용 복제본을 승격하면 체인에서 해당 복제본이 제거됩니다. 예를 들어 `mariadb-main` DB 인스턴스의 일부 워크로드를 회계 부서에서만 사용할 수 있도록 새 인스턴스로 옮기려고 합니다. 이 예제에서 3개의 읽기 전용 복제본 체인이 있다고 가정하고 `read-replica-2`를 승격하기로 결정합니다. 체인은 다음과 같이 변화합니다.
+ `read-replica-2`를 승격하면 복제 체인에서 제거됩니다.
  + 이제 전체 읽기/쓰기 DB 인스턴스가 됩니다.
  + 승격 전과 마찬가지로 `read-replica-3`으로 계속 복제합니다.
+ `mariadb-main`은 `read-replica-1`로 계속 복제를 진행합니다.

읽기 전용 복제본 승격에 대한 자세한 내용은 [읽기 전용 복제본을 독립 DB 인스턴스로 승격](USER_ReadRepl.Promote.md) 섹션을 참조하세요.

# MariaDB 읽기 전용 복제본 모니터링
<a name="USER_MariaDB.Replication.ReadReplicas.Monitor"></a>

MariaDB 읽기 전용 복제본의 경우 Amazon RDS `ReplicaLag` 지표를 보면서 Amazon CloudWatch의 복제 지연 시간을 모니터링할 수 있습니다. `ReplicaLag` 메트릭은 `Seconds_Behind_Master` 명령의 `SHOW REPLICA STATUS` 필드의 값을 보고합니다.

**참고**  
이전 버전의 MariaDB에는 `SHOW SLAVE STATUS` 대신 `SHOW REPLICA STATUS`가 사용되었습니다. 10.5 이전 MariaDB 버전을 사용하는 경우 `SHOW SLAVE STATUS`를 사용합니다.

이렇게 MariaDB에서 복제 지연이 발생하는 공통 원인은 다음과 같습니다.
+ 네트워크 중단.
+ 읽기 전용 복제본의 인덱스가 있는 테이블에 쓰기 작업 중일 때. 읽기 전용 복제본에서 `read_only` 파라미터가 0으로 설정되어 있지 않으면 복제가 중단될 수 있습니다.
+ MyISAM과 같은 비트랜잭션 스토리지 엔진 사용. 복제는 MariaDB의 InnoDB 스토리지 엔진에서만 지원됩니다.

`ReplicaLag` 지표가 0에 도달하면 복제본이 원본 DB 인스턴스를 따라잡은 것입니다. `ReplicaLag` 지표가 -1을 반환하는 경우 복제가 현재 활성이 아닙니다. `ReplicaLag` = -1은 `Seconds_Behind_Master` = `NULL`​과 동등합니다.

# MariaDB 읽기 전용 복제본을 사용한 복제 시작 및 중지
<a name="USER_MariaDB.Replication.ReadReplicas.StartStop"></a>

Amazon RDS DB 인스턴스에서는 시스템에 저장된 프로시저인 [mysql.rds\$1stop\$1replication](mysql-stored-proc-replicating.md#mysql_rds_stop_replication)과(와) [mysql.rds\$1start\$1replication](mysql-stored-proc-replicating.md#mysql_rds_start_replication)을 호출하여 복제 프로세스를 종료하거나 재시작할 수 있습니다. 대용량 인덱스를 생성하는 등 오랜 시간이 걸리는 작업에서 두 Amazon RDS 인스턴스를 서로 복제할 때도 이런 방법이 가능합니다. 또한 데이터베이스를 가져오거나 내보낼 때도 복제를 종료하거나 시작할 필요가 있습니다. 자세한 내용은 [가동 중지 시간을 줄이면서 Amazon RDS for MariaDB DB 인스턴스로 데이터 가져오기](mariadb-importing-data-reduced-downtime.md) 및 [복제를 사용하여 MySQL DB 인스턴스에서 데이터 내보내기](MySQL.Procedural.Exporting.NonRDSRepl.md)(을)를 참조하세요.

수동으로 또는 복제 오류로 인해 연속하여 30일 이상 복제가 중단된 경우에는 Amazon RDS가 소스 DB 인스턴스와 모든 읽기 전용 복제본 사이의 복제를 종료합니다. 이렇게 하는 이유는 소스 DB 인스턴스에 대한 스토리지 요건 증가와 장애 조치의 장기화를 방지하기 위해서입니다. 읽기 전용 복제본 DB 인스턴스는 계속 사용할 수 있습니다. 그러나 복제가 종료된 후 읽기 전용 복제본에 필요한 이진 로그가 원본 DB 인스턴스에서 삭제되므로 복제를 재개할 수 없습니다. 원본 DB 인스턴스에서 복제를 재설정하려면 새 읽기 전용 복제본을 생성해야 합니다.

# MariaDB 읽기 전용 복제본의 문제 해결
<a name="USER_ReadRepl.Troubleshooting.MariaDB"></a>

MariaDB의 복제본 기술은 비동기적입니다. 간혹 원본 DB 인스턴스에서 `BinLogDiskUsage`가 증가하면 읽기 전용 복제본의 `ReplicaLag`가 예상되는 이유도 비동기식이기 때문입니다. 예를 들어 원본 DB 인스턴스에 대해 대량의 쓰기 작업이 동시에 발생할 수 있습니다. 반대로 읽기 전용 복제본에 대한 쓰기 작업은 단일 I/O 스레드를 사용하기 때문에 연이어 차례로 발생합니다. 이로 인해 원본 인스턴스와 읽기 전용 복제본 사이에 지연 시간이 있기 마련입니다. 읽기 전용 복제본에 대한 자세한 내용은 MariaDB 설명서에서 [복제 개요](http://mariadb.com/kb/en/mariadb/replication-overview/)를 참조하십시오.

원본 DB 인스턴스와 뒤이어 일어나는 읽기 전용 복제본의 업데이트 간 지연 시간을 줄일 수 있는 방법에는 다음과 같이 몇 가지가 있습니다.
+ 읽기 전용 복제본의 크기를 조정하여 원본 DB 인스턴스에 버금가는 스토리지 크기와 DB 인스턴스 클래스를 할당합니다.
+ 원본 DB 인스턴스와 읽기 전용 복제본에 사용되는 DB 파라미터 그룹의 파라미터 설정이 서로 호환되는지 확인합니다. 자세한 정보와 예는 이번 섹션 후반의 `max_allowed_packet` 파라미터 관련 설명을 참조하십시오.

Amazon RDS는 읽기 전용 복제본의 복제 상태를 모니터링하고, 어떤 이유로든 복제가 중지되는 경우 읽기 전용 복제본 인스턴스의 `Replication State` 필드를 `Error`로 업데이트합니다. 읽기 전용 복제본에서 실행되는 DML 쿼리가 원본 DB 인스턴스의 업데이트와 충돌하는 경우가 한 예가 될 수 있습니다.

MariaDB 엔진에서 발생하는 관련 오류에 대한 세부 정보는 `Replication Error` 필드에서 다시 확인할 수 있습니다. [RDS-EVENT-0045](USER_Events.Messages.md#RDS-EVENT-0045), [RDS-EVENT-0046](USER_Events.Messages.md#RDS-EVENT-0046) 및 [RDS-EVENT-0047](USER_Events.Messages.md#RDS-EVENT-0047)을 포함하여 읽기 전용 복제본의 상태를 나타내는 이벤트도 생성됩니다. 이벤트와 이벤트 구독에 대한 자세한 내용은 [Amazon RDS 이벤트 알림 작업](USER_Events.md) 단원을 참조하십시오. MariaDB 오류 메시지가 반환되는 경우 [MariaDB 오류 메시지 문서](http://mariadb.com/kb/en/mariadb/mariadb-error-codes/)에 설명되어 있는 오류를 검토하십시오.

복제 오류의 원인이 되는 공통적인 문제를 하나 꼽으라고 하면 읽기 전용 복제본의 `max_allowed_packet` 파라미터 값이 원본 DB 인스턴스의 `max_allowed_packet` 파라미터 값보다 작을 때입니다. `max_allowed_packet` 파라미터는 DB 파라미터 그룹에서 설정할 수 있는 사용자 지정 파라미터로, 데이터베이스에서 실행할 수 있는 DML 코드의 최대 크기를 지정하는 데 사용됩니다. 경우에 따라 원본 DB 인스턴스와 연결된 DB 파라미터 그룹의 `max_allowed_packet` 파라미터 값이 원본의 읽기 전용 복제본과 연결된 DB 파라미터 그룹의 `max_allowed_packet` 파라미터 값보다 작습니다. 이러한 경우에는 복제 프로세스에서 오류(패킷이 'max\$1allowed\$1packet' 바이트보다 큼)가 발생하여 복제가 중단될 수도 있습니다. 원본 및 읽기 전용 복제본이 동일한 `max_allowed_packet` 파라미터 값을 가진 DB 파라미터 그룹을 사용하도록 하여 이 오류를 해결할 수 있습니다.

이밖에 복제 오류의 원인이 되는 공통적인 상황은 다음과 같습니다.
+ 읽기 전용 복제본의 테이블에 쓰기 작업 중일 때. 읽기 전용 복제본에서 인덱스를 생성 중인 경우 `read_only` 파라미터를 **0**으로 설정하여 인덱스를 생성해야 합니다. 읽기 전용 복제본의 테이블에 쓰기 작업 중인 경우 복제가 중단될 수 있습니다.
+ MyISAM과 같은 비트랜잭션 스토리지 엔진을 사용할 때. 읽기 전용 복제본에 트랜잭션 스토리지 엔진이 필요합니다. 복제는 MariaDB의 InnoDB 스토리지 엔진에서만 지원됩니다.
+ `SYSDATE()`와 같이 안전하지 않은 비결정적 쿼리를 사용하는 경우. 자세한 내용은 [바이너리 로깅에서 안전한 문과 안전하지 않은 문 결정](https://dev.mysql.com/doc/refman/8.0/en/replication-rbr-safe-unsafe.html)을 참조하세요.

오류를 건너뛰어도 안전하다고 판단될 경우에는 [RDS for MySQL에 대한 현재 복제 오류 건너뛰기](Appendix.MySQL.CommonDBATasks.SkipError.md)에 설명한 단계를 따르십시오. 그 밖에 읽기 전용 복제본을 삭제하고 엔드포인트가 이전 읽기 전용 복제본의 엔드포인트와 동일하게 유지되도록 동일한 DB 인스턴스 식별자를 사용하여 인스턴스를 생성할 수도 있습니다. 복제 오류가 해결되면 `Replication State`가 *replicating*으로 변경됩니다.

MariaDB DB 인스턴스에서는 경우에 따라 읽기 전용 복제본을 보조 인스턴스로 전환하지 못할 수도 있습니다. 이는 일부 이진 로그(binlog) 이벤트가 오류로 인해 플러시되지 않기 때문입니다. 이러한 경우 수동으로 읽기 전용 복제본을 삭제한 후 재생성해야 합니다. `sync_binlog=1` 및 `innodb_flush_log_at_trx_commit=1` 파라미터 값을 설정하여 발생하는 이러한 가능성을 줄일 수 있습니다. 단, 이 설정은 성능 감소의 원인이 될 수도 있으므로 변경 사항을 프로덕션 환경에 적용하기 전에 그 효과를 테스트하는 것이 좋습니다.

# 외부 소스 인스턴스를 사용하여 GTID 기반 복제 구성
<a name="MariaDB.Procedural.Replication.GTID"></a>

버전 10.0.24 이상의 외부 MariaDB 인스턴스에서 RDS for MariaDB DB 인스턴스로 가는 전역 트랜잭션 ID(GTID)를 기반으로 복제를 설정할 수 있습니다. Amazon RDS에서 외부 소스 인스턴스 및 복제본을 설정할 때 다음 지침을 따르십시오.
+ 사용자의 복제본인 RDS for MariaDB DB 인스턴스에 대한 장애 조치 이벤트를 모니터링합니다. 장애 조치가 발생할 경우에는 사용자의 복제본인 DB 인스턴스가 다른 네트워크 주소를 가진 새 호스트에서 다시 생성될 수도 있습니다. 장애 조치 이벤트를 모니터링하는 자세한 방법은 [Amazon RDS 이벤트 알림 작업](USER_Events.md) 단원을 참조하십시오.
+ 이진 로그(binlog)가 복제본에 적용되었음을 확인할 때까지는 소스 인스턴스에서 binlog를 유지 관리하십시오. 이렇게 유지 관리해야 오류 발생 시 소스 인스턴스를 복원할 수 있습니다.
+ Amazon RDS 상의 MariaDB DB 인스턴스에서 자동 백업을 활성화합니다. 자동 백업을 활성화하면 소스 인스턴스 및 복제본을 다시 동기화할 필요가 있을 때 복제본을 특정 시점으로 복원할 수 있습니다. 백업과 특정 시점으로 복원에 대한 자세한 내용은 다음([데이터 백업, 복원 및 내보내기](CHAP_CommonTasks.BackupRestore.md))단원을 참조하십시오.

**참고**  
MariaDB DB 인스턴스에서 복제를 시작하는 데 필요한 권한은 제한되고 Amazon RDS 마스터 사용자는 사용할 수 없습니다. 따라서 Amazon RDS [mysql.rds\$1set\$1external\$1master\$1gtid](mysql_rds_set_external_master_gtid.md) 및 [mysql.rds\$1start\$1replication](mysql-stored-proc-replicating.md#mysql_rds_start_replication) 명령을 사용하여 라이브 데이터베이스와 RDS for MariaDB 데이터베이스 사이의 복제를 설정해야 합니다.

외부 소스 인스턴스와 Amazon RDS의 MariaDB DB 인스턴스 간에 복제를 시작하려면 다음 절차를 수행하십시오.<a name="MariaDB.Procedural.Importing.External.Repl.Procedure"></a>

**복제를 시작하려면**

1. 원본 MariaDB 인스턴스를 읽기 전용으로 설정합니다.

   ```
   mysql> FLUSH TABLES WITH READ LOCK;
   mysql> SET GLOBAL read_only = ON;
   ```

1. 외부 MariaDB 인스턴스의 현재 GTID를 가져옵니다. 이를 위해 `mysql` 또는 원하는 쿼리 편집기를 사용하여 `SELECT @@gtid_current_pos;`를 실행할 수 있습니다.

   GTID는 `<domain-id>-<server-id>-<sequence-id>` 형식입니다. 일반적인 GTID는 **0-1234510749-1728**과 비슷한 형식입니다. GTID 및 그 구성 요소에 대한 자세한 내용은 MariaDB 설명서의 [전역 트랜잭션 ID](http://mariadb.com/kb/en/mariadb/global-transaction-id/)를 참조하십시오.

1. `mysqldump`를 사용하여 외부 MariaDB 인스턴스에서 MariaDB DB 인스턴스로 데이터베이스를 복사합니다. 매우 큰 데이터베이스의 경우, [가동 중지 시간을 줄이면서 Amazon RDS for MariaDB DB 인스턴스로 데이터 가져오기](mariadb-importing-data-reduced-downtime.md)에서 이 절차를 사용하고 싶을 것입니다.

   대상 LinuxmacOS, 또는Unix:

   ```
   mysqldump \
       --databases database_name \
       --single-transaction \
       --compress \
       --order-by-primary \
       -u local_user \
       -plocal_password | mysql \
           --host=hostname \
           --port=3306 \
           -u RDS_user_name \
           -pRDS_password
   ```

   Windows의 경우:

   ```
   mysqldump ^
       --databases database_name ^
       --single-transaction ^
       --compress ^
       --order-by-primary \
       -u local_user \
       -plocal_password | mysql ^
           --host=hostname ^
           --port=3306 ^
           -u RDS_user_name ^
           -pRDS_password
   ```
**참고**  
`-p` 옵션과 입력한 암호 사이에 공백이 없어야 합니다.  
보안 모범 사례로 여기에 표시된 프롬프트 이외의 암호를 지정하는 것이 좋습니다.

   MariaDB DB 인스턴스에 연결하기 위해 호스트 이름, 사용자 이름, 포트 및 암호를 지정하려면 `--host` 명령에서 `--user (-u)`, `--port`, `-p` 및 `mysql` 옵션을 사용합니다. 호스트 이름은 MariaDB DB 인스턴스 엔드포인트의 DNS 이름입니다(예: `myinstance.123456789012.us-east-1.rds.amazonaws.com`). Amazon RDS Management Console의 인스턴스 세부 정보에서 엔드포인트 값을 찾을 수 있습니다.

1. 원본 MariaDB 인스턴스를 다시 쓰기 가능한 상태로 만듭니다.

   ```
   mysql> SET GLOBAL read_only = OFF;
   mysql> UNLOCK TABLES;
   ```

1. Amazon RDS Management Console에서 MariaDB DB 인스턴스에 대한 VPC 보안 그룹에 외부 MariaDB 데이터베이스를 호스팅하는 서버의 IP 주소를 추가합니다. VPC 보안 그룹 수정에 관한 자세한 내용은 *Amazon Virtual Private Cloud 사용 설명서*에서 [VPC의 보안 그룹](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html) 단원을 참조하십시오.

   다음 조건이 충족되면 IP 주소가 바뀔 수 있습니다.
   + 외부 소스 인스턴스와 DB 인스턴스 간 통신에 퍼블릭 IP 주소를 사용하는 경우
   + 외부 소스 인스턴스가 중지되었다가 다시 시작된 경우

   위 두 가지 조건이 충족되면 추가하기 전에 IP 주소를 확인하십시오.

   외부 MariaDB 인스턴스와 통신할 수 있도록, MariaDB DB 인스턴스 IP 주소에서의 연결을 허용하도록 로컬 네트워크를 구성해야 할 수도 있습니다. MariaDB DB 인스턴스의 IP 주소를 찾으려면 `host` 명령을 사용합니다.

   ```
   host db_instance_endpoint
   ```

   호스트 이름은 MariaDB DB 인스턴스 엔드포인트의 DNS 이름입니다.

1. 선택한 클라이언트를 사용하여 외부 MariaDB 인스턴스에 연결하고 복제에 사용될 MariaDB 사용자를 만듭니다. 이 계정은 오직 복제용으로만 사용되며 보안 향상을 위해 사용자의 도메인으로 제한되어야 합니다. 다음은 예입니다.

   ```
   CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'password';
   ```
**참고**  
보안 모범 사례로 여기에 표시된 프롬프트 이외의 암호를 지정하는 것이 좋습니다.

1. 외부 MariaDB 인스턴스의 경우 복제 사용자에게 `REPLICATION CLIENT` 및 `REPLICATION SLAVE` 권한을 부여합니다. 예를 들어 도메인의 '`REPLICATION CLIENT`' 사용자를 위해 모든 데이터베이스에서 `REPLICATION SLAVE` 및 `repl_user` 권한을 부여하려면 다음 명령을 실행합니다.

   ```
   GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com';
   ```

1. MariaDB DB 인스턴스를 복제본으로 만듭니다. 마스터 사용자로서 MariaDB DB 인스턴스에 연결하고 [mysql.rds\$1set\$1external\$1master\$1gtid](mysql_rds_set_external_master_gtid.md) 명령을 사용하여 외부 MariaDB 데이터베이스를 복제 소스 인스턴스로 식별합니다. 2단계에서 확인된 GTID를 사용하십시오. 다음은 예입니다.

   ```
   CALL mysql.rds_set_external_master_gtid ('mymasterserver.mydomain.com', 3306, 'repl_user', 'password', 'GTID', 1);
   ```
**참고**  
보안 모범 사례로 여기에 표시된 프롬프트 이외의 암호를 지정하는 것이 좋습니다.

1. MariaDB DB 인스턴스에서 [mysql.rds\$1start\$1replication](mysql-stored-proc-replicating.md#mysql_rds_start_replication) 명령을 실행하여 복제를 시작합니다.

   ```
   CALL mysql.rds_start_replication; 
   ```

# 외부 소스 인스턴스를 사용하여 이진 로그 파일 위치 복제 구성
<a name="MySQL.Procedural.Importing.External.ReplMariaDB"></a>

바이너리 로그 파일 복제를 사용하여 RDS for MySQL 또는 MariaDB DB 인스턴스와 Amazon RDS 외부에 있는 MySQL 또는 MariaDB 인스턴스 간에 복제를 설정할 수 있습니다.

**Topics**
+ [시작하기 전에](#MySQL.Procedural.Importing.External.Repl.BeforeYouBegin)
+ [외부 소스 인스턴스를 사용하여 이진 로그 파일 위치 복제 구성](#MySQL.Procedural.Importing.External.Repl.Procedure)

## 시작하기 전에
<a name="MySQL.Procedural.Importing.External.Repl.BeforeYouBegin"></a>

복제된 트랜잭션의 이진 로그 파일 위치를 사용하여 복제를 구성할 수 있습니다.

Amazon RDS DB 인스턴스에서 복제를 시작하는 데 필요한 권한은 제한되고 Amazon RDS 마스터 사용자는 사용할 수 없습니다. 이 때문에 Amazon RDS [mysql.rds\$1set\$1external\$1master(RDS for MariaDB 및 RDS for MySQL 메이저 버전 8.0 이하)](mysql-stored-proc-replicating.md#mysql_rds_set_external_master) 또는 [mysql.rds\$1set\$1external\$1source(RDS for MySQL 메이저 버전 8.4 이상)](mysql-stored-proc-replicating.md#mysql_rds_set_external_source) 및 [mysql.rds\$1start\$1replication](mysql-stored-proc-replicating.md#mysql_rds_start_replication) 명령을 사용하여 라이브 데이터베이스와 Amazon RDS 데이터베이스 사이의 복제를 설정해야 합니다.

MySQL 또는 MariaDB 데이터베이스의 이진 로깅 형식을 설정하려면 `binlog_format` 파라미터를 업데이트합니다. DB 인스턴스가 기본 DB 인스턴스 파라미터 그룹을 사용하는 경우, `binlog_format` 파라미터를 수정하려면 새로운 DB 파라미터 그룹을 만듭니다. MariaDB 및 MySQL 8.0 이하 버전에서는 `binlog_format`의 기본값이 `MIXED`입니다. 그러나 특정한 이진 로그(binlog) 형식이 필요하다면 `binlog_format`을 `ROW` 또는 `STATEMENT`로 설정할 수도 있습니다. 변경 사항을 적용하려면 DB 인스턴스를 재부팅합니다. MySQL 8.4 이상 버전에서는 `binlog_format`의 기본값이 `ROW`입니다.

`binlog_format` 파라미터 설정에 대한 자세한 내용은 [단일 AZ 데이터베이스의 RDS for MySQL 이진 로깅 구성](USER_LogAccess.MySQL.BinaryFormat.md) 단원을 참조하십시오. 다양한 MySQL 복제 유형에 대한 자세한 내용은 MySQL 설명서의 [문 기반 및 행 기반 복제의 장/단점](https://dev.mysql.com/doc/refman/8.0/en/replication-sbr-rbr.html)을 참조하십시오.

## 외부 소스 인스턴스를 사용하여 이진 로그 파일 위치 복제 구성
<a name="MySQL.Procedural.Importing.External.Repl.Procedure"></a>

Amazon RDS에서 외부 소스 인스턴스 및 복제본을 설정할 때 다음 지침을 따르십시오.
+ 사용자의 복제본인 Amazon RDS DB 인스턴스에 대한 장애 조치 이벤트를 모니터링합니다. 장애 조치가 발생할 경우에는 사용자의 복제본인 DB 인스턴스가 다른 네트워크 주소를 가진 새 호스트에서 다시 생성될 수도 있습니다. 장애 조치 이벤트를 모니터링하는 자세한 방법은 [Amazon RDS 이벤트 알림 작업](USER_Events.md) 단원을 참조하십시오.
+ binlog가 복제본에 적용된 것으로 확인될 때까지는 소스 인스턴스에서 binlog를 유지 관리합니다. 이렇게 유지 관리해야 오류 발생 시 소스 인스턴스를 복원할 수 있습니다.
+ Amazon RDS DB 인스턴스에서 자동 백업을 활성화합니다. 자동 백업을 활성화하면 소스 인스턴스 및 복제본을 다시 동기화할 필요가 있을 때 복제본을 특정 시점으로 복원할 수 있습니다. 백업 및 특정 시점으로 복원에 대한 자세한 내용은 [데이터 백업, 복원 및 내보내기](CHAP_CommonTasks.BackupRestore.md) 단원을 참조하십시오.

**외부 소스 인스턴스를 사용하여 이진 로그 파일 위치 복제를 구성하려면**

1. 원본 MySQL 또는 MariaDB 인스턴스를 읽기 전용으로 설정합니다.

   ```
   mysql> FLUSH TABLES WITH READ LOCK;
   mysql> SET GLOBAL read_only = ON;
   ```

1. 원본 MySQL 또는 MariaDB 인스턴스에서 `SHOW MASTER STATUS` 명령을 실행하여 binlog 위치를 확인합니다.

   다음 예제와 비슷한 출력 결과를 얻습니다.

   ```
   File                        Position  
   ------------------------------------
    mysql-bin-changelog.000031      107   
   ------------------------------------
   ```

1. `mysqldump`를 사용하여 외부 인스턴스에서 Amazon RDS DB 인스턴스로 데이터베이스를 복사합니다. 매우 큰 데이터베이스의 경우, [가동 중지 시간을 줄이면서 Amazon RDS for MySQL 데이터베이스로 데이터 가져오기](mysql-importing-data-reduced-downtime.md)에서 이 절차를 사용하고 싶을 것입니다.

   대상 LinuxmacOS, 또는Unix:

   ```
   mysqldump --databases database_name \
       --single-transaction \
       --compress \
       --order-by-primary \
       -u local_user \
       -plocal_password | mysql \
           --host=hostname \
           --port=3306 \
           -u RDS_user_name \
           -pRDS_password
   ```

   Windows의 경우:

   ```
   mysqldump --databases database_name ^
       --single-transaction ^
       --compress ^
       --order-by-primary ^
       -u local_user ^
       -plocal_password | mysql ^
           --host=hostname ^
           --port=3306 ^
           -u RDS_user_name ^
           -pRDS_password
   ```
**참고**  
`-p` 옵션과 입력한 암호 사이에 공백이 없어야 합니다.

   Amazon RDS DB 인스턴스에 연결하기 위해 호스트 이름, 사용자 이름, 포트 및 암호를 지정하려면 `--host` 명령에 `--user (-u)`, `--port`, `-p`, `mysql` 옵션을 사용합니다. 호스트 이름은 Amazon RDS DB 인스턴스 엔드포인트의 DNS(Domain Name Service) 이름입니다(예: `myinstance.123456789012.us-east-1.rds.amazonaws.com`). AWS Management Console의 인스턴스 세부 정보에서 엔드포인트 값을 확인할 수 있습니다.

1. 원본 MySQL 또는 MariaDB 인스턴스를 다시 쓰기 가능한 상태로 만듭니다.

   ```
   mysql> SET GLOBAL read_only = OFF;
   mysql> UNLOCK TABLES;
   ```

   복제에 사용할 백업을 만드는 방법에 대한 자세한 내용은 [MySQL 설명서](https://dev.mysql.com/doc/refman/8.0/en/replication-solutions-backups-read-only.html)를 참조하십시오.

1. AWS Management Console에서 Amazon RDS DB 인스턴스에 대한 Virtual Private Cloud(VPC) 보안 그룹에 외부 데이터베이스를 호스팅하는 서버의 IP 주소를 추가합니다. VPC 보안 그룹 수정에 대한 자세한 내용은 *Amazon Virtual Private Cloud 사용 설명서*의 [VPC용 보안 그룹](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html)을 참조하십시오.

   다음 조건이 충족되면 IP 주소가 바뀔 수 있습니다.
   + 외부 소스 인스턴스와 DB 인스턴스 간 통신에 퍼블릭 IP 주소를 사용하는 경우
   + 외부 소스 인스턴스가 중지되었다가 다시 시작된 경우

   위 두 가지 조건이 충족되면 추가하기 전에 IP 주소를 확인하십시오.

   Amazon RDS DB 인스턴스의 IP 주소로부터의 연결을 허용하도록 로컬 네트워크를 구성해야 할 수도 있습니다. 이렇게 하면 로컬 네트워크가 외부 MySQL 또는 MariaDB 인스턴스와 통신할 수 있습니다. Amazon RDS DB 인스턴스의 IP 주소를 확인하려면 `host` 명령을 사용합니다.

   ```
   host db_instance_endpoint
   ```

   호스트 이름은 Amazon RDS DB 인스턴스 엔드포인트의 DNS 이름입니다.

1. 선택한 클라이언트를 사용하여 외부 인스턴스에 연결하고 복제에 사용할 사용자를 만듭니다. 이 계정을 복제용으로만 사용하고, 보안을 강화하기 위해 해당 도메인으로만 제한하십시오. 다음은 예입니다.

   ```
   CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'password';
   ```
**참고**  
보안 모범 사례로 여기에 표시된 프롬프트 이외의 암호를 지정하는 것이 좋습니다.

1. 외부 인스턴스의 경우 복제 사용자에게 `REPLICATION CLIENT` 및 `REPLICATION SLAVE` 권한을 부여합니다. 예를 들어 도메인의 '`REPLICATION CLIENT`' 사용자를 위해 모든 데이터베이스에서 `REPLICATION SLAVE` 및 `repl_user` 권한을 부여하려면 다음 명령을 실행합니다.

   ```
   GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com';
   ```

1. Amazon RDS DB 인스턴스를 복제본으로 만듭니다. 이렇게 하려면 먼저 마스터 사용자로 Amazon RDS DB 인스턴스에 연결합니다. 그런 다음 [mysql.rds\$1set\$1external\$1source(RDS for MySQL 메이저 버전 8.4 이상)](mysql-stored-proc-replicating.md#mysql_rds_set_external_source) 또는 [mysql.rds\$1set\$1external\$1master(RDS for MariaDB 및 RDS for MySQL 메이저 버전 8.0 이하)](mysql-stored-proc-replicating.md#mysql_rds_set_external_master) 명령을 사용하여 외부 MySQL 또는 MariaDB 데이터베이스를 소스 인스턴스로 식별합니다. 2단계에서 확인한 마스터 로그 파일 이름과 마스터 로그 위치를 사용합니다. 다음 명령은 예시입니다.

   **MySQL 8.4**

   ```
   CALL mysql.rds_set_external_source ('mysourceserver.mydomain.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000031', 107, 1);
   ```

   **MariaDB 및 MySQL 8.0 및 5.7**

   ```
   CALL mysql.rds_set_external_master ('mymasterserver.mydomain.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000031', 107, 1);
   ```
**참고**  
RDS for MySQL의 경우 [mysql.rds\$1set\$1external\$1source\$1with\$1delay(RDS for MySQL 메이저 버전 8.4 이상)](mysql-stored-proc-replicating.md#mysql_rds_set_external_source_with_delay) 또는 [mysql.rds\$1set\$1external\$1master\$1with\$1delay(RDS for MariaDB 및 RDS for MySQL 메이저 버전 8.0 이하)](mysql-stored-proc-replicating.md#mysql_rds_set_external_master_with_delay) 저장 프로시저를 대신 실행하여 지연 복제를 사용하도록 선택할 수 있습니다. RDS for MySQL에서 지연 복제를 사용하는 이유 중 하나는 [mysql.rds\$1start\$1replication\$1until](mysql-stored-proc-replicating.md#mysql_rds_start_replication_until) 저장 프로시저를 사용하여 재해를 복구할 수 있기 때문입니다. 현재 RDS for MariaDB에서는 지연된 복제를 지원하지만 `mysql.rds_start_replication_until` 절차에서는 지원하지 않습니다.

1. Amazon RDS DB 인스턴스에서 [mysql.rds\$1start\$1replication](mysql-stored-proc-replicating.md#mysql_rds_start_replication) 명령을 실행하여 복제를 시작합니다.

   ```
   CALL mysql.rds_start_replication;
   ```

# MariaDB 데이터베이스 엔진을 위한 옵션
<a name="Appendix.MariaDB.Options"></a>

아래에는 MariaDB DB 엔진을 실행하는 Amazon RDS 인스턴스에 사용 가능한 옵션 또는 추가 기능에 대한 설명이 나와 있습니다. 이러한 옵션을 설정하려면 사용자 지정 옵션 그룹에 추가한 다음 옵션 그룹과 DB 인스턴스를 연결해야 합니다. 옵션 그룹 작업에 대한 자세한 내용은 [옵션 그룹 작업](USER_WorkingWithOptionGroups.md) 단원을 참조하세요.

Amazon RDS는 다음의 MariaDB 옵션을 지원합니다.


| 옵션 ID | 엔진 버전 | 
| --- | --- | 
|  `MARIADB_AUDIT_PLUGIN`  |  MariaDB 10.3 이상  | 

## MariaDB 감사 플러그인 지원
<a name="Appendix.MariaDB.Options.AuditPlugin"></a>

Amazon RDS는 MariaDB 데이터베이스 인스턴스에서의 MariaDB 감사 플러그인 사용을 지원합니다. MariaDB 감사 플러그인은 사용자의 데이터베이스 로그온, 데이터베이스에 대해 실행되는 쿼리 등의 데이터베이스 활동을 기록합니다. 데이터베이스 활동 기록은 로그 파일에 저장됩니다.

### 감사 플러그인 옵션 설정
<a name="Appendix.MariaDB.Options.AuditPlugin.Options"></a>

Amazon RDS는 MariaDB 감사 플러그인 옵션의 다음 설정을 지원합니다.

**참고**  
RDS 콘솔에서 옵션 설정을 구성하지 않을 경우 RDS는 기본 설정을 사용합니다.


| 옵션 설정 | 유효한 값 | 기본값 | 설명 | 
| --- | --- | --- | --- | 
| `SERVER_AUDIT_FILE_PATH` | `/rdsdbdata/log/audit/` | `/rdsdbdata/log/audit/` |  로그 파일의 위치. 로그 파일에는 `SERVER_AUDIT_EVENTS`에서 지정된 활동 기록이 포함되어 있습니다. 자세한 내용은 [데이터베이스 로그 파일 보기 및 나열](USER_LogAccess.Procedural.Viewing.md) 및 [MariaDB 데이터베이스 로그 파일](USER_LogAccess.Concepts.MariaDB.md) 단원을 참조하십시오.  | 
| `SERVER_AUDIT_FILE_ROTATE_SIZE` | 1–1000000000 | 1000000 |  도달 시 파일 로테이션을 초래하는 바이트 크기. 자세한 내용은 [MariaDB의 로그 교체 및 보존](USER_LogAccess.MariaDB.LogFileSize.md) 섹션을 참조하세요.  | 
| `SERVER_AUDIT_FILE_ROTATIONS` | 0–100 | 9 |  `server_audit_output_type=file`일 경우 저장할 로그 교체 수입니다. 0으로 설정하면 로그 파일이 교체되지 않습니다. 자세한 내용은 [MariaDB의 로그 교체 및 보존](USER_LogAccess.MariaDB.LogFileSize.md) 및 [데이터베이스 로그 파일 다운로드](USER_LogAccess.Procedural.Downloading.md) 단원을 참조하세요.  | 
| `SERVER_AUDIT_EVENTS` | `CONNECT`, `QUERY`, `TABLE`, `QUERY_DDL`, `QUERY_DML`, `QUERY_DML_NO_SELECT`, `QUERY_DCL` | `CONNECT`, `QUERY` |  로그에 기록할 활동 유형. MariaDB 감사 플러그인 설치 자체가 로깅됩니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Appendix.MariaDB.Options.html)  | 
| `SERVER_AUDIT_INCL_USERS` | 복수의 쉼표로 분리된 값 | 없음 |  지정된 사용자들의 활동만을 포함하십시오. 기본적으로 활동은 모든 사용자에 대해 기록됩니다. `SERVER_AUDIT_INCL_USERS` 및 `SERVER_AUDIT_EXCL_USERS`는 상호 배타적입니다. `SERVER_AUDIT_INCL_USERS`에 값을 추가하는 경우 `SERVER_AUDIT_EXCL_USERS`에 값이 추가되지 않았는지 확인합니다.  | 
| `SERVER_AUDIT_EXCL_USERS` | 복수의 쉼표로 분리된 값 | 없음 |  지정된 사용자들의 활동을 제외하십시오. 기본적으로 활동은 모든 사용자에 대해 기록됩니다. `SERVER_AUDIT_INCL_USERS` 및 `SERVER_AUDIT_EXCL_USERS`는 상호 배타적입니다. `SERVER_AUDIT_EXCL_USERS`에 값을 추가하는 경우 `SERVER_AUDIT_INCL_USERS`에 값이 추가되지 않았는지 확인합니다.  `rdsadmin` 사용자는 데이터베이스 상태를 확인하기 위해 1초마다 데이터베이스에 쿼리를 요청합니다. 다른 설정에 따라 이 활동은 로그 파일의 크기를 아주 빨리 대폭 증가시킬 수 있습니다. 이 활동을 기록할 필요가 없는 경우, `rdsadmin` 사용자를 `SERVER_AUDIT_EXCL_USERS` 목록에 추가하십시오.   `CONNECT` 활동은 해당 사용자가 이 옵션 설정에 지정되었다 해도 모든 사용자에 대해 기록됩니다.   | 
| `SERVER_AUDIT_LOGGING` | `ON` | `ON` |  로깅이 활성화되었습니다. 유일한 유효 값은 `ON`입니다. Amazon RDS는 로깅 비활성화를 지원하지 않습니다. 로깅을 비활성화하려면 MariaDB 감사 플러그인을 제거하십시오. 자세한 내용은 [MariaDB 감사 플러그인 제거하기](#Appendix.MariaDB.Options.AuditPlugin.Remove) 섹션을 참조하세요.  | 
| `SERVER_AUDIT_QUERY_LOG_LIMIT` | 0–2147483647 | 1024 |  레코드에서 쿼리 문자열의 길이 제한.  | 

### MariaDB 감사 플러그인 추가하기
<a name="Appendix.MariaDB.Options.AuditPlugin.Add"></a>

MariaDB 감사 플러그인을 DB 인스턴스에 추가하는 일반적인 프로세스는 다음과 같습니다.

1. 새 옵션 그룹을 생성하거나 기존 옵션 그룹을 복사 또는 수정합니다.

1. [] 옵션을 옵션 그룹에 추가합니다.

1. 옵션 그룹을 DB 인스턴스에 연동시킵니다.

MariaDB 감사 플러그인을 추가한 후 DB 인스턴스를 재시작할 필요가 없습니다. 옵션 그룹이 활성화되자마자 감사가 즉시 시작됩니다.

**MariaDB 감사 플러그인을 추가하려면,**

1. 사용할 옵션 그룹을 결정합니다. 새 옵션 그룹을 생성하거나 기존 옵션 그룹을 사용합니다. 기존 옵션 그룹을 사용하려면 다음 단계로 건너뛰십시오. 그렇지 않다면 사용자 지정 DB 옵션 그룹을 생성합니다. **Engine**(엔진)에서 **mariadb**를 선택하고 **Major engine version**(메이저 엔진 버전)에서 **10.3** 이상을 선택합니다. 자세한 내용은 [옵션 그룹 생성](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create) 단원을 참조하십시오.

1. **MARIADB\$1AUDIT\$1PLUGIN** 옵션을 옵션 그룹에 추가하고 옵션 설정을 구성하십시오. 옵션 추가에 대한 자세한 내용은 [옵션 그룹에 옵션 추가](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption) 섹션을 참조하세요. 각 설정에 대한 자세한 내용은 [감사 플러그인 옵션 설정](#Appendix.MariaDB.Options.AuditPlugin.Options) 단원을 참조하십시오.

1. 옵션 그룹을 새 DB 인스턴스 또는 기존 DB 인스턴스에 적용합니다.
   + 새 DB 인스턴스의 경우, 인스턴스를 시작할 때 옵션 그룹을 적용합니다. 자세한 내용은 [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md) 섹션을 참조하세요.
   + 기존 DB 인스턴스의 경우 DB 인스턴스를 수정하고 새 옵션 그룹을 연결하여 옵션 그룹을 적용합니다. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

### MariaDB 감사 플러그인 로그 보기 및 다운로드
<a name="Appendix.MariaDB.Options.AuditPlugin.Log"></a>

MariaDB 감사 플러그인을 활성화한 후 다른 텍스트 기반 로그 파일에 액세스하는 것과 동일한 방식으로 로그 파일의 결과에 액세스할 수 있습니다. 감사 로그 파일은 `/rdsdbdata/log/audit/`에 있습니다. 콘솔에서 로그 파일 보기에 대한 자세한 내용은 [데이터베이스 로그 파일 보기 및 나열](USER_LogAccess.Procedural.Viewing.md)을(를) 참조하십시오. 로그 파일 다운로드에 대한 자세한 내용은 [데이터베이스 로그 파일 다운로드](USER_LogAccess.Procedural.Downloading.md)을(를) 참조하십시오.

### MariaDB 감사 플러그인 설정 수정
<a name="Appendix.MariaDB.Options.AuditPlugin.ModifySettings"></a>

MariaDB 감사 플러그인을 활성화한 후 플러그인 설정을 수정할 수 있습니다. 옵션 설정을 변경하는 방법에 대한 자세한 내용은 [옵션 설정 수정](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.ModifyOption)을(를) 참조하십시오. 각 설정에 대한 자세한 내용은 [감사 플러그인 옵션 설정](#Appendix.MariaDB.Options.AuditPlugin.Options) 단원을 참조하십시오.

### MariaDB 감사 플러그인 제거하기
<a name="Appendix.MariaDB.Options.AuditPlugin.Remove"></a>

Amazon RDS는 MariaDB 감사 플러그인에서의 로깅 끄기를 지원하지 않습니다. 다만 DB 인스턴스에서 플러그인을 제거할 수는 있습니다. MariaDB 감사 플러그인을 제거할 때 DB 인스턴스가 자동으로 재시작하여 감사가 중지됩니다.

MariaDB 감사 플러그인을 DB 인스턴스에서 제거하려면 다음 중 하나를 실행하십시오.
+ MariaDB 감사 플러그인이 속한 옵션 그룹에서 MariaDB 감사 플러그인 옵션을 제거합니다. 이 변경은 해당 옵션 그룹을 사용하는 모든 DB 인스턴스에 영향을 미칩니다. 자세한 내용은 [옵션 그룹에서 옵션 제거](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption) 섹션을 참조하세요.
+ DB 인스턴스를 수정하고, 플러그인이 포함되지 않은 다른 옵션 그룹을 지정합니다. 이 변경은 단일 DB 인스턴스에 영향을 미칩니다. 기본(빈) 옵션 그룹을 지정하거나 다른 사용자 지정 옵션 그룹을 지정할 수 있습니다. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

# MariaDB에 대한 파라미터
<a name="Appendix.MariaDB.Parameters"></a>

기본적으로, MariaDB DB 인스턴스는 MariaDB 데이터베이스에만 해당되는 DB 파라미터 그룹을 사용합니다. 이 파라미터 그룹에는 MySQL 데이터베이스 엔진용 Amazon RDS DB 파라미터 그룹의 파라미터 중 일부만 포함되어 있습니다. 또한 몇 개의 새로운 MariaDB 고유 파라미터도 포함되어 있습니다. 파라미터 그룹 작업 및 파라미터 설정에 대한 자세한 내용은 [Amazon RDS의 파라미터 그룹](USER_WorkingWithParamGroups.md) 단원을 참조하십시오.

## MariaDB 파라미터 보기
<a name="Appendix.MariaDB.Parameters.Viewing"></a>

RDS for MariaDB 파라미터는 사용자가 선택한 스토리지 엔진의 기본값으로 설정됩니다. MariaDB 파라미터에 대한 자세한 내용은 [MariaDB 설명서](http://mariadb.com/kb/en/mariadb/documentation/)를 참조하세요. MariaDB 스토리지 엔진에 대한 자세한 내용은 [Amazon RDS MariaDB에 대해 지원되는 스토리지 엔진](MariaDB.Concepts.Storage.md) 섹션을 참조하세요.

RDS 콘솔이나 AWS CLI를 사용하여 특정 RDS for MariaDB 버전에 대해 사용할 수 있는 파라미터를 볼 수 있습니다. RDS 콘솔의 파라미터 그룹에서 MariaDB 파라미터 보기에 대한 자세한 정보는 [Amazon RDS에서 DB 파라미터 그룹의 파라미터 값 보기](USER_WorkingWithParamGroups.Viewing.md) 섹션을 참조하세요.

AWS CLI로 [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-engine-default-parameters.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-engine-default-parameters.html) 명령을 실행하여 RDS for MariaDB 버전의 파라미터를 볼 수 있습니다. `--db-parameter-group-family` 옵션에 대해 다음 값 중 하나를 지정할 수 있습니다.
+ `mariadb11.8`
+ `mariadb11.4`
+ `mariadb10.11`
+ `mariadb10.6`
+ `mariadb10.5`
+ `mariadb10.4`
+ `mariadb10.3`

예를 들어 RDS for MariaDB 버전 10.6에 대한 파라미터를 보려면 다음 명령을 실행합니다.

```
aws rds describe-engine-default-parameters --db-parameter-group-family mariadb10.6
```

출력 결과는 다음과 비슷합니다.

```
{
    "EngineDefaults": {
        "Parameters": [
            {
                "ParameterName": "alter_algorithm",
                "Description": "Specify the alter table algorithm.",
                "Source": "engine-default",
                "ApplyType": "dynamic",
                "DataType": "string",
                "AllowedValues": "DEFAULT,COPY,INPLACE,NOCOPY,INSTANT",
                "IsModifiable": true
            },
            {
                "ParameterName": "analyze_sample_percentage",
                "Description": "Percentage of rows from the table ANALYZE TABLE will sample to collect table statistics.",
                "Source": "engine-default",
                "ApplyType": "dynamic",
                "DataType": "float",
                "AllowedValues": "0-100",
                "IsModifiable": true
            },
            {
                "ParameterName": "aria_block_size",
                "Description": "Block size to be used for Aria index pages.",
                "Source": "engine-default",
                "ApplyType": "static",
                "DataType": "integer",
                "AllowedValues": "1024-32768",
                "IsModifiable": false
            },
            {
                "ParameterName": "aria_checkpoint_interval",
                "Description": "Interval in seconds between automatic checkpoints.",
                "Source": "engine-default",
                "ApplyType": "dynamic",
                "DataType": "integer",
                "AllowedValues": "0-4294967295",
                "IsModifiable": true
            },
        ...
```

RDS for MariaDB 버전 10.6에 대한 수정 가능 파라미터를 나열하려면 다음 명령을 실행합니다.

대상 LinuxmacOS, 또는Unix:

```
aws rds describe-engine-default-parameters --db-parameter-group-family mariadb10.6 \
   --query 'EngineDefaults.Parameters[?IsModifiable==`true`]'
```

Windows의 경우:

```
aws rds describe-engine-default-parameters --db-parameter-group-family mariadb10.6 ^
   --query "EngineDefaults.Parameters[?IsModifiable==`true`]"
```

## 사용할 수 없는 MySQL 파라미터입니다.
<a name="Appendix.MariaDB.Parameters.MySQLNotAvailable"></a>

다음의 MySQL 파라미터는 MariaDB 고유의 DB 파라미터 그룹에서 사용할 수 없습니다.
+ bind\$1address
+ binlog\$1error\$1action
+ binlog\$1gtid\$1simple\$1recovery
+ binlog\$1max\$1flush\$1queue\$1time
+ binlog\$1order\$1commits
+ binlog\$1row\$1image
+ binlog\$1rows\$1query\$1log\$1events
+ binlogging\$1impossible\$1mode
+ block\$1encryption\$1mode
+ core\$1file
+ default\$1tmp\$1storage\$1engine
+ div\$1precision\$1increment
+ end\$1markers\$1in\$1json
+ enforce\$1gtid\$1consistency
+ eq\$1range\$1index\$1dive\$1limit
+ explicit\$1defaults\$1for\$1timestamp
+ gtid\$1executed
+ gtid-mode
+ gtid\$1next
+ gtid\$1owned
+ gtid\$1purged
+ log\$1bin\$1basename
+ log\$1bin\$1index
+ log\$1bin\$1use\$1v1\$1row\$1events
+ log\$1slow\$1admin\$1statements
+ log\$1slow\$1slave\$1statements
+ log\$1throttle\$1queries\$1not\$1using\$1indexes
+ master-info-repository
+ optimizer\$1trace
+ optimizer\$1trace\$1features
+ optimizer\$1trace\$1limit
+ optimizer\$1trace\$1max\$1mem\$1size
+ optimizer\$1trace\$1offset
+ relay\$1log\$1info\$1repository
+ rpl\$1stop\$1slave\$1timeout
+ slave\$1parallel\$1workers
+ slave\$1pending\$1jobs\$1size\$1max
+ slave\$1rows\$1search\$1algorithms
+ storage\$1engine
+ table\$1open\$1cache\$1instances
+ timed\$1mutexes
+ transaction\$1allow\$1batching
+ validate-password
+ validate\$1password\$1dictionary\$1file
+ validate\$1password\$1length
+ validate\$1password\$1mixed\$1case\$1count
+ validate\$1password\$1number\$1count
+ validate\$1password\$1policy
+ validate\$1password\$1special\$1char\$1count

MySQL 파라미터에 대한 자세한 내용은 [MySQL 설명서](https://dev.mysql.com/doc/refman/8.0/en/)를 참조하세요.

# MySQL DB 스냅샷에서 MariaDB DB 인스턴스로 데이터 마이그레이션
<a name="USER_Migrate_MariaDB"></a>

AWS Management Console, AWS CLI 또는 Amazon RDS API를 사용하여 MariaDB를 실행하는 새 DB 인스턴스로 RDS for MySQL DB 스냅샷을 마이그레이션할 수 있습니다. MySQL 5.6 또는 5.7을 실행하는 Amazon RDS DB 인스턴스에서 생성된 DB 스냅샷을 사용해야 합니다. RDS for MySQL DB 스냅샷을 생성하는 방법은 [Amazon RDS의 단일 AZ DB 인스턴스에 대한 DB 스냅샷 생성](USER_CreateSnapshot.md) 섹션을 참조하세요.

스냅샷을 마이그레이션해도 스냅샷이 생성된 원본 DB 인스턴스에는 영향을 주지 않습니다. 원래 DB 인스턴스를 대체하려고 트래픽을 전환하기 전에 새 DB 인스턴스를 테스트하고 검증할 수 있습니다.

MySQL에서 MariaDB로 마이그레이션하면 MariaDB DB 인스턴스는 기본 DB 파라미터 그룹 및 옵션 그룹과 연동됩니다. DB 스냅샷을 복원한 후에는 새 DB 인스턴스와 사용자 지정 DB 파라미터 그룹을 연동할 수 있습니다. 그러나 MariaDB 파라미터 그룹에는 구성 가능한 다양한 시스템 변수 집합이 있습니다. MySQL 및 MariaDB 시스템 변수의 차이에 대한 정보는 [MariaDB 및 MySQL 간 시스템 변수 차이점](https://mariadb.com/kb/en/system-variable-differences-between-mariadb-and-mysql/)을 참조하세요. DB 파라미터 그룹에 대한 자세한 내용은 [Amazon RDS의 파라미터 그룹](USER_WorkingWithParamGroups.md) 단원을 참조하십시오. 옵션 그룹에 대한 자세한 내용은 [옵션 그룹 작업](USER_WorkingWithOptionGroups.md) 단원을 참조하십시오.

## 마이그레이션 수행
<a name="USER_Migrate_MariaDB.Migrating"></a>

AWS Management Console, AWS CLI 또는 RDS API를 사용하여 RDS for MySQL DB 스냅샷을 새 MariaDB DB 인스턴스로 마이그레이션할 수 있습니다.

### 콘솔
<a name="USER_Migrate_MariaDB.CON"></a>

**MySQL DB 스냅샷에서 MariaDB DB 인스턴스로 마이그레이션하려면**

1. [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 AWS Management Console에 로그인한 후 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 [**Snapshots**]를 선택한 다음 마이그레이션하려는 MySQL DB 스냅샷을 선택합니다.

1. **작업(Actions)**에서 **스냅샷 마이그레이션(Migrate snapshot)**을 선택합니다. **데이터베이스 마이그레이션** 페이지가 표시됩니다.

1. [**Migrate to DB Engine**]에서 [**mariadb**]를 선택합니다.

   Amazon RDS에서 **DB 엔진 버전(DB engine version)**을 자동으로 선택합니다. DB 엔진 버전은 변경할 수 없습니다.  
![\[MySQL에서 MariaDB로 마이그레이션하기 위한 Amazon RDS 콘솔dml 데이터베이스 마이그레이션 페이지\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/MigrateMariaDB.png)

1. 나머지 섹션에서 DB 인스턴스 설정을 지정합니다. 각 설정에 대한 자세한 내용은 [DB 인스턴스에 대한 설정](USER_CreateDBInstance.Settings.md) 단원을 참조하세요.

1. [**Migrate**]를 선택합니다.

### AWS CLI
<a name="USER_Migrate_MariaDB.CLI"></a>

MySQL DB 스냅샷에서 MariaDB DB 인스턴스로 데이터를 마이그레이션하려면 AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html) 명령을 다음 옵션과 함께 실행합니다.
+ --db-instance-identifier – DB 스냅샷에서 생성할 DB 인스턴스의 이름.
+ --db-snapshot-identifier – 복구할 DB 스냅샷에 대한 식별자.
+ --engine – 새 인스턴스에 사용할 데이터베이스 엔진.

**Example**  
대상 LinuxmacOS, 또는Unix:  

```
1. aws rds restore-db-instance-from-db-snapshot \
2.     --db-instance-identifier newmariadbinstance \
3.     --db-snapshot-identifier mysqlsnapshot \
4.     --engine mariadb
```
Windows의 경우:  

```
1. aws rds restore-db-instance-from-db-snapshot ^
2.     --db-instance-identifier newmariadbinstance ^
3.     --db-snapshot-identifier mysqlsnapshot ^
4.     --engine mariadb
```

### API
<a name="USER_Migrate_MariaDB.API"></a>

MySQL DB 스냅샷에서 MariaDB DB 인스턴스로 데이터를 마이그레이션하려면 Amazon RDS API 작업 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html)을 호출합니다.

## MariaDB와 MySQL 간의 호환성 관련 문제
<a name="USER_Migrate_MariaDB.Incompatibilities"></a>

MariaDB와 MySQL 간의 비호환성 관련 문제로는 다음과 같은 것들이 있습니다.
+ MySQL 8.0으로 생성된 DB 스냅샷은 MariaDB로 마이그레이션할 수 없습니다.
+ 원본 MySQL 데이터베이스에서 SHA256 암호 해시를 사용하는 경우, MariaDB 데이터베이스에 연결하려면 먼저 SHA256 해시 처리된 사용자 암호를 재설정해야 합니다. 다음 코드는 SHA256 해시 처리된 암호를 재설정하는 방법을 보여줍니다.

  ```
  SET old_passwords = 0;
  UPDATE mysql.user SET plugin = 'mysql_native_password',
  Password = PASSWORD('new_password')
  WHERE (User, Host) = ('master_user_name', %);
  FLUSH PRIVILEGES;
  ```
+ RDS 기본 사용자 계정에서 SHA-256 암호 해시를 사용하는 경우 AWS Management Console, [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) AWS CLI 명령 또는 [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) RDS API 작업을 통해 암호를 재설정해야 합니다. DB 인스턴스 수정에 대한 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 단원을 참조하세요.
+ MariaDB는 Memcached 플러그 인을 지원하지 않습니다. 그러나 Memcached 플러그 인이 사용하는 데이터는 InnoDB 테이블 형식으로 저장됩니다. MySQL DB 스냅샷을 마이그레이션한 후에는 SQL을 사용하여 Memcached 플러그인이 사용하는 데이터에 액세스할 수 있습니다. innodb\$1memcache 데이터베이스에 대한 자세한 내용은 [InnoDB memcached Plugin Internals](https://dev.mysql.com/doc/refman/8.0/en/innodb-memcached-internals.html)를 참조하십시오.

# Amazon RDS SQL의 MariaDB 참조
<a name="Appendix.MariaDB.SQLRef"></a>

아래에는 MariaDB DB 엔진을 실행 중인 Amazon RDS 인스턴스에 사용할 수 있는 시스템 저장 프로시저에 대한 설명이 나와 있습니다.

MySQL DB 인스턴스 및 MariaDB DB 인스턴스에 사용할 수 있는 시스템 저장 프로시저를 사용할 수 있습니다. 이러한 저장 프로시저는 [RDS for MySQL 저장 프로시저 참조](Appendix.MySQL.SQLRef.md)에 소개되어 있습니다. MariaDB DB 인스턴스는 `mysql.rds_start_replication_until` 및 `mysql.rds_start_replication_until_gtid`를 제외한 모든 저장 프로시저를 지원합니다.

또한 다음은 MariaDB를 실행 중인 Amazon RDS DB 인스턴스에 대해서만 지원되는 시스템 저장 프로시저입니다.
+ [mysql.rds\$1replica\$1status](mysql_rds_replica_status.md)
+ [mysql.rds\$1set\$1external\$1master\$1gtid](mysql_rds_set_external_master_gtid.md)
+ [mysql.rds\$1kill\$1query\$1id](mysql_rds_kill_query_id.md)
+ [mysql.rds\$1execute\$1operation](mysql_rds_execute_operation.md)

# mysql.rds\$1replica\$1status
<a name="mysql_rds_replica_status"></a>

MariaDB 읽기 전용 복제본의 복제 상태를 표시합니다.

읽기 전용 복제본에서 이 프로시저를 호출하여 복제본 스레드의 필수 파라미터에 대한 상태 정보를 표시합니다.

## 구문
<a name="mysql_rds_replica_status-syntax"></a>

```
CALL mysql.rds_replica_status;
```

## 사용 노트
<a name="mysql_rds_replica_status-usage-notes"></a>

이 프로시저는 MariaDB 버전 10.5 이상을 실행하는 MariaDB DB 인스턴스에 대해서만 지원됩니다.

이 프로시저는 `SHOW REPLICA STATUS` 명령과 동일합니다. MariaDB 버전 10.5 이상 DB 인스턴스에서는 이 명령이 지원되지 않습니다.

이전 버전의 MariaDB에서 상응하는 `SHOW SLAVE STATUS` 명령에는 `REPLICATION SLAVE` 권한이 필요했습니다. MariaDB 버전 10.5 이상에서는 `REPLICATION REPLICA ADMIN` 권한이 필요합니다. MariaDB 10.5 이상 DB 인스턴스의 RDS 관리 권한을 보호하기 위해 이 새 권한은 RDS 마스터 사용자에게 부여되지 않습니다.

## 예시
<a name="mysql_rds_replica_status-examples"></a>

다음 예에서는 MariaDB 읽기 전용 복제본의 상태를 보여 줍니다.

```
call mysql.rds_replica_status;
```

응답은 다음과 유사합니다.

```
*************************** 1. row ***************************
                Replica_IO_State: Waiting for master to send event
                     Source_Host: XX.XX.XX.XXX
                     Source_User: rdsrepladmin
                     Source_Port: 3306
                   Connect_Retry: 60
                 Source_Log_File: mysql-bin-changelog.003988
             Read_Source_Log_Pos: 405
                  Relay_Log_File: relaylog.011024
                   Relay_Log_Pos: 657
           Relay_Source_Log_File: mysql-bin-changelog.003988
              Replica_IO_Running: Yes
             Replica_SQL_Running: Yes
                 Replicate_Do_DB:
             Replicate_Ignore_DB:
              Replicate_Do_Table:
          Replicate_Ignore_Table: mysql.rds_sysinfo,mysql.rds_history,mysql.rds_replication_status
         Replicate_Wild_Do_Table:
     Replicate_Wild_Ignore_Table:
                      Last_Errno: 0
                      Last_Error:
                    Skip_Counter: 0
             Exec_Source_Log_Pos: 405
                 Relay_Log_Space: 1016
                 Until_Condition: None
                  Until_Log_File:
                   Until_Log_Pos: 0
              Source_SSL_Allowed: No
              Source_SSL_CA_File:
              Source_SSL_CA_Path:
                 Source_SSL_Cert:
               Source_SSL_Cipher:
                  Source_SSL_Key:
           Seconds_Behind_Master: 0
   Source_SSL_Verify_Server_Cert: No
                   Last_IO_Errno: 0
                   Last_IO_Error:
                  Last_SQL_Errno: 0
                  Last_SQL_Error:
     Replicate_Ignore_Server_Ids:
                Source_Server_Id: 807509301
                  Source_SSL_Crl:
              Source_SSL_Crlpath:
                      Using_Gtid: Slave_Pos
                     Gtid_IO_Pos: 0-807509301-3980
         Replicate_Do_Domain_Ids:
     Replicate_Ignore_Domain_Ids:
                   Parallel_Mode: optimistic
                       SQL_Delay: 0
             SQL_Remaining_Delay: NULL
       Replica_SQL_Running_State: Reading event from the relay log
              Replica_DDL_Groups: 15
Replica_Non_Transactional_Groups: 0
    Replica_Transactional_Groups: 3658
1 row in set (0.000 sec)

Query OK, 0 rows affected (0.000 sec)
```

# mysql.rds\$1set\$1external\$1master\$1gtid
<a name="mysql_rds_set_external_master_gtid"></a>

Amazon RDS 외부에서 실행 중인 MariaDB 인스턴스에서 MariaDB DB 인스턴스로의 GTID 기반 복제를 구성합니다. 이 프로시저는 외부 MariaDB 인스턴스가 버전 10.0.24 이상인 경우에만 지원됩니다. 두 인스턴스 중 하나 또는 모두가 MariaDB 전역 트랜잭션 ID(GTID)를 지원하지 않는 복제를 설정하는 경우 다음([mysql.rds\$1set\$1external\$1master(RDS for MariaDB 및 RDS for MySQL 메이저 버전 8.0 이하)](mysql-stored-proc-replicating.md#mysql_rds_set_external_master))을 사용하십시오.

복제 시 GTID를 사용하면 이진 로그 복제에서는 제공하지 않는 충돌 안정성 기능을 제공하므로 복제 인스턴스가 지원하는 경우에는 GTID 기반 복제를 사용하는 것이 좋습니다.

## 구문
<a name="mysql_rds_set_external_master_gtid-syntax"></a>

 

```
CALL mysql.rds_set_external_master_gtid(
  host_name
  , host_port
  , replication_user_name
  , replication_user_password
  , gtid
  , ssl_encryption
);
```

## 파라미터
<a name="mysql_rds_set_external_master_gtid-parameters"></a>

 *host\$1name*   
문자열. 소스 인스턴스가 될 Amazon RDS 외부에서 실행 중인 MariaDB 인스턴스의 호스트 이름 또는 IP 주소입니다.

 *host\$1port*   
정수. 소스 인스턴스로 구성될 Amazon RDS 외부에서 실행 중인 MariaDB 인스턴스에서 사용하는 포트입니다. 네트워크 구성에 포트 번호를 변환하는 SSH 포트 복제가 포함되는 경우 SSH에 의해 공개되는 포트 이름을 지정하십시오.

 *replication\$1user\$1name*   
문자열. 읽기 전용 복제본으로 구성될 MariaDB DB 인스턴스에서 `REPLICATION SLAVE` 권한이 있는 사용자의 ID입니다.

 *replication\$1user\$1password*   
문자열. `replication_user_name`에 지정된 사용자 ID의 암호입니다.

 *gtid*   
문자열. 복제를 시작해야 하는 소스 인스턴스의 전역 트랜잭션 ID.  
복제를 구성하는 동안 소스 인스턴스가 잠긴다면 `@@gtid_current_pos`를 사용하여 현재 GTID를 가져올 수 있습니다. 그러므로 GTID를 가져오는 시점과 복제가 시작하는 시점 사이에서 이진 로그가 변경되지 않습니다.  
또는 복제를 시작하기 전에 `mysqldump` 버전 10.0.13 이상을 사용하여 복제본 인스턴스를 채우는 경우 `--master-data` 또는 `--dump-slave` 옵션을 사용하여 출력 내 GTID 위치를 가져올 수 있습니다. `mysqldump` 버전 10.0.13 이상을 사용하지 않는 경우에는 `SHOW MASTER STATUS`를 실행하거나 동일한 `mysqldump` 옵션을 사용하여 이진 로그 파일 이름 및 위치를 가져온 다음, 외부 MariaDB 인스턴스에서 `BINLOG_GTID_POS`옵션을 실행해 GTID로 변환할 수 있습니다.  

```
SELECT BINLOG_GTID_POS('<binary log file name>', <binary log file position>);
```
GTID의 MariaDB 구현에 대한 자세한 내용은 MariaDB 설명서에서 [전역 트랜잭션 ID](http://mariadb.com/kb/en/mariadb/global-transaction-id/)를 참조하십시오.

 *ssl\$1encryption*   
복제 연결에 보안 소켓 계층(SSL) 암호화를 사용할지 여부를 지정하는 값입니다. 1은 SSL 암호화 사용, 0은 암호화 사용 안 함입니다. 기본값은 0입니다.  
`MASTER_SSL_VERIFY_SERVER_CERT` 옵션은 지원되지 않습니다. 이 옵션은 0으로 설정되어 있는데, 이는 연결이 암호화되었지만 인증서는 확인되지 않았음을 의미합니다.

## 사용 노트
<a name="mysql_rds_set_external_master_gtid-usage-notes"></a>

`mysql.rds_set_external_master_gtid` 프로시저는 마스터 사용자가 실행해야 합니다. Amazon RDS 외부에서 실행 중인 MariaDB DB 인스턴스의 복제본으로 구성하려는 MariaDB DB 인스턴스에서 실행해야 합니다. `mysql.rds_set_external_master_gtid`를 실행하기 전에 Amazon RDS 외부에서 실행 중인 MariaDB의 인스턴스를 소스 인스터스로 구성해야 합니다. 자세한 내용은 [Amazon RDS for MariaDB DB 인스턴스로 데이터 가져오기](MariaDB.Procedural.Importing.md) 섹션을 참조하세요.

**주의**  
`mysql.rds_set_external_master_gtid`를 사용하여 두 Amazon RDS DB 인스턴스 간 복제를 관리하지 마십시오. RDS 외부에서 실행 중인 MariaDB 인스턴스를 복제할 때만 사용합니다. Amazon RDS DB 인스턴스 간 복제 관리에 대한 자세한 내용은 [DB 인스턴스 읽기 전용 복제본 작업](USER_ReadRepl.md) 주제를 참조하십시오.

`mysql.rds_set_external_master_gtid`를 호출하여 Amazon RDS DB 인스턴스를 읽기 전용 복제본으로 구성한 후 복제본에서 [mysql.rds\$1start\$1replication](mysql-stored-proc-replicating.md#mysql_rds_start_replication)을 호출하여 복제 프로세스를 시작할 수 있습니다. [mysql.rds\$1reset\$1external\$1master(RDS for MariaDB 및 RDS for MySQL 메이저 버전 8.0 이하)](mysql-stored-proc-replicating.md#mysql_rds_reset_external_master)를 호출하여 읽기 전용 복제본 구성을 제거할 수 있습니다.

`mysql.rds_set_external_master_gtid`가 호출되면 Amazon RDS에서 `mysql.rds_history` 및 `mysql.rds_replication_status` 테이블에 시간, 사용자 및 "set master" 작업을 기록합니다.

## 예시
<a name="mysql_rds_set_external_master_gtid-examples"></a>

MariaDB DB 인스턴스에서 다음 예제를 실행하면 Amazon RDS 외부에서 실행 중인 MariaDB 인스턴스의 복제본으로 구성됩니다.

```
call mysql.rds_set_external_master_gtid ('Sourcedb.some.com',3306,'ReplicationUser','SomePassW0rd','0-123-456',0); 
```

# mysql.rds\$1kill\$1query\$1id
<a name="mysql_rds_kill_query_id"></a>

장기 실행 또는 문제가 있는 쿼리를 종료하기 위해 MariaDB 서버에 대해 실행되는 쿼리를 종료합니다. 쿼리 ID를 식별하고 특정 쿼리를 효과적으로 중지하여 성능 문제를 해결하고 최적의 데이터베이스 운영을 유지할 수 있습니다.

## 구문
<a name="mysql_rds_kill_query_id-syntax"></a>

```
CALL mysql.rds_kill_query_id(queryID);
```

## 파라미터
<a name="mysql_rds_kill_query_id-parameters"></a>

 *queryID*   
정수. 종료할 쿼리의 ID입니다.

## 사용 노트
<a name="mysql_rds_kill_query_id-usage-notes"></a>

MariaDB 서버에서 실행 중인 쿼리를 중지하려면 `mysql.rds_kill_query_id` 프로시저를 사용하여 해당 쿼리의 ID를 전달합니다. 쿼리 ID를 가져오려면, 다음과 같이 MariaDB [Information Schema PROCESSLIST 테이블](http://mariadb.com/kb/en/mariadb/information-schema-processlist-table/)을 쿼리합니다

```
SELECT USER, HOST, COMMAND, TIME, STATE, INFO, QUERY_ID FROM 
                INFORMATION_SCHEMA.PROCESSLIST WHERE USER = '<user name>';
```

MariaDB 서버와의 연결은 유지됩니다.

## 예시
<a name="mysql_rds_kill_query_id-examples"></a>

다음 예제는 쿼리 ID가 230040인 쿼리를 종료합니다.

```
call mysql.rds_kill_query_id(230040); 
```

# mysql.rds\$1execute\$1operation
<a name="mysql_rds_execute_operation"></a>

InnoDB 작업을 실행하여 버퍼 풀 상태와 임시 테이블스페이스를 관리합니다. 이 절차는 버퍼 풀 상태 덤핑 및 로드 또는 임시 테이블스페이스 자르기와 같은 InnoDB 작업을 동적으로 제어하는 데 사용할 수 있습니다.

## 구문
<a name="mysql_rds_execute_operation-syntax"></a>

```
CALL mysql.rds_execute_operation(operation);
```

## 파라미터
<a name="mysql_rds_execute_operation-parameters"></a>

 *작업*   
문자열. 실행할 InnoDB 작업입니다. 유효한 값은 다음과 같습니다.  
+ *innodb\$1buffer\$1pool\$1dump\$1now* - 버퍼 풀의 현재 상태를 덤프하는 작업입니다.
+ *innodb\$1buffer\$1pool\$1load\$1now* - 저장된 버퍼 풀 상태를 로드하는 작업입니다.
+ *innodb\$1buffer\$1pool\$1load\$1abort* - 버퍼 풀 로드 작업을 중단하는 작업입니다.
+ *innodb\$1truncate\$1temporary\$1tablespace\$1now* - 임시 테이블스페이스를 잘라내는 작업입니다.

## 사용 노트
<a name="mysql_rds_execute_operation-usage-notes"></a>

이 프로시저는 MariaDB 버전 11.8 이상을 실행하는 MariaDB DB 인스턴스에 대해서만 지원됩니다.

실행 중에는 이러한 관리 명령의 복제를 방지하기 위해 바이너리 로깅이 일시적으로 비활성화됩니다.

이 절차는 [https://mariadb.com/docs/server/security/securing-mariadb/securing-mariadb-encryption/data-in-transit-encryption/securing-connections-for-client-and-server#requiring-tls](https://mariadb.com/docs/server/security/securing-mariadb/securing-mariadb-encryption/data-in-transit-encryption/securing-connections-for-client-and-server#requiring-tls) 테이블의 모든 작업을 로깅하여 감사 추적을 유지합니다.

## 예시
<a name="mysql_rds_execute_operation-examples"></a>

다음 예제에서는 `mysql.rds_execute_operation`을 사용한 임시 테이블스페이스 축소를 보여 줍니다.

현재 임시 테이블스페이스 크기를 확인하려면 다음 쿼리를 실행합니다.

```
      
SELECT FILE_SIZE FROM information_schema.innodb_sys_tablespaces WHERE name LIKE 'innodb_temporary';
+------------+
| FILE_SIZE  |
+------------+
| 6723469312 |  -- 6.3 GB
+------------+
```

임시 테이블을 삭제해도 글로벌 테이블스페이스의 스토리지 사용량은 줄어들지 않습니다. 전역 테이블스페이스의 크기를 줄이려면 `mysql.rds_execute_operation` 명령을 실행하여 임시 테이블스페이스를 축소합니다.

```
 
CALL mysql.rds_execute_operation('innodb_truncate_temporary_tablespace_now');
Query OK, 2 rows affected (0.004 sec)
```

프로시저를 실행한 후 스페이스가 회수되었는지 확인합니다.

```
SELECT FILE_SIZE FROM information_schema.innodb_sys_tablespaces WHERE name LIKE 'innodb_temporary';
+-----------+
| FILE_SIZE |
+-----------+
|  12582912 |  -- 12 MB
+-----------+
```

**참고**  
 축소 작업은 임시 테이블스페이스 크기 및 현재 워크로드에 따라 시간이 걸릴 수 있습니다.

**중요**  
임시 테이블스페이스는 크기에 기여한 모든 임시 테이블을 더 이상 사용하지 않는 경우에만 축소됩니다. 인스턴스에 활성 임시 테이블스페이스가 없는 경우이 절차를 실행하는 것이 좋습니다.

# MariaDB DB 인스턴스의 현지 시간대
<a name="MariaDB.Concepts.LocalTimeZone"></a>

기본적으로 MariaDB DB 인스턴스의 시간대는 협정 세계시(UTC)입니다. 대신 DB 인스턴스의 시간대를 애플리케이션의 현지 시간대로 설정할 수 있습니다.

DB 인스턴스의 현지 시간대를 설정하려면 DB 인스턴스의 파라미터 그룹에서 `time_zone` 파라미터를 이 섹션의 뒤에 나오는 지원되는 값 중 하나로 설정합니다. 파라미터 그룹에 대한 `time_zone` 파라미터를 설정하면 해당 파라미터 그룹을 사용 중인 모든 DB 인스턴스와 읽기 전용 복제본이 새로운 현지 시간대를 사용하도록 변경됩니다. 파라미터 그룹에서 파라미터를 설정하는 방법에 대한 자세한 내용은 [Amazon RDS의 파라미터 그룹](USER_WorkingWithParamGroups.md) 단원을 참조하세요.

현지 시간대를 설정하면 데이터베이스에 대한 모든 새 연결에 변경 사항이 반영됩니다. 현지 시간대를 변경할 때 데이터베이스에 대해 열린 연결이 있는 경우 연결을 닫고 새 연결을 열어야 현지 시간대 업데이트가 표시됩니다.

DB 인스턴스와 하나 이상의 읽기 전용 복제본에 대해 서로 다른 현지 시간대를 설정할 수 있습니다. 이렇게 하려면 DB 인스턴스와 복제본에 대해 서로 다른 파라미터 그룹을 사용하고 각 파라미터 그룹에서 `time_zone` 파라미터를 다른 현지 시간대로 설정합니다.

AWS 리전 간 복제 중인 경우 소스 DB 인스턴스와 읽기 전용 복제본은 서로 다른 파라미터 그룹을 사용합니다. 파라미터 그룹은 AWS 리전마다 고유합니다. 각 인스턴스에 대해 동일한 현지 시간대를 사용하려면 인스턴스의 파라미터 그룹과 읽기 전용 복제본의 파라미터 그룹에서 `time_zone` 파라미터를 설정해야 합니다.

DB 스냅샷에서 DB 인스턴스를 복원할 경우 현지 시간대가 UTC로 설정됩니다. 복원이 완료된 후 시간대를 현지 시간대로 업데이트할 수 있습니다. DB 인스턴스를 특정 시점으로 복원할 경우 복원된 DB 인스턴스의 현지 시간대는 복원된 DB 인스턴스의 파라미터 그룹에서 설정한 시간대입니다.

IANA(Internet Assigned Numbers Authority)에서는 [https://www.iana.org/time-zones](https://www.iana.org/time-zones)에서 일 년에 여러 번 새로운 표준 시간대를 게시합니다. RDS에서 MariaDB의 새로운 마이너 유지 관리 릴리스를 릴리스할 때마다 릴리스 시점의 최신 표준 시간대 데이터가 함께 제공됩니다. 최신 RDS for MariaDB 버전을 사용하면 RDS의 최신 표준 시간대 데이터를 갖게 됩니다. DB 인스턴스에 최신 표준 시간대 데이터가 있는지 확인하려면 상위 DB 엔진 버전으로 업그레이드하는 것이 좋습니다. 또는 MariaDB DB 인스턴스의 표준 시간대 테이블을 수동으로 수정할 수 있습니다. 이렇게 하려면 SQL 명령을 사용하거나 SQL 클라이언트에서 [mysql\$1tzinfo\$1to\$1sql 도구](https://mariadb.com/kb/en/mysql_tzinfo_to_sql/)를 실행할 수 있습니다. 표준 시간대 데이터를 수동으로 업데이트한 후 변경 사항을 적용하려면 DB 인스턴스를 재부팅합니다. RDS는 실행 중인 DB 인스턴스의 표준 시간대 데이터를 수정하거나 재설정하지 않습니다. 새 표준 시간대 데이터는 데이터베이스 엔진 버전 업그레이드를 수행할 때만 설치됩니다.

현지 시간대를 다음 값 중 하나로 설정할 수 있습니다.


| 영역 | 시간대 | 
| --- | --- | 
|  아프리카  |  Africa/Cairo, Africa/Casablanca, Africa/Harare, Africa/Monrovia, Africa/Nairobi, Africa/Tripoli, Africa/Windhoek  | 
|  아메리카  |  America/Araguaina, America/Asuncion, America/Bogota, America/Buenos\$1Aires, America/Caracas, America/Chihuahua, America/Cuiaba, America/Denver, America/Fortaleza, America/Guatemala, America/Halifax, America/Manaus, America/Matamoros, America/Monterrey, America/Montevideo, America/Phoenix, America/Santiago, America/Tijuana  | 
|  아시아  |  Asia/Amman, Asia/Ashgabat, Asia/Baghdad, Asia/Baku, Asia/Bangkok, Asia/Beirut, Asia/Calcutta, Asia/Damascus, Asia/Dhaka, Asia/Irkutsk, Asia/Jerusalem, Asia/Kabul, Asia/Karachi, Asia/Kathmandu, Asia/Krasnoyarsk, Asia/Magadan, Asia/Muscat, Asia/Novosibirsk, Asia/Riyadh, Asia/Seoul, Asia/Shanghai, Asia/Singapore, Asia/Taipei, Asia/Tehran, Asia/Tokyo, Asia/Ulaanbaatar, Asia/Vladivostok, Asia/Yakutsk, Asia/Yerevan  | 
|  대서양  |  Atlantic/Azores  | 
|  호주  |  Australia/Adelaide, Australia/Brisbane, Australia/Darwin, Australia/Hobart, Australia/Perth, Australia/Sydney  | 
|  브라질  |  Brazil/DeNoronha, Brazil/East  | 
|  캐나다  |  Canada/Newfoundland, Canada/Saskatchewan, Canada/Yukon  | 
|  유럽  |  Europe/Amsterdam, Europe/Athens, Europe/Dublin, Europe/Helsinki, Europe/Istanbul, Europe/Kaliningrad Europe/Moscow, Europe/Paris, Europe/Prague, Europe/Sarajevo  | 
|  태평양  |  Pacific/Auckland, Pacific/Fiji, Pacific/Guam, Pacific/Honolulu, Pacific/Samoa  | 
|  US  |  US/Alaska, US/Central, US/East-Indiana, US/Eastern, US/Pacific  | 
|  UTC  |  UTC  | 

# RDS for MariaDB에 대해 알려진 문제 및 제한 사항
<a name="CHAP_MariaDB.Limitations"></a>

다음 항목은 RDS for MariaDB를 사용할 때 알려진 문제 및 제한 사항입니다.

**참고**  
단, 이 목록이 전부는 아닙니다.

**Topics**
+ [Amazon RDS의 MariaDB 파일 크기 제한](#RDS_Limits.FileSize.MariaDB)
+ [InnoDB 예약어](#MariaDB.Concepts.InnodbDatabaseName)
+ [사용자 지정 포트](#MariaDB.Concepts.CustomPorts)
+ [성능 개선 도우미](#MariaDB.Concepts.PerformanceInsights)

## Amazon RDS의 MariaDB 파일 크기 제한
<a name="RDS_Limits.FileSize.MariaDB"></a>

MariaDB DB 인스턴스의 경우 InnoDB 테이블당 파일 테이블스페이스를 사용할 때 테이블의 최대 크기는 16TB입니다. 또한 이 제한은 시스템 테이블스페이스를 최대 16TB의 크기로 제한합니다. MariaDB DB 인스턴스에서는 테이블이 각각 자체 테이블스페이스에 들어 있는 InnoDB 테이블당 파일 테이블스페이스가 기본적으로 설정됩니다. 이 한도는 MariaDB DB 인스턴스의 최대 스토리지 한도와 관련이 없습니다. 스토리지 한도에 대한 자세한 내용은 [Amazon RDS DB 인스턴스 스토리지](CHAP_Storage.md) 섹션을 참조하세요.

애플리케이션에 따라 InnoDB 테이블당 파일 테이블스페이스 사용에 대한 장점과 단점은 서로 다릅니다. 애플리케이션에 가장 적합한 접근 방식을 확인하려면 MySQL 설명서의 [테이블당 파일 테이블스페이스](https://dev.mysql.com/doc/refman/5.7/en/innodb-file-per-table-tablespaces.html)를 참조하세요.

테이블을 최대 파일 크기로 늘리도록 허용하는 것은 권장하지 않습니다. 일반적으로 모범 사례는 성능 및 복구 시간을 향상할 수 있도록 데이터를 더 작은 테이블로 분할하는 것입니다.

대형 테이블을 여러 개의 작은 테이블로 분할하는 데 사용할 수 있는 한 가지 옵션으로는 파티셔닝이 있습니다. *파티셔닝*을 수행하면 사용자가 지정하는 규칙에 따라 라지 테이블의 일부가 개별 파일로 배포됩니다. 예를 들어, 트랜잭션을 날짜별로 저장하는 경우 파티셔닝을 사용하여 이전 트랜잭션을 개별 파일로 배포하는 파티셔닝 규칙을 생성할 수 있습니다. 이렇게 하면 애플리케이션에서 즉시 사용할 필요가 없는 이전 트랜잭션 데이터를 주기적으로 보관할 수 있습니다. 자세한 내용은 MySQL 설명서의 [파티셔닝](https://dev.mysql.com/doc/refman/5.7/en/partitioning.html)을 참조하세요.

**모든 InnoDB 테이블스페이스의 크기를 확인하려면**
+ 다음 SQL 명령을 사용하여 크기가 너무 커서 파티셔닝을 수행해야 하는 테이블이 있는지 확인합니다.
**참고**  
MariaDB 10.6 이상의 경우 이 쿼리는 InnoDB 시스템 테이블스페이스의 크기도 반환합니다.  
10.6 이전의 MariaDB 버전에서는 시스템 테이블을 쿼리하여 InnoDB 시스템 테이블스페이스의 크기를 확인할 수 없습니다. 이후 버전으로 업그레이드하는 것이 좋습니다.

  ```
  1. SELECT SPACE,NAME,ROUND((ALLOCATED_SIZE/1024/1024/1024), 2) 
  2. as "Tablespace Size (GB)"  
  3. FROM information_schema.INNODB_SYS_TABLESPACES ORDER BY 3 DESC;
  ```

**비 InnoDB 사용자 테이블의 크기를 확인하려면**
+ 다음 SQL 명령을 사용하여 비 InnoDB 사용자 테이블이 너무 큰지 확인합니다.

  ```
  SELECT TABLE_SCHEMA, TABLE_NAME, round(((DATA_LENGTH + INDEX_LENGTH+DATA_FREE)
  / 1024 / 1024/ 1024), 2) As "Approximate size (GB)" FROM information_schema.TABLES
  WHERE TABLE_SCHEMA NOT IN ('mysql', 'information_schema', 'performance_schema')
  and ENGINE<>'InnoDB';
  ```

**InnoDB 테이블당 파일 테이블스페이스를 활성화하는 방법**
+ DB 인스턴스의 파라미터 그룹에서 `innodb_file_per_table` 파라미터를 `1`로 설정합니다.

**InnoDB 테이블당 파일 테이블스페이스를 비활성화하는 방법**
+ DB 인스턴스의 파라미터 그룹에서 `innodb_file_per_table` 파라미터를 `0`로 설정합니다.

파라미터 그룹 업데이트에 대한 자세한 내용은 [Amazon RDS의 파라미터 그룹](USER_WorkingWithParamGroups.md)을(를) 참조하세요.

InnoDB 테이블당 파일 테이블스페이스를 활성화하거나 비활성화하면 `ALTER TABLE` 명령을 실행할 수 있습니다. 이 명령을 사용하여 전역 테이블스페이스에서 자체 테이블스페이스로 테이블을 이동할 수 있습니다. 또는 자체 테이블스페이스에서 전역 테이블스페이스로 테이블을 이동할 수 있습니다. 다음은 그 한 예입니다.

```
1. ALTER TABLE table_name ENGINE=InnoDB, ALGORITHM=COPY; 
```

## InnoDB 예약어
<a name="MariaDB.Concepts.InnodbDatabaseName"></a>

`InnoDB`는 RDS for MariaDB의 예약어입니다. MariaDB 데이터베이스에는 이 이름을 사용할 수 없습니다.

## 사용자 지정 포트
<a name="MariaDB.Concepts.CustomPorts"></a>

Amazon RDS는 MariaDB 엔진의 사용자 지정 포트 33060으로의 연결을 차단합니다. MariaDB 엔진에 사용할 다른 포트를 선택합니다.

## 성능 개선 도우미
<a name="MariaDB.Concepts.PerformanceInsights"></a>

MariaDB 커뮤니티에서 더 이상 InnoDB 카운터를 지원하지 않기 때문에 RDS for MariaDB 버전 10.11용 성능 개선 도우미에는 InnoDB 카운터가 표시되지 않습니다.