

# Aurora MySQL 버전 2와 Aurora MySQL 버전 3의 비교
<a name="AuroraMySQL.Compare-v2-v3"></a>

Aurora MySQL 버전 2 클러스터를 버전 3으로 업그레이드하는 경우 주의해야 할 변경 사항에 대해 알아보려면 다음을 참조하세요.

**Topics**
+ [원자성 데이터 정의 언어(DDL) 지원](#AuroraMySQL.Compare-v2-v3-atomic-ddl)
+ [Aurora MySQL 버전 2와 3의 기능 차이점](#AuroraMySQL.Compare-v2-v3-features)
+ [인스턴스 클래스 지원](#AuroraMySQL.mysql80-instance-classes)
+ [Aurora MySQL 버전 3에 대한 파라미터 변경 사항](#AuroraMySQL.mysql80-parameter-changes)
+ [상태 변수](#AuroraMySQL.mysql80-status-vars)
+ [Aurora MySQL 버전 3에 대한 포괄적 언어 변경](#AuroraMySQL.8.0-inclusive-language)
+ [AUTO\_INCREMENT 값](#AuroraMySQL.mysql80-autoincrement)
+ [이진 로그 복제](#AuroraMySQL.mysql80-binlog)

## 원자성 데이터 정의 언어(DDL) 지원
<a name="AuroraMySQL.Compare-v2-v3-atomic-ddl"></a>

MySQL 5.7에서 8.0으로의 가장 큰 변경 사항 중 하나는 [원자성 데이터 딕셔너리](https://dev.mysql.com/doc/refman/8.0/en/data-dictionary-file-removal.html)의 도입입니다. MySQL 8.0 이전에 MySQL 데이터 딕셔너리는 파일 기반 접근 방식을 사용하여 테이블 정의(.frm), 트리거(.trg) 및 함수와 같은 메타데이터를 스토리지 엔진의 메타데이터(예: InnoDB)와 별도로 저장했습니다. 이로 인해 DDL 작업 중에 예기치 않은 일이 발생하여 파일 기반 및 스토리지 엔진 메타데이터가 동기화되지 않을 경우 테이블이 ‘[분리](https://dev.mysql.com/doc/refman/5.7/en/innodb-troubleshooting-datadict.html)’될 위험을 비롯한 몇 가지 문제가 발생했습니다.

이를 해결하기 위해 MySQL 8.0은 모든 메타데이터를 `mysql` 스키마의 내부 InnoDB 테이블 세트에 저장하는 원자성 데이터 딕셔너리를 도입했습니다. 이 새로운 아키텍처는 트랜잭션 [ACID](https://en.wikipedia.org/wiki/ACID) 규정을 준수하는 방식으로 데이터베이스 메타데이터를 관리하여 이전 파일 기반 접근 방식의 '원자성 DDL' 문제를 해결합니다. 원자성 데이터 딕셔너리에 대한 자세한 내용은 MySQL 참조 설명서**의 [파일 기반 메타데이터 스토리지 제거](https://dev.mysql.com/doc/refman/8.0/en/data-dictionary-file-removal.html) 및 [원자성 데이터 정의 문 지원](https://dev.mysql.com/doc/refman/8.0/en/atomic-ddl.html)을 참조하세요.

이러한 아키텍처 변경으로 인해 Aurora MySQL 버전 2에서 버전 3으로 업그레이드할 때 다음을 고려해야 합니다.
+ 버전 3으로 업그레이드하는 동안 버전 2의 파일 기반 메타데이터를 새 데이터 딕셔너리 테이블로 마이그레이션해야 합니다. 마이그레이션되는 데이터베이스 객체 수에 따라 시간이 다소 걸릴 수 있습니다.
+ 또한 이 변경 사항으로 인해 MySQL 5.7에서 8.0으로 업그레이드하기 전에 해결해야 할 몇 가지 새로운 비호환성도 발생했습니다. 예를 들어, 8.0에는 기존 데이터베이스 객체 이름과 충돌할 수 있는 일부 새로운 예약 키워드가 있습니다.

엔진을 업그레이드하기 전에 이러한 비호환성을 식별하는 데 도움이 되도록 Aurora MySQL은 일련의 업그레이드 호환성 검사(사전 확인)를 실행하여 데이터 딕셔너리 업그레이드를 수행하기 전에 데이터베이스 딕셔너리에 비호환 객체가 있는지 확인합니다. 사전 확인에 대한 자세한 설명은 [Aurora MySQL에 대한 메이저 버전 업그레이드 사전 확인](AuroraMySQL.upgrade-prechecks.md) 섹션을 참조하세요.

## Aurora MySQL 버전 2와 3의 기능 차이점
<a name="AuroraMySQL.Compare-v2-v3-features"></a>

다음 Amazon Aurora MySQL 기능은 Aurora MySQL for MySQL 5.7에서 지원되지만, 이러한 기능은 현재 Aurora MySQL for MySQL 8.0에서 지원되지 않습니다.
+ Aurora Serverless v1 클러스터를 위한 Aurora MySQL 버전 3을 사용할 수 없습니다. Aurora MySQL 버전 3은 Aurora Serverless v2와 호환됩니다.
+ 랩 모드는 Aurora MySQL 버전 3에는 적용되지 않습니다. Aurora MySQL 버전 3에는 랩 모드 기능이 없습니다. 인스턴트 DDL은 이전에 랩 모드에서 사용 가능했던 빠른 온라인 DDL 기능을 대체합니다. 예시는 [인스턴트 DDL(Aurora MySQL 버전 3)](AuroraMySQL.Managing.FastDDL.md#AuroraMySQL.mysql80-instant-ddl)을 확인하세요.
+ 쿼리 캐시는 커뮤니티 MySQL 8.0 및 Aurora MySQL 버전 3에서도 제거됩니다.
+ Aurora MySQL 버전 3은 커뮤니티 MySQL 해시 조인 기능과 호환됩니다. Aurora MySQL 버전 2에서 해시 조인의 Aurora별 구현은 사용되지 않습니다. Aurora 병렬 쿼리에서 해시 조인 사용에 대한 자세한 내용은 [병렬 쿼리 클러스터에 대한 해시 조인 설정](aurora-mysql-parallel-query-enabling.md#aurora-mysql-parallel-query-enabling-hash-join) 및 [Aurora MySQL 힌트](AuroraMySQL.Reference.Hints.md) 섹션을 참조하세요. 해시 조인에 대한 일반적인 사용 정보는 *MySQL 참조 설명서*의 [해시 조인 최적화](https://dev.mysql.com/doc/refman/8.0/en/hash-joins.html)를 참조하세요.
+ Aurora MySQL 버전 2에서 더 이상 사용되지 않는 `mysql.lambda_async` 저장 프로시저는 버전 3에서 제거됩니다. 버전 3의 경우 대신 비동기 함수 `lambda_async`을 사용합니다.
+ Aurora MySQL 버전 3의 기본 문자 집합은 `utf8mb4`입니다. Aurora MySQL 버전 2의 기본 문자 집합은 `latin1`이었습니다. 이 문자 집합에 대한 자세한 내용은 *MySQL 참조 설명서*의 [utf8mb4 문자 집합(4바이트 UTF-8 유니코드 인코딩)](https://dev.mysql.com/doc/refman/8.0/en/charset-unicode-utf8mb4.html)을 참조하세요.

일부 Aurora MySQL 기능은 AWS 리전 및 DB 엔진 버전의 특정 조합에서 사용할 수 있습니다. 세부 정보는 [Amazon Aurora에서 AWS 리전 및 Aurora DB 엔진별 지원 기능](Concepts.AuroraFeaturesRegionsDBEngines.grids.md)을 참조하세요.

## 인스턴스 클래스 지원
<a name="AuroraMySQL.mysql80-instance-classes"></a>

Aurora MySQL 버전 3은 Aurora MySQL 버전 2와 다른 인스턴스 클래스 집합을 지원합니다.
+ 대형 인스턴스의 경우 `db.r5`, `db.r6g` 및 `db.x2g`와 같은 최신 인스턴스 클래스를 사용할 수 있습니다.
+ 소형 인스턴스의 경우 `db.t3` 및 `db.t4g`와 같은 최신 인스턴스 클래스를 사용할 수 있습니다.
**참고**  
T DB 인스턴스 클래스는 개발 및 테스트 서버 또는 기타 비프로덕션 서버에만 사용하는 것이 좋습니다. T 인스턴스 클래스에 대한 자세한 내용은 [개발 및 테스트에 T 인스턴스 클래스 사용](AuroraMySQL.BestPractices.Performance.md#AuroraMySQL.BestPractices.T2Medium) 섹션을 참조하세요.

Aurora MySQL 버전 2의 다음 인스턴스 클래스는 Aurora MySQL 버전 3에서 사용할 수 없습니다.
+  `db.r4` 
+  `db.r3` 
+  `db.t3.small` 
+  `db.t2` 

 Aurora MySQL DB 인스턴스를 생성하는 CLI 문을 관리 스크립트에서 확인하세요. Aurora MySQL 버전 3에서 사용할 수 없는 인스턴스 클래스 이름을 하드코딩합니다. 필요한 경우 인스턴스 클래스 이름을 Aurora MySQL 버전 3에서 지원하는 이름으로 수정합니다.

**작은 정보**  
 Aurora MySQL 버전 및 AWS 리전의 특정 조합에 사용할 수 있는 인스턴스 클래스를 확인하려면 `describe-orderable-db-instance-options` AWS CLI 명령을 사용하세요.

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

## Aurora MySQL 버전 3에 대한 파라미터 변경 사항
<a name="AuroraMySQL.mysql80-parameter-changes"></a>

Aurora MySQL 버전 3에는 새로운 클러스터 수준 및 인스턴스 수준 구성 파라미터가 포함되어 있습니다. Aurora MySQL 버전 3은 또한 Aurora MySQL 버전 2에 있던 일부 파라미터를 제거합니다. 일부 파라미터 이름은 포괄적 언어에 대한 이니셔티브의 결과로 변경됩니다. 이전 버전과의 호환성을 위해 이전 이름이나 새 이름을 사용하여 파라미터 값을 검색할 수 있습니다. 그러나 새 이름을 사용하여 사용자 지정 파라미터 그룹에서 파라미터 값을 지정해야 합니다.

Aurora MySQL 버전 3에서는 `lower_case_table_names` 파라미터가 클러스터가 생성될 때 영구적으로 설정됩니다. 이 옵션에 기본값이 아닌 값을 사용하는 경우 업그레이드하기 전에 Aurora MySQL 버전 3 사용자 지정 파라미터 그룹을 설정합니다. 그런 다음, 클러스터 생성 또는 스냅샷 복원 작업 중에 파라미터 그룹을 지정합니다.

**참고**  
Aurora MySQL 기반 Aurora Global Database 사용 시 `lower_case_table_names` 파라미터가 활성화 되어 있는 경우 Aurora MySQL 버전 2에서 버전 3으로 현재 위치 업그레이드를 수행할 수 없습니다. 대신 스냅샷 복원 방법을 사용하세요.

Aurora MySQL 버전 3에서는 `CONNECTION_ADMIN` 권한이 있는 사용자에게 `init_connect` 및 `read_only` 파라미터가 적용되지 않습니다. Aurora 마스터 사용자도 마찬가지입니다. 자세한 내용은 [역할 기반 권한 모델](AuroraMySQL.Compare-80-v3.md#AuroraMySQL.privilege-model) 단원을 참조하십시오.

Aurora MySQL 클러스터 파라미터 전체 목록은 [클러스터 수준 파라미터](AuroraMySQL.Reference.ParameterGroups.md#AuroraMySQL.Reference.Parameters.Cluster) 섹션을 참조하세요. 이 테이블에서는 Aurora MySQL 버전 2 및 3의 모든 파라미터를 다룹니다. 이 테이블에는 Aurora MySQL 버전 3에서 새로운 파라미터 또는 Aurora MySQL 버전 3에서 제거된 파라미터를 보여주는 메모가 포함되어 있습니다.

Aurora MySQL 인스턴스 파라미터 전체 목록은 [인스턴스 수준 파라미터](AuroraMySQL.Reference.ParameterGroups.md#AuroraMySQL.Reference.Parameters.Instance) 섹션을 참조하세요. 이 테이블에서는 Aurora MySQL 버전 2 및 3의 모든 파라미터를 다룹니다. 이 테이블에는 Aurora MySQL 버전 3에서 새로운 파라미터 또는 Aurora MySQL 버전 3에서 제거된 파라미터를 보여주는 메모가 포함되어 있습니다. 또한 이전 버전에서는 수정할 수 있었지만 Aurora MySQL 버전 3에서는 수정할 수 없는 파라미터를 보여주는 메모도 포함되어 있습니다.

변경된 파라미터 이름에 대한 자세한 내용은 [Aurora MySQL 버전 3에 대한 포괄적 언어 변경](#AuroraMySQL.8.0-inclusive-language) 섹션을 참조하세요.

## 상태 변수
<a name="AuroraMySQL.mysql80-status-vars"></a>

Aurora MySQL에 적용되지 않는 상태 변수에 대한 자세한 내용은 [Aurora MySQL에 적용되지 않는 MySQL 상태 변수](AuroraMySQL.Reference.GlobalStatusVars.md#AuroraMySQL.Reference.StatusVars.Inapplicable) 섹션을 참조하세요.

## Aurora MySQL 버전 3에 대한 포괄적 언어 변경
<a name="AuroraMySQL.8.0-inclusive-language"></a>

 Aurora MySQL 버전 3은 MySQL 커뮤니티 에디션의 버전 8.0.23과 호환됩니다. Aurora MySQL 버전 3에는 포괄적 언어에 대한 키워드 및 시스템 스키마와 관련된 MySQL 8.0.26의 변경도 포함되어 있습니다. 예를 들어 `SHOW REPLICA STATUS` 명령이 이제 `SHOW SLAVE STATUS` 대신 기본 설정됩니다.

 다음 Amazon CloudWatch 지표는 Aurora MySQL 버전 3에서 새 이름을 갖습니다.

 Aurora MySQL 버전 3에서는 새 지표 이름만 사용할 수 있습니다. Aurora MySQL 버전 3으로 업그레이드할 때 지표 이름에 의존하는 경보 또는 기타 자동화를 업데이트해야 합니다.


|  이전 이름  |  새 이름  | 
| --- | --- | 
|  ForwardingMasterDMLLatency  |  ForwardingWriterDMLLatency  | 
|  ForwardingMasterOpenSessions  |  ForwardingWriterOpenSessions  | 
|  AuroraDMLRejectedMasterFull  |  AuroraDMLRejectedWriterFull  | 
|  ForwardingMasterDMLThroughput  |  ForwardingWriterDMLThroughput  | 

 다음 상태 변수는 Aurora MySQL 버전 3에서 새 이름을 갖습니다.

 호환성을 위해 초기 Aurora MySQL 버전 3 릴리스에서 두 이름 중 하나를 사용할 수 있습니다. 향후 릴리스에서 기존 상태 변수 이름이 제거되게 됩니다.


|  제거할 이름  |  새 이름 또는 기본 이름  | 
| --- | --- | 
|  Aurora\_fwd\_master\_dml\_stmt\_duration  |  Aurora\_fwd\_writer\_dml\_stmt\_duration  | 
|  Aurora\_fwd\_master\_dml\_stmt\_count  |  Aurora\_fwd\_writer\_dml\_stmt\_count  | 
|  Aurora\_fwd\_master\_select\_stmt\_duration  |  Aurora\_fwd\_writer\_select\_stmt\_duration  | 
|  Aurora\_fwd\_master\_select\_stmt\_count  |  Aurora\_fwd\_writer\_select\_stmt\_count  | 
|  Aurora\_fwd\_master\_errors\_session\_timeout  |  Aurora\_fwd\_writer\_errors\_session\_timeout  | 
|  Aurora\_fwd\_master\_open\_sessions  |  Aurora\_fwd\_writer\_open\_sessions  | 
|  Aurora\_fwd\_master\_errors\_session\_limit  |  Aurora\_fwd\_writer\_errors\_session\_limit  | 
|  Aurora\_fwd\_master\_errors\_rpc\_timeout  |  Aurora\_fwd\_writer\_errors\_rpc\_timeout  | 

다음 구성 파라미터는 Aurora MySQL 버전 3에서 새 이름을 갖습니다.

호환성을 위해 초기 Aurora MySQL 버전 3 릴리스에서 두 이름 중 하나를 사용하여 `mysql`에서 파라미터 값을 확인할 수 있습니다. 사용자 정의 파라미터 그룹의 값을 수정할 때는 새 이름만 사용 수 있습니다. 향후 릴리스에서 기존 파라미터 이름이 제거되게 됩니다.


|  제거할 이름  |  새 이름 또는 기본 이름  | 
| --- | --- | 
|  aurora\_fwd\_master\_idle\_timeout  |  aurora\_fwd\_writer\_idle\_timeout  | 
|  aurora\_fwd\_master\_max\_connections\_pct  |  aurora\_fwd\_writer\_max\_connections\_pct  | 
|  master\_verify\_checksum  |  source\_verify\_checksum  | 
|  sync\_master\_info  |  sync\_source\_info  | 
|  init\_slave  |  init\_replica  | 
|  rpl\_stop\_slave\_timeout  |  rpl\_stop\_replica\_timeout  | 
|  log\_slow\_slave\_statements  |  log\_slow\_replica\_statements  | 
|  slave\_max\_allowed\_packet  |  replica\_max\_allowed\_packet  | 
|  slave\_compressed\_protocol  |  replica\_compressed\_protocol  | 
|  slave\_exec\_mode  |  replica\_exec\_mode  | 
|  slave\_type\_conversions  |  replica\_type\_conversions  | 
|  slave\_sql\_verify\_checksum  |  replica\_sql\_verify\_checksum  | 
|  slave\_parallel\_type  |  replica\_parallel\_type  | 
|  slave\_preserve\_commit\_order  |  replica\_preserve\_commit\_order  | 
|  log\_slave\_updates  |  log\_replica\_updates  | 
|  slave\_allow\_batching  |  replica\_allow\_batching  | 
|  slave\_load\_tmpdir  |  replica\_load\_tmpdir  | 
|  slave\_net\_timeout  |  replica\_net\_timeout  | 
|  sql\_slave\_skip\_counter  |  sql\_replica\_skip\_counter  | 
|  slave\_skip\_errors  |  replica\_skip\_errors  | 
|  slave\_checkpoint\_period  |  replica\_checkpoint\_period  | 
|  slave\_checkpoint\_group  |  replica\_checkpoint\_group  | 
|  slave\_transaction\_retries  |  replica\_transaction\_retries  | 
|  slave\_parallel\_workers  |  replica\_parallel\_workers  | 
|  slave\_pending\_jobs\_size\_max  |  replica\_pending\_jobs\_size\_max  | 
|  pseudo\_slave\_mode  |  pseudo\_replica\_mode  | 

 다음 저장 프로시저는 Aurora MySQL 버전 3에서 새 이름을 갖습니다.

 호환성을 위해 초기 Aurora MySQL 버전 3 릴리스에서 두 이름 중 하나를 사용할 수 있습니다. 향후 릴리스에서 기존 프로시저 이름이 제거되게 됩니다.


|  제거할 이름  |  새 이름 또는 기본 이름  | 
| --- | --- | 
|  mysql.rds\_set\_master\_auto\_position  |  mysql.rds\_set\_source\_auto\_position  | 
|  mysql.rds\_set\_external\_master  |  mysql.rds\_set\_external\_source  | 
|  mysql.rds\_set\_external\_master\_with\_auto\_position  |  mysql.rds\_set\_external\_source\_with\_auto\_position  | 
|  mysql.rds\_reset\_external\_master  |  mysql.rds\_reset\_external\_source  | 
|  mysql.rds\_next\_master\_log  |  mysql.rds\_next\_source\_log  | 

## AUTO\_INCREMENT 값
<a name="AuroraMySQL.mysql80-autoincrement"></a>

 Aurora MySQL 버전 3에서 Aurora에서는 각 DB 인스턴스를 다시 시작할 때 각 테이블의 `AUTO_INCREMENT` 값을 보존합니다. Aurora MySQL 버전 2에서는 다시 시작한 후에는 `AUTO_INCREMENT` 값이 보존되지 않았습니다.

 스냅샷에서 복원하고, 특정 시점으로 복구를 수행하고, 클러스터를 복제하여 새 클러스터를 설정하는 경우 `AUTO_INCREMENT` 값이 보존되지 않습니다. 이런 경우 `AUTO_INCREMENT` 값은 스냅샷이 생성된 시점의 테이블에서 가장 큰 열 값을 기준으로 한 값으로 초기화됩니다. 이 동작은 이런 작업 중에 `AUTO_INCREMENT` 값이 보존되는 RDS for MySQL 8.0의 동작과 다릅니다.

## 이진 로그 복제
<a name="AuroraMySQL.mysql80-binlog"></a>

 MySQL 8.0 커뮤니티 에디션에서는 기본적으로 이진 로그 복제를 설정해 둡니다. Aurora MySQL 버전 3에서는 기본적으로 이진 로그 복제를 해제해 둡니다.

**작은 정보**  
 Aurora 기본 제공 복제 기능으로 고가용성 요구 사항이 충족되면 이진 로그 복제를 해제해 둘 수 있습니다. 이렇게 하면 이진 로그 복제의 성능 오버헤드를 방지할 수 있습니다. 또한 이진 로그 복제를 관리하는 데 필요한 관련 모니터링 및 문제 해결을 방지할 수 있습니다.

 Aurora는 MySQL 5.7 호환 소스에서 Aurora MySQL 버전 3으로 이진 로그 복제를 지원합니다. 소스 시스템은 Aurora MySQL DB 클러스터, RDS for MySQL DB 인스턴스 또는 온프레미스 MySQL 인스턴스일 수 있습니다.

 커뮤니티 MySQL과 마찬가지로 Aurora MySQL은 특정 버전을 실행하는 소스에서 동일한 주 버전 또는 하나의 주 버전 이상을 실행하는 대상으로 복제를 지원합니다. 예를 들어 MySQL 5.6 호환 시스템에서 Aurora MySQL 버전 3으로 복제는 지원되지 않습니다. Aurora MySQL 버전 3에서 MySQL 5.7 호환 또는 MySQL 5.6 호환 시스템으로 복제는 지원되지 않습니다. 이진 로그 복제 사용에 대한 자세한 내용은 [Aurora과 MySQL 간의 복제 또는 Aurora와 다른 Aurora DB 클러스터(이진 로그 복제본) 간의 복제](AuroraMySQL.Replication.MySQL.md) 섹션을 참조하세요.

 Aurora MySQL 버전 3에는 필터링된 복제와 같은 커뮤니티 MySQL 8.0에서 이진 로그 복제에 대한 개선이 포함됩니다. 커뮤니티 MySQL 8.0 개선 사항에 대한 자세한 내용은 *MySQL 참조 설명서*의 [서버가 복제 필터링 규칙을 평가하는 방법](https://dev.mysql.com/doc/refman/8.0/en/replication-rules.html)을 참조하세요.

### 이진 로그 복제에 대한 트랜잭션 압축
<a name="AuroraMySQL.binlog-transaction-compression"></a>

 이진 로그 압축에 대한 사용 정보는 MySQL 참조 설명서의 [이진 로그 트랜잭션 압축](https://dev.mysql.com/doc/refman/8.0/en/binary-log-transaction-compression.html)을 참조하세요.

 Aurora MySQL 버전 3의 이진 로그 압축에는 다음 제한 사항이 적용됩니다.
+  이진 로그 데이터가 허용되는 최대 패킷 크기보다 큰 트랜잭션은 압축되지 않습니다. 이는 Aurora MySQL 이진 로그 압축 설정이 켜져 있는지와 관계없이 해당됩니다. 이러한 트랜잭션은 압축되지 않고 복제됩니다.
+  아직 MySQL 8.0을 지원하지 않는 변경 데이터 캡처(CDC)의 커넥터를 사용하는 경우 이 기능을 사용할 수 없습니다. 이진 로그 압축을 사용하여 타사 커넥터를 철저히 테스트하는 것이 좋습니다. 또한 CDC에 binlog 복제를 사용하는 시스템에서 binlog 압축을 켜기 전에 테스트하는 것이 좋습니다.