MySQL DB 엔진 업그레이드 - Amazon Relational Database Service

MySQL DB 엔진 업그레이드

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

메이저 버전 업그레이드

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

다중 AZ DB 인스턴스 배포의 메이저 버전 업그레이드의 경우 Amazon RDS는 기본 복제본과 대기 복제본을 동시에 업그레이드합니다. 업그레이드가 완료될 때까지 DB 인스턴스를 사용할 수 없습니다. 현재 Amazon RDS는 다중 AZ DB 클러스터 배포의 메이저 버전 업그레이드를 지원하지 않습니다.

작은 정보

블루/그린 배포를 사용하면 메이저 버전 업그레이드에 필요한 다운타임을 최소화할 수 있습니다. 자세한 내용은 데이터베이스 업데이트에 Amazon RDS 블루/그린 배포 사용 단원을 참조하십시오.

마이너 버전 업그레이드

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

다중 AZ DB 클러스터의 마이너 버전 업그레이드를 수행하면 Amazon RDS는 리더 DB 인스턴스를 한 번에 하나씩 업그레이드합니다. 그러면 리더 DB 인스턴스가 새 라이터 DB 인스턴스로 전환됩니다. 그러면 Amazon RDS가 이전 라이터 인스턴스(현재는 리더 인스턴스)를 업그레이드합니다.

참고

다중 AZ DB 인스턴스 배포의 마이너 버전 업그레이드로 인한 다운타임은 몇 분 동안 지속될 수 있습니다. 다중 AZ DB 클러스터는 일반적으로 마이너 버전 업그레이드의 가동 중지 시간을 약 35초로 줄입니다. RDS 프록시와 함께 사용하면 다운타임을 1초 이하로 더 줄일 수 있습니다. 자세한 내용은 Amazon RDS 프록시 사용 단원을 참조하십시오. ProxySQL, PgBouncer 또는 MySQL용 AWS JDBC 드라이버와 같은 오픈 소스 데이터베이스 프록시를 사용할 수 있습니다.

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

업그레이드 개요

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

대상 LinuxmacOS, 또는Unix:

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

Windows의 경우:

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

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

대상 LinuxmacOS, 또는Unix:

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

Windows의 경우:

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

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 인스턴스 수정 단원을 참조하십시오.

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

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

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

MySQL 버전 번호

RDS for MySQL용 데이터베이스 엔진의 버전 번호 지정 시퀀스는 major.minor.patch.YYYYMMDD 또는 major.minor.patch 형식(예: 8.0.33.R2.20231201 또는 5.7.44)입니다. 사용된 형식은 MySQL 엔진 버전에 따라 다릅니다. RDS 추가 지원 버전 번호 지정에 대한 자세한 내용은 Amazon RDS 추가 지원 버전 명명 규칙 섹션을 참조하세요.

메이저

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

마이너

버전 번호의 세 번째 부분이 마이너 버전 번호입니다(예: 8.0.33의 33).

패치

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

YYYYMMDD(날짜)

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

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

8.0 마이너 버전 이름 지정 체계
33 이상 새 DB 인스턴스는 major.minor.patch.YYMMDD를 사용합니다(예: 8.0.33.R2.20231201).

기존 DB 인스턴스는 다음 메이저 또는 마이너 버전 업그레이드 전까지 major.minor.patch(예: 8.0.33.R2)를 사용할 수 있습니다.

33 미만 기존 DB 인스턴스는 major.minor.patch를 사용합니다(예: 8.0.32.R2).

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

5.7 마이너 버전 이름 지정 체계
42 이상 새 DB 인스턴스는 major.minor.patch.YYMMDD를 사용합니다(예: 5.7.42.R2.20231201).

기존 DB 인스턴스는 다음 메이저 또는 마이너 버전 업그레이드 전까지 major.minor.patch(예: 5.7.42.R2)를 사용할 수 있습니다.

RDS 버전 번호

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

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

CREATE EXTENSION rds_tools;

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

mysql> select mysql.rds_version();

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

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

MySQL 메이저 버전 업그레이드

Amazon RDS는 MySQL 데이터베이스 엔진의 다음과 같은 메이저 버전 업그레이드를 지원합니다.

  • MySQL 5.6에서 MySQL 5.7로

  • MySQL 5.7에서 MySQL 8.0으로

참고

최신 세대 및 현재 세대의 DB 인스턴스 클래스와 db.m3 이전 세대 DB 인스턴스 클래스로는 MySQL 버전 5.7 및 8.0 DB 인스턴스만 생성할 수 있습니다.

경우에 따라, 이전 세대의 DB 인스턴스 클래스(m3 이외)에서 실행되는 MySQL 버전 5.6 DB 인스턴스를 MySQL 버전 5.7 DB 인스턴스로 업그레이드해야 합니다. 이러한 경우 먼저 DB 인스턴스를 수정하여 최신 세대 또는 현재 세대 DB 인스턴스 클래스를 사용합니다. 그런 다음 DB 인스턴스를 수정하여 MySQL 버전 5.7 데이터베이스 엔진을 사용할 수 있습니다. Amazon RDS DB 인스턴스 클래스에 대한 자세한 내용은 DB 인스턴스 클래스 단원을 참조하십시오.

MySQL 메이저 버전 업그레이드 개요

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

Amazon RDS의 MySQL 버전 5.6 DB 인스턴스를 MySQL 버전 5.7 이상으로 업그레이드하려면 먼저 사용 가능한 OS 업데이트를 수행합니다. OS 업데이트가 완료된 후 각 메이저 버전으로 업그레이드해야 합니다. 5.6을 5.7로 업그레이드한 후 5.7을 8.0으로 업그레이드합니다. 2014년 4월 24일 이전에 생성한 MySQL DB 인스턴스에는 업데이트가 적용될 때까지 사용 가능한 OS 업데이트가 표시됩니다. OS 업데이트에 대한 자세한 내용은 DB 인스턴스의 업데이트 적용 단원을 참조하십시오.

MySQL의 메이저 버전 업그레이드 중에는 필요하다면 Amazon RDS가 MySQL 바이너리 mysql_upgrade를 실행하여 테이블을 업그레이드합니다. 또한 Amazon RDS는 메이저 버전 업그레이드 도중 slow_loggeneral_log 테이블을 비웁니다. 로그 정보를 보존하려면 메이저 버전 업그레이드에 앞서 로그 내용을 저장하십시오.

MySQL 메이저 버전 업그레이드는 일반적으로 약 10분 정도 걸립니다. DB 인스턴스 클래스 크기 때문에 또는 인스턴스가 Amazon RDS의 모범 사례의 특정 작업 지침에 따르지 않는 탓에 일부 업그레이드는 시간이 더 걸릴 수도 있습니다. Amazon RDS 콘솔에서 DB 인스턴스를 업그레이드하는 경우, DB 인스턴스 상태를 보고 업그레이드 완료 시간을 알 수 있습니다. AWS Command Line Interface(AWS CLI)를 사용하여 업그레이드하는 경우, describe-db-instances 명령을 사용하여 Status 값을 확인합니다.

MySQL 버전 5.7로의 업그레이드가 느릴 수 있음

MySQL 버전 5.6.4는 datetime, time, 및 timestamp 열에 대한 새로운 날짜와 시간 형식을 채택하여 날짜와 시간 값에 소수 구성 요소를 허용합니다. DB 인스턴스를 MySQL 버전 5.7로 업그레이드할 때, MySQL에서는 모든 날짜 및 시간 열 형식이 새 형식으로 강제로 변환됩니다.

이렇게 변환되면 테이블이 다시 작성되므로, DB 인스턴스 업그레이드를 완료하기까지 상당한 시간이 걸릴 수 있습니다. 강제 변환은 MySQL 버전 5.6.4 이전 버전을 실행 중인 모든 DB 인스턴스에 발생합니다. 또한 MySQL 버전 5.6.4 이전 버전에서 5.7 이외의 버전으로 업그레이드된 모든 DB 인스턴스에도 발생합니다.

DB 인스턴스가 MySQL 버전 5.6.4 이전 버전을 실행하거나 5.6.4 이전 버전에서 업그레이드된 경우 추가 조치를 수행하는 것이 좋습니다. 이 경우 DB 인스턴스를 MySQL 버전 5.7로 업그레이드하기 전에 데이터베이스의 datetime, timetimestamp 열을 변환하는 것이 좋습니다. 이렇게 변환하면 DB 인스턴스를 MySQL 버전 5.7로 업그레이드하는 데 필요한 시간이 상당히 줄어듭니다. 날짜 및 시간 열을 새로운 형식으로 업그레이드하려면 날짜 또는 시간 열이 포함된 각 테이블에 대해 ALTER TABLE <table_name> FORCE; 명령을 실행합니다. 테이블을 변경하면 테이블이 읽기 전용으로 잠기므로 유지 관리 기간 동안 이 업데이트를 수행하는 것이 좋습니다.

datetime, time 또는 timestamp 열이 있는 데이터베이스의 모든 테이블을 찾고, 각 테이블에 ALTER TABLE <table_name> FORCE; 명령을 생성하려면 다음 쿼리를 사용하십시오.

SET show_old_temporals = ON; SELECT table_schema, table_name,column_name, column_type FROM information_schema.columns WHERE column_type LIKE '%/* 5.5 binary format */'; SET show_old_temporals = OFF;

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 문자 집합은 사용되지 않습니다. 또한, 현재 utf8mb4utf8 charset의 별칭이므로 utf8 대신 문자 집합 참조를 위한 utf8mb3 사용을 고려하십시오.

    자세한 내용은 MySQL 설명서의 utf8mb3 문자 집합(3바이트 UTF-8 유니코드 인코딩)을 참조하십시오.

MySQL 5.7에서 8.0으로 업그레이드를 시작하면 Amazon RDS가 자동으로 사전 점검을 실행하여 이러한 비호환성을 찾아냅니다. MySQL 8.0으로 업그레이드하는 방법은 MySQL 설명서에서 MySQL 업그레이드를 참조하십시오.

이러한 사전 점검은 필수입니다. 건너뛸 수 없습니다. 사전 점검은 다음과 같은 이점을 제공합니다.

  • 이를 통해 업그레이드 중 예기치 않은 가동 중단을 피할 수 있습니다.

  • 비호환성이 있는 경우 Amazon RDS가 업그레이드를 차단하고 이에 대해 알 수 있는 로그를 제공합니다. 그러면 로그를 사용해 비호환성을 제거함으로써 MySQL 8.0으로 업그레이드하기 위한 데이터베이스 준비를 마칠 수 있습니다. 비호환성 문제를 제거하는 방법에 대한 자세한 내용은 MySQL 설명서의 업그레이드를 위한 설치 준비 및 MySQL Server 블로그의  MySQL 8.0으로 업그레이드할 때 알아야 할 내용을 참조하세요.

사전 점검에는 MySQL에 포함된 내용과 Amazon RDS 팀에서 생성한 내용이 포함됩니다. MySQL에서 제공하는 사전 점검에 대한 자세한 내용은 업그레이드 확인 프로그램 유틸리티를 참조하십시오.

사전 점검은 업그레이드를 위해 DB 인스턴스가 중지되기 전에 실행됩니다. 즉, 점검을 실행해도 가동 중지를 일으키지 않습니다. 사전 점검에서 비호환성이 발견되면 Amazon RDS는 DB 인스턴스가 중지되기 전에 자동으로 업그레이드를 취소합니다. 또한 Amazon RDS는 비호환성에 대한 이벤트를 생성합니다. Amazon RDS 이벤트에 대한 자세한 내용은 Amazon RDS 이벤트 알림 작업 단원을 참조하십시오.

Amazon RDS는 각 비호환성에 대한 자세한 정보를 로그 파일 PrePatchCompatibility.log에 기록합니다. 대부분의 경우 로그 항목에는 비호환성 문제를 해결하기 위한 MySQL 설명서 링크가 포함되어 있습니다. 로그 파일 보기에 대한 자세한 내용은 데이터베이스 로그 파일 보기 및 나열 단원을 참조하십시오.

사전 점검의 특성으로 인해 데이터베이스의 객체를 분석합니다. 이 분석은 리소스를 소비하고 업그레이드가 완료되는 시간을 늘립니다.

참고

Amazon RDS는 MySQL 5.7에서 MySQL 8.0으로 업그레이드할 때만 이러한 모든 사전 점검을 실행합니다. MySQL 5.6에서 MySQL 5.7로 업그레이드하는 경우 사전 검사는 고아 테이블이 없고 테이블을 재구성하기에 충분한 스토리지 공간이 있는지 확인하는 것으로 제한됩니다. 사전 점검은 MySQL 5.7 이전 릴리스로 업그레이드할 때는 실행되지 않습니다.

MySQL 5.7에서 8.0으로의 업그레이드 실패 후 롤백

DB 인스턴스를 MySQL 버전 5.7에서 MySQL 버전 8.0으로 업그레이드하면 업그레이드가 실패할 수 있습니다. 특히 데이터 딕셔너리에 사전 검사에서 캡처되지 않은 비호환성 문제가 포함되어 있는 경우 실패할 수 있습니다. 이 경우 데이터베이스가 새 MySQL 8.0 버전에서 성공적으로 시작되지 않습니다. 이때 Amazon RDS는 업그레이드를 위해 수행된 변경 사항을 롤백합니다. 롤백 후 MySQL DB 인스턴스는 MySQL 버전 5.7을 실행합니다. 업그레이드가 실패하고 롤백되면 Amazon RDS는 이벤트 ID가 ID RDS-EVENT-0188인 이벤트를 생성합니다.

일반적으로, DB 인스턴스의 데이터베이스와 대상 MySQL 버전 간에 메타데이터가 호환되지 않기 때문에 업그레이드가 실패합니다. 업그레이드가 실패한 경우 이러한 비호환성에 대한 세부 정보를 upgradeFailure.log 파일에서 확인할 수 있습니다. 업그레이드를 다시 시도하기 전에 비호환성을 해결하세요.

업그레이드 시도 및 롤백이 실패하는 과정에서 DB 인스턴스가 다시 시작됩니다. 보류 중인 파라미터 변경 사항은 재시작 중에 적용되고 롤백 후에도 유지됩니다.

MySQL 8.0으로 업그레이드하는 방법에 대한 자세한 내용은 MySQL 설명서의 다음 항목을 참조하세요.

참고

현재 업그레이드 실패 후 자동 롤백은 MySQL 5.7에서 8.0으로의 메이저 버전 업그레이드에 대해서만 지원됩니다.

업그레이드 테스트

DB 인스턴스에 대한 메이저 버전 업그레이드를 수행하기 전에 데이터베이스가 새 버전과 호환되는지 여부를 철저하게 테스트합니다. 또한 새 버전과의 호환성을 위해 데이터베이스에 액세스하는 모든 애플리케이션을 철저히 테스트합니다. 다음 절차를 참조하는 것이 좋습니다.

메이저 버전 업그레이드를 테스트하려면
  1. 다음과 같이 새 버전의 데이터베이스 엔진에 대한 업그레이드 문서를 검토하여 데이터베이스나 애플리케이션에 영향을 끼칠 수도 있는 호환성 문제가 있는지 살펴봅니다.

  2. DB 인스턴스가 사용자 정의 DB 파라미터 그룹의 구성원인 경우에는 기존 설정을 이용해 새로운 메이저 버전과 호환되는 새로운 DB 파라미터 그룹을 생성합니다. 테스트 인스턴스를 업그레이드할 때는 새로운 DB 파라미터 그룹을 지정해야만 업그레이드 테스트가 올바로 진행될 수 있습니다. DB 파라미터 그룹을 생성하는 것에 대한 자세한 내용은 Amazon RDS의 파라미터 그룹 단원을 참조하십시오.

  3. 업그레이드할 DB 인스턴스의 DB 스냅샷을 생성합니다. 자세한 내용은 단일 AZ DB 인스턴스용 DB 스냅샷 생성 섹션을 참조하세요.

  4. DB 스냅샷을 복구하여 새로운 테스트 DB 인스턴스를 생성합니다. 자세한 내용은 DB 인스턴스 복원 섹션을 참조하세요.

  5. 이후 이어지는 세부적인 방법 중 한 가지를 사용하여 이 새로운 테스트 DB 인스턴스를 변경하고 새로운 버전으로 업그레이드합니다. 2단계에서 새로운 파라미터 그룹을 생성하였다면 이 파라미터 그룹을 지정합니다.

  6. 업그레이드한 인스턴스에서 사용할 스토리지를 평가하여 업그레이드 시 추가 스토리지의 필요 여부를 결정합니다.

  7. 업그레이드한 DB 인스턴스와 관련하여 데이터베이스 및 애플리케이션과 새로운 버전의 호환성을 보장하는 데 필요하다면 최대한 많은 수의 품질 보증 테스트를 실행합니다. 또한 1단계에서 발견된 호환성 문제의 영향을 평가하는 데 필요한 새로운 테스트도 모두 실행합니다. 저장된 프로시저와 함수를 모두 테스트합니다. 업그레이드한 DB 인스턴스에 대해 애플리케이션의 테스트 버전을 실행합니다.

  8. 모든 테스트가 통과되면 프로덕션 환경의 DB 인스턴스에도 업그레이드를 실행합니다. 단, 모든 기능이 정상 작동하는 것을 확인할 때까지 쓰기 작업은 DB 인스턴스에 실행하지 않는 것이 좋습니다.

MySQL DB 인스턴스 업그레이드

MySQL DB 인스턴스의 수동 또는 자동 업그레이드에 대한 자세한 내용은 DB 인스턴스 엔진 버전 업그레이드 단원을 참조하십시오.

MySQL 마이너 버전 자동 업그레이드

DB 인스턴스를 생성하거나 수정할 때 다음 설정을 지정하면 DB 인스턴스가 자동으로 업그레이드되도록 할 수 있습니다.

  • 마이너 버전 자동 업그레이드(Auto minor version upgrade) 설정을 활성화되어 있습니다.

  • 백업 보존 기간(Backup retention period) 설정이 0보다 큽니다.

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

마이너 버전 자동 업그레이드 사용이 선택되어 있는 Amazon RDS 콘솔의 유지 관리 섹션.

이러한 설정에 대한 자세한 내용은 DB 인스턴스에 대한 설정 섹션을 참조하세요.

일부 AWS 리전의 특정 RDS for MySQL 메이저 버전의 경우 RDS에서 하나의 마이너 버전을 자동 업그레이드 버전으로 지정합니다. Amazon RDS가 마이너 버전을 테스트하고 승인하면 유지 관리 기간 중에 자동으로 마이너 버전 업그레이드가 실행됩니다. RDS는 자동으로 새로 릴리스된 마이너 버전을 자동 업그레이드 버전으로 설정하지 않습니다. RDS가 더 새로운 자동 업그레이드 버전을 지정하기 전에 다음과 같은 여러 기준이 고려됩니다.

  • 알려진 보안 문제

  • MySQL 커뮤니티 버전의 버그

  • 마이너 버전 릴리스 이후 전반적인 플릿 안정성

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

대상 LinuxmacOS, 또는Unix:

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

Windows의 경우:

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

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

대상 LinuxmacOS, 또는Unix:

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

Windows의 경우:

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

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

---------------------------------- | DescribeDBEngineVersions | +--------------+-----------------+ | AutoUpgrade | EngineVersion | +--------------+-----------------+ | False | 8.0.15 | | False | 8.0.16 | | False | 8.0.17 | | False | 8.0.19 | | False | 8.0.20 | | False | 8.0.21 | | True | 8.0.23 | | False | 8.0.25 | +--------------+-----------------+

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

MySQL DB 인스턴스는 다음 기준이 충족되면 유지 관리 기간 중에 자동으로 업그레이드됩니다.

  • 마이너 버전 자동 업그레이드(Auto minor version upgrade) 설정을 활성화되어 있습니다.

  • 백업 보존 기간(Backup retention period) 설정이 0보다 큽니다.

  • DB 인스턴스가 현재 자동 업그레이드 마이너 버전보다 낮은 DB 엔진 버전을 실행 중입니다.

자세한 내용은 마이너 엔진 버전 자동 업그레이드 섹션을 참조하세요.

MySQL 데이터베이스 업그레이드 시 읽기 전용 복제본을 사용하여 가동 중지 시간 단축

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

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

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

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

참고

MySQL 버전 5.7에서 MySQL 버전 8.0으로 업그레이드하는 경우 업그레이드를 수행하기 전에 사전 점검을 완료합니다. 자세한 내용은 MySQL 5.7에서 8.0으로 업그레이드하기 위한 사전 점검 단원을 참조하십시오.

DB 인스턴스를 사용하면서 MySQL 데이터베이스를 업그레이드하는 방법
  1. AWS Management Console에 로그인한 후 https://console.aws.amazon.com/rds/에서 Amazon RDS 콘솔을 엽니다.

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

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

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

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

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

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

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

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

    2. 수정을 선택합니다.

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

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

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

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

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

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

    2. 수정을 선택합니다.

    3. DB 엔진 버전(DB engine version)에서 업그레이드할 MySQL 8.0 버전을 선택한 후 계속(Continue)을 선택합니다.

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

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

  5. 업그레이드가 완료되고 상태(Status)사용 가능(Available)으로 표시되면 업그레이드한 읽기 전용 복제본이 소스 MySQL 5.7 DB 인스턴스로 업데이트되는지 확인합니다. 확인하려면 읽기 전용 복제본에 연결하고 SHOW REPLICA STATUS 명령을 실행합니다. Seconds_Behind_Master 필드가 0이면 복제본이 최신 상태입니다.

    참고

    이전 버전의 MySQL에는 SHOW SLAVE STATUS 대신 SHOW REPLICA STATUS가 사용되었습니다. 8.0.23 이전 MySQL 버전을 사용하는 경우 SHOW SLAVE STATUS를 사용합니다.

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

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

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

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

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

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

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

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

    1. MySQL 8.0에 대한 사용자 지정 DB 파라미터 그룹을 생성합니다. 지침은 Amazon RDS에서 DB 파라미터 그룹 생성 섹션을 참조하세요.

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

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

    4. 수정을 선택합니다.

    5. DB 파라미터 그룹(DB parameter group)에서 방금 생성한 MySQL 8.0 DB 파라미터 그룹을 선택한 후 계속(Continue)을 선택합니다.

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

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

  8. MySQL 8.0 읽기 전용 복제본을 독립형 DB 인스턴스로 만듭니다.

    중요

    MySQL 8.0 읽기 전용 복제본을 독립형 DB 인스턴스로 승격하면 더 이상 MySQL 5.7 DB 인스턴스의 복제본이 아닙니다. 원본 MySQL 5.7 DB 인스턴스가 읽기 전용 모드이고, 모든 쓰기 작업이 일시 중단되는 유지 관리 기간 동안 MySQL 8.0 읽기 전용 복제본을 승격하는 것이 좋습니다. 승격이 완료되면 쓰기 작업을 MySQL 8.0 DB 인스턴스에서 실행하여 쓰기 작업이 손실되는 것을 막을 수 있습니다.

    그 밖에도 MySQL 8.0 읽기 전용 복제본을 승격하기 전에 MySQL 8.0 읽기 전용 복제본에서 필요한 모든 DDL(데이터 정의 언어) 작업을 수행하는 것이 좋습니다. 인덱스 생성을 예로 들 수 있습니다. 그러면 승격 후에도 MySQL 8.0 읽기 전용 복제본의 성능에 미치는 부정적인 영향을 방지할 수 있습니다. 읽기 전용 복제본을 승격하려면 다음 절차를 사용하십시오.

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

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

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

    4. [Continue]를 선택합니다.

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

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