Amazon Relational Database Service
사용 설명서 (API 버전 2014-10-31)

MySQL DB 엔진 업그레이드

Amazon RDS에서 새 데이터베이스 엔진 버전을 지원하는 경우, DB 인스턴스를 새 버전으로 업그레이드할 수 있습니다. 메이저 버전 업그레이드와 마이너 버전 업그레이드라는 두 가지 업그레이드가 있습니다. 일반적으로 메이저 엔진 버전 업그레이드는 기존 애플리케이션과 호환되지 않는 변경 사항을 가져올 수 있습니다. 반대로 마이너 버전 업그레이드에는 기존 애플리케이션과 호환되는 변경 사항만 포함됩니다.

DB 인스턴스를 수동으로 수정하여 메이저 버전 업그레이드를 수행해야 합니다. DB 인스턴스에서 마이너 버전 자동 업그레이드를 사용하도록 설정하면 마이너 버전 업그레이드가 자동으로 수행됩니다. 그 밖의 경우에는 DB 인스턴스를 수동으로 수정하여 마이너 버전 업그레이드를 수행해야 합니다.

업그레이드 개요

Amazon RDS는 업그레이드 프로세스 중에 DB 스냅샷을 2개 캡처합니다. 첫 번째 DB 스냅샷은 업그레이드 변경 이전 DB 인스턴스의 스냅샷입니다. 업그레이드가 데이터베이스에 맞지 않는 경우에는 이 스냅샷을 복구하여 이전 버전의 DB 인스턴스를 생성할 수 있습니다. 두 번째 DB 스냅샷은 업그레이드 완료와 함께 캡처됩니다.

참고

DB 인스턴스에 대한 백업 보존 기간을 0보다 큰 수로 설정하면 Amazon RDS는 DB 스냅샷만 캡처합니다. 백업 보존 기간을 변경하려면 MySQL 데이터베이스 엔진 기반 DB 인스턴스의 변경 단원을 참조하십시오.

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

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

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

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

MySQL 메이저 버전 업그레이드

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

  • MySQL 5.5에서 MySQL 5.6으로

  • MySQL 5.6에서 MySQL 5.7로

  • MySQL 5.7에서 MySQL 8.0으로

참고

최신 세대 및 현재 세대의 DB 인스턴스 클래스와 db.m3 이전 세대 DB 인스턴스 클래스로는 MySQL 버전 5.7 및 8.0 DB 인스턴스만 생성할 수 있습니다. 이전 세대의 DB 인스턴스 클래스(db.m3 제외)에서 실행되는 MySQL 버전 5.6 DB 인스턴스를 MySQL 버전 5.7 DB 인스턴스로 업그레이드하려면 먼저 최신 또는 현재 세대의 DB 인스턴스 클래스를 사용할 수 있도록 DB 인스턴스를 수정해야 합니다. 최신 또는 현재 세대의 DB 인스턴스 클래스를 사용할 수 있도록 DB 인스턴스가 수정된 후에 MySQL 버전 5.7 데이터베이스 엔진을 사용할 수 있도록 DB 인스턴스를 수정할 수 있습니다. Amazon RDS DB 인스턴스 클래스에 대한 자세한 내용은 DB 인스턴스 클래스 단원을 참조하십시오.

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

Amazon RDS의 MySQL 버전 5.5 DB 인스턴스를 MySQL 버전 5.6 이상으로 업그레이드하려면 먼저 사용 가능한 OS 업데이트를 수행해야 합니다. OS 업데이트가 완료된 후 각 메이저 버전으로 업그레이드해야 합니다. 5.5를 5.6으로 업그레이드하고 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 값을 확인합니다.

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

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 이전 버전을 실행하거나 MySQL 버전 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; 명령을 생성할 수 있습니다.

SELECT DISTINCT CONCAT('ALTER TABLE `', REPLACE(is_tables.TABLE_SCHEMA, '`', '``'), '`.`', REPLACE(is_tables.TABLE_NAME, '`', '``'), '` FORCE;') FROM information_schema.TABLES is_tables INNER JOIN information_schema.COLUMNS col ON col.TABLE_SCHEMA = is_tables.TABLE_SCHEMA AND col.TABLE_NAME = is_tables.TABLE_NAME LEFT OUTER JOIN information_schema.INNODB_SYS_TABLES systables ON SUBSTRING_INDEX(systables.NAME, '#', 1) = CONCAT(is_tables.TABLE_SCHEMA,'/',is_tables.TABLE_NAME) LEFT OUTER JOIN information_schema.INNODB_SYS_COLUMNS syscolumns ON syscolumns.TABLE_ID = systables.TABLE_ID AND syscolumns.NAME = col.COLUMN_NAME WHERE col.COLUMN_TYPE IN ('time','timestamp','datetime') AND is_tables.TABLE_TYPE = 'BASE TABLE' AND is_tables.TABLE_SCHEMA NOT IN ('mysql','information_schema','performance_schema') AND (is_tables.ENGINE = 'InnoDB' AND syscolumns.MTYPE = 6);

업그레이드 테스트

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

메이저 버전 업그레이드를 테스트하려면

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

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

  3. 업그레이드할 DB 인스턴스의 DB 스냅샷을 생성합니다. 자세한 내용은 DB 스냅샷 생성 단원을 참조하십시오.

  4. DB 스냅샷을 복구하여 새로운 테스트 DB 인스턴스를 생성합니다. 자세한 내용은 DB 스냅샷에서 복원 단원을 참조하십시오.

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

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

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

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

MySQL DB 인스턴스 업그레이드

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

가동 중지 시간을 최소화한 MySQL 데이터베이스 업그레이드

MySQL DB 인스턴스가 현재 프로덕션 애플리케이션을 사용 중인 경우 다음 절차에 따라 DB 인스턴스의 데이터베이스 버전을 업그레이드하는 동시에 애플리케이션의 중단 시간까지 줄일 수 있습니다. 이 절차는 MySQL 버전 5.5를 MySQL 버전 5.6으로 업그레이드하는 예를 보여 줍니다. 동일한 일반 절차를 사용하여 다른 메이저 버전으로 업그레이드할 수 있습니다.

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

  1. AWS Management 콘솔에 로그인한 다음 https://console.aws.amazon.com/rds/에서 Amazon RDS 콘솔을 엽니다.

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

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

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

    3. 읽기 전용 복제본의 DB 인스턴스 식별자 값을 입력합니다. 이때 DB 인스턴스 클래스와 다른 설정이 MySQL 5.5 DB 인스턴스와 일치해야 합니다.

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

  3. 읽기 전용 복제본이 생성되어 상태사용 가능이라고 표시되면 읽기 전용 복제본을 MySQL 5.6으로 업그레이드합니다.

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

    2. [Modify]를 선택합니다.

    3. DB 엔진 버전에서 업그레이드할 MySQL 5.6 버전을 선택한 후 계속을 선택합니다.

    4. [Scheduling of Modifications]에 대해 [Apply Immediately]를 선택합니다.

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

  4. 업그레이드가 끝나고 [Status]에 [available]이라고 표시되면 업그레이드한 읽기 전용 복제본이 마스터 MySQL 5.5 DB 인스턴스와 비교하여 최신 상태를 나타내는지 확인합니다. 읽기 전용 복제본에 연결하여 SHOW SLAVE STATUS 명령을 실행하면 확인할 수 있습니다. Seconds_Behind_Master 필드가 0이면 복제본이 최신 상태입니다.

  5. MySQL 5.6 읽기 전용 복제본을 마스터 DB 인스턴스로 설정하기

    중요

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

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

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

    2. 작업을 선택한 후 읽기 전용 복제본 승격을 선택합니다.

    3. [Yes]를 선택하여 읽기 전용 복제본 인스턴스의 자동 백업을 활성화합니다. 자세한 내용은 백업 작업 단원을 참조하십시오.

      [Continue]를 선택합니다.

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

  6. 이제 MySQL 데이터베이스 버전이 업그레이드되었습니다. 지금부터는 애플리케이션을 새로운 MySQL 5.6 DB 인스턴스에서 실행하거나, 읽기 전용 복제본을 추가하거나, 다중 AZ 지원을 설정하는 등의 작업이 가능합니다.