Amazon RDS는 MySQL 데이터베이스 엔진의 다음과 같은 메이저 버전 업그레이드를 지원합니다.
-
MySQL 5.7에서 MySQL 8.0으로
-
MySQL 8.0에서 MySQL 8.4로
참고
최신 세대 및 현재 세대의 DB 인스턴스 클래스로만 MySQL 버전 5.7, 8.0, 8.4 DB 인스턴스를 만들 수 있습니다.
경우에 따라, 이전 세대의 DB 인스턴스 클래스에서 실행되는 DB 인스턴스를 더 높은 버전의 MySQL 엔진 버전을 사용하는 DB 인스턴스로 업그레이드하고 싶을 수 있습니다. 이러한 경우 먼저 DB 인스턴스를 수정하여 최신 세대 또는 현재 세대 DB 인스턴스 클래스를 사용합니다. 이렇게 한 다음 DB 인스턴스를 수정하여 더 높은 MySQL 데이터베이스 엔진 버전을 사용하도록 할 수 있습니다. Amazon RDS DB 인스턴스 클래스에 대한 자세한 내용은 DB 인스턴스 클래스 단원을 참조하십시오.
MySQL 메이저 버전 업그레이드 개요
메이저 버전 업그레이드에는 기존 애플리케이션과 호환되지 않는 데이터베이스 변경 사항이 포함될 수 있습니다. 결과적으로 Amazon RDS에서는 메이저 버전 업그레이드가 자동으로 적용되지 않으므로 DB 인스턴스를 수동으로 변경해야 합니다. 모든 업그레이드는 프로덕션 환경의 인스턴스에 적용하기 전에 반드시 철저하게 테스트하는 것이 좋습니다.
메이저 버전 업그레이드를 수행하려면 먼저 사용 가능한 OS 업데이트를 수행합니다. OS 업데이트가 완료된 후 각 메이저 버전으로 업그레이드합니다. 예를 들어, 5.7을 8.0로 업그레이드한 후 8.0을 8.4로 업그레이드합니다. RDS for MySQL 다중 AZ DB 클러스터 업그레이드에 대한 자세한 내용은 Amazon RDS에서 다중 AZ DB 클러스터의 엔진 버전 업그레이드 섹션을 참조하세요. 2014년 4월 24일 이전에 생성한 MySQL DB 인스턴스에는 업데이트가 적용될 때까지 사용 가능한 OS 업데이트가 표시됩니다. OS 업데이트에 대한 자세한 내용은 DB 인스턴스에 업데이트 적용 단원을 참조하십시오.
MySQL의 메이저 버전 업그레이드 중에는 필요하다면 Amazon RDS가 MySQL 바이너리 mysql_upgrade
를 실행하여 테이블을 업그레이드합니다. 또한 Amazon RDS는 메이저 버전 업그레이드 도중 slow_log
및 general_log
테이블을 비웁니다. 로그 정보를 보존하려면 메이저 버전 업그레이드에 앞서 로그 내용을 저장하십시오.
MySQL 메이저 버전 업그레이드는 일반적으로 약 10분 정도 걸립니다. DB 인스턴스 클래스 크기 때문에 또는 인스턴스가 Amazon RDS의 모범 사례의 특정 작업 지침에 따르지 않는 탓에 일부 업그레이드는 시간이 더 걸릴 수도 있습니다. Amazon RDS 콘솔에서 DB 인스턴스를 업그레이드하는 경우, DB 인스턴스 상태를 보고 업그레이드 완료 시간을 알 수 있습니다. AWS Command Line Interface(AWS CLI)를 사용하여 업그레이드하는 경우, describe-db-instances 명령을 사용하여 Status
값을 확인합니다.
업그레이드 사전 점검
Amazon RDS는 비호환성을 확인하기 위해 업그레이드하기 전에 사전 점검을 실행합니다. 이러한 비호환성은 업그레이드한 후의 MySQL 버전에 따라 다릅니다.
사전 점검에는 MySQL에 포함된 내용과 Amazon RDS 팀에서 생성한 내용이 포함됩니다. MySQL에서 제공하는 사전 점검에 대한 자세한 내용은 업그레이드 확인 프로그램 유틸리티
사전 점검은 업그레이드를 위해 DB 인스턴스가 중지되기 전에 실행됩니다. 즉, 점검을 실행해도 가동 중지를 일으키지 않습니다. 사전 점검에서 비호환성이 발견되면 Amazon RDS는 DB 인스턴스가 중지되기 전에 자동으로 업그레이드를 취소합니다. 또한 Amazon RDS는 비호환성에 대한 이벤트를 생성합니다. Amazon RDS 이벤트에 대한 자세한 내용은 Amazon RDS 이벤트 알림 작업 단원을 참조하십시오.
Amazon RDS는 각 비호환성에 대한 자세한 정보를 로그 파일 PrePatchCompatibility.log
에 기록합니다. 대부분의 경우 로그 항목에는 비호환성 문제를 해결하기 위한 MySQL 설명서 링크가 포함되어 있습니다. 로그 파일 보기에 대한 자세한 내용은 데이터베이스 로그 파일 보기 및 나열 단원을 참조하십시오.
사전 점검의 특성으로 인해 데이터베이스의 객체를 분석합니다. 이 분석은 리소스를 소비하고 업그레이드가 완료되는 시간을 늘립니다.
MySQL 8.0에서 8.4로 업그레이드하기 위한 사전 점검
MySQL 8.4에는 MySQL 8.0과 상당한 비호환성이 포함되어 있습니다. 이러한 비호환성으로 인해 MySQL 8.0에서 MySQL 8.4로 업그레이드하는 동안 문제가 발생할 수 있습니다. 따라서 업그레이드가 성공하려면 데이터베이스에 몇 가지 준비가 필요할 수 있습니다. 다음은 이러한 비호환성을 나열한 전체 목록입니다.
-
사용되지 않는 데이터 형식이나 함수를 사용하는 테이블이 없어야 합니다.
-
트리거에는 누락되었거나 빈 definer 또는 잘못된 생성 컨텍스트가 없어야 합니다.
-
키워드 또는 예약된 단어 위반이 없어야 합니다. 이전에 예약되지 않은 일부 키워드는 MySQL 8.4에서 예약할 수 있습니다.
자세한 내용은 MySQL 설명서의 키워드 및 예약어
를 참조하십시오. -
MySQL 8.0
mysql
시스템 데이터베이스에는 MySQL 8.4 데이터 딕셔너리가 사용하는 테이블과 동일한 이름의 테이블이 없어야 합니다. -
sql_mode
시스템 변수 설정에 정의된 사용되지 않는 SQL 모드가 없어야 합니다. -
255자 또는 1020바이트 길이를 초과하는 개별
ENUM
또는SET
열 요소가 있는 테이블이나 저장 프로시저가 없어야 합니다. -
MySQL 8.0 설치는 MySQL 8.4에 지원되지 않는 기능을 사용해서는 안 됩니다.
자세한 내용은 MySQL 설명서의 Features removed in MySQL 8.4
를 참조하세요. -
64자를 초과하는 외래 키 제약 조건 이름이 없어야 합니다.
-
향상된 유니코드 지원을 위해 다음 정보를 검토하세요.
-
utf8mb3
charset을 사용하는 객체가utf8mb4
charset을 사용하도록 변환하는 것을 고려하세요.utf8mb3
문자 집합은 사용되지 않습니다. -
현재
utf8
은utf8mb3
charset의 별칭이므로utf8
대신 문자 집합 참조를 위한utf8mb4
사용을 고려하세요. 가능하면 먼저utf8
을utf8mb4
로 변경한 다음 데이터베이스를 업그레이드합니다. -
이전 클라이언트는
utf8mb3
에 대해 알 수 없는 문자 집합 오류를 수신할 수 있으므로 데이터베이스를 업그레이드하기 전에 데이터베이스 클라이언트를 업그레이드하세요.
자세한 내용은 MySQL 설명서의 utf8mb3 문자 집합(3바이트 UTF-8 유니코드 인코딩)
을 참조하십시오. 문자 집합을 변경하려는 경우 데이터베이스의 백업, 복원 및 복제를 수동으로 수행할 수 있습니다. 또는 Amazon RDS 블루/그린 배포를 사용할 수 있습니다. 자세한 내용은 데이터베이스 업데이트에 Amazon RDS 블루/그린 배포 사용 단원을 참조하십시오.
-
MySQL 8.0에서 8.4로 업그레이드를 시작하면 Amazon RDS가 자동으로 사전 점검을 실행하여 이러한 비호환성을 찾아냅니다. MySQL 8.4로 업그레이드하는 방법은 MySQL 설명서에서 Upgrading MySQL
이러한 사전 점검은 필수입니다. 건너뛸 수 없습니다. 사전 점검은 다음과 같은 이점을 제공합니다.
-
이를 통해 업그레이드 중 예기치 않은 가동 중단을 피할 수 있습니다.
-
비호환성이 있는 경우 Amazon RDS가 업그레이드를 차단하고 이에 대해 알 수 있는 로그를 제공합니다. 그러면 로그를 사용해 비호환성을 제거함으로써 MySQL 8.4로 업그레이드하기 위한 데이터베이스 준비를 마칠 수 있습니다. 비호환성 문제를 제거하는 방법에 대한 자세한 내용은 MySQL 설명서의 Preparing your installation for upgrade
를 참조하세요.
MySQL 5.7에서 8.0으로 업그레이드하기 위한 사전 점검
MySQL 8.0에는 MySQL 5.7과 상당한 비호환성이 포함되어 있습니다. 이러한 비호환성으로 인해 MySQL 5.7에서 MySQL 8.0으로 업그레이드하는 동안 문제가 발생할 수 있습니다. 따라서 업그레이드가 성공하려면 데이터베이스에 몇 가지 준비가 필요할 수 있습니다. 다음은 이러한 비호환성을 나열한 전체 목록입니다.
-
사용되지 않는 데이터 형식이나 함수를 사용하는 테이블이 없어야 합니다.
-
orphan *.frm 파일이 없어야 합니다.
-
트리거에는 누락되었거나 빈 definer 또는 잘못된 생성 컨텍스트가 없어야 합니다.
-
기본 파티셔닝 지원이 없는 스토리지 엔진을 사용하는 분할된 테이블이 없어야 합니다.
-
키워드 또는 예약된 단어 위반이 없어야 합니다. 이전에 예약되지 않은 일부 키워드는 MySQL 8.0에서 예약할 수 있습니다.
자세한 내용은 MySQL 설명서의 키워드 및 예약어
를 참조하십시오. -
MySQL 5.7
mysql
시스템 데이터베이스에는 MySQL 8.0 데이터 딕셔너리가 사용하는 테이블과 동일한 이름의 테이블이 없어야 합니다. -
sql_mode
시스템 변수 설정에 정의된 사용되지 않는 SQL 모드가 없어야 합니다. -
255자 또는 1020바이트 길이를 초과하는 개별
ENUM
또는SET
열 요소가 있는 테이블이나 저장 프로시저가 없어야 합니다. -
MySQL 8.0.13 이상으로 업그레이드하기 전에 공유 InnoDB 테이블스페이스에 있는 테이블 파티션이 없어야 합니다.
-
ASC
절에 사용하는DESC
또는GROUP BY
한정자를 사용하는 MySQL 8.0.12 이하의 쿼리 및 저장 프로그램 정의가 없어야 합니다. -
MySQL 5.7 설치는 MySQL 8.0에 지원되지 않는 기능을 사용해서는 안 됩니다.
자세한 내용은 MySQL 설명서의 MySQL 8.0에서 제거된 기능
을 참조하십시오. -
64자를 초과하는 외래 키 제약 조건 이름이 없어야 합니다.
-
향상된 유니코드 지원을 위해 다음 정보를 검토하세요.
-
utf8mb3
charset을 사용하는 객체가utf8mb4
charset을 사용하도록 변환하는 것을 고려하세요.utf8mb3
문자 집합은 사용되지 않습니다. -
현재
utf8
은utf8mb3
charset의 별칭이므로utf8
대신 문자 집합 참조를 위한utf8mb4
사용을 고려하세요. 가능하면 먼저utf8
을utf8mb4
로 변경한 다음 데이터베이스를 업그레이드합니다. -
이전 클라이언트는
utf8mb3
에 대해 알 수 없는 문자 집합 오류를 수신할 수 있으므로 데이터베이스를 업그레이드하기 전에 데이터베이스 클라이언트를 업그레이드하세요.
자세한 내용은 MySQL 설명서의 utf8mb3 문자 집합(3바이트 UTF-8 유니코드 인코딩)
을 참조하십시오. 문자 집합을 변경하려는 경우 데이터베이스의 백업, 복원 및 복제를 수동으로 수행할 수 있습니다. 또는 Amazon RDS 블루/그린 배포를 사용할 수 있습니다. 자세한 내용은 데이터베이스 업데이트에 Amazon RDS 블루/그린 배포 사용 단원을 참조하십시오.
-
MySQL 5.7에서 8.0으로 업그레이드를 시작하면 Amazon RDS가 자동으로 사전 점검을 실행하여 이러한 비호환성을 찾아냅니다. MySQL 8.0으로 업그레이드하는 방법은 MySQL 설명서에서 MySQL 업그레이드
이러한 사전 점검은 필수입니다. 건너뛸 수 없습니다. 사전 점검은 다음과 같은 이점을 제공합니다.
-
이를 통해 업그레이드 중 예기치 않은 가동 중단을 피할 수 있습니다.
-
비호환성이 있는 경우 Amazon RDS가 업그레이드를 차단하고 이에 대해 알 수 있는 로그를 제공합니다. 그러면 로그를 사용해 비호환성을 제거함으로써 MySQL 8.0으로 업그레이드하기 위한 데이터베이스 준비를 마칠 수 있습니다. 비호환성 문제를 제거하는 방법에 대한 자세한 내용은 MySQL 설명서의 업그레이드를 위한 설치 준비
및 MySQL Server 블로그의 MySQL 8.0으로 업그레이드할 때 알아야 할 내용 을 참조하세요.
업그레이드 실패 후 롤백
DB 인스턴스를 MySQL 버전 5.7에서 MySQL 버전 8.0으로 또는 MySQL 8.0에서 8.4로 업그레이드하면 업그레이드가 실패할 수 있습니다. 특히 데이터 딕셔너리에 사전 검사에서 캡처되지 않은 비호환성 문제가 포함되어 있는 경우 실패할 수 있습니다. 이 경우 데이터베이스가 새 MySQL 8.0 또는 8.4 버전에서 성공적으로 시작되지 않습니다. 이때 Amazon RDS는 업그레이드를 위해 수행된 변경 사항을 롤백합니다. 롤백 후 MySQL DB 인스턴스는 원래 버전을 실행합니다.
-
MySQL 버전 8.0(MySQL 8.4에서 롤백하는 경우)
-
MySQL 버전 5.7(MySQL 8.0에서 롤백하는 경우)
업그레이드가 실패하고 롤백되면 Amazon RDS는 이벤트 ID가 ID RDS-EVENT-0188인 이벤트를 생성합니다.
일반적으로, DB 인스턴스의 데이터베이스와 대상 MySQL 버전 간에 메타데이터가 호환되지 않기 때문에 업그레이드가 실패합니다. 업그레이드가 실패한 경우 이러한 비호환성에 대한 세부 정보를 upgradeFailure.log
파일에서 확인할 수 있습니다. 업그레이드를 다시 시도하기 전에 비호환성을 해결하세요.
업그레이드 시도 및 롤백이 실패하는 과정에서 DB 인스턴스가 다시 시작됩니다. 보류 중인 파라미터 변경 사항은 재시작 중에 적용되고 롤백 후에도 유지됩니다.
MySQL 8.0으로 업그레이드하는 방법에 대한 자세한 내용은 MySQL 설명서의 다음 항목을 참조하세요.
MySQL 8.4로 업그레이드하는 방법에 대한 자세한 내용은 MySQL 설명서에서 Preparing Your Installation for Upgrade