가동 중지 시간을 최소화하면서 Amazon Relational Database Service(Amazon RDS) for MySQL 버전 업그레이드를 수행하려고 합니다.
해결 방법
참고: AWS Command Line Interface(AWS CLI) 명령 실행 시 오류가 발생하는 경우, AWS CLI 오류 문제 해결을 참고하세요. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.
Amazon RDS for MySQL 버전 수동 업그레이드
Amazon RDS DB 인스턴스의 엔진 버전을 수동으로 업그레이드하려면 AWS Management Console, AWS CLI 또는 Amazon RDS API를 사용하십시오. 자세한 내용은 MySQL DB 엔진 업그레이드를 참조하십시오.
Amazon RDS for MySQL 업그레이드 시간
업그레이드 시간은 업그레이드 유형, 데이터 및 사용 가능한 리소스에 따라 다릅니다. 업그레이드 시간을 예상하려면 별도의 테스트 인스턴스에서 업그레이드를 테스트하십시오. 메이저 또는 마이너 업그레이드를 위한 테스트 인스턴스를 시작하려면 스냅샷 복원 또는 읽기 전용 복제본을 사용하십시오. 자세한 내용은 MySQL의 메이저 버전 업그레이드 및 MySQL의 자동 마이너 버전 업그레이드를 참조하십시오. 업그레이드 가동 중지 시간을 최소화하려면 데이터베이스 업데이트에 블루/그린 배포를 사용하십시오.
백업을 활성화하면 Amazon RDS는 모든 버전 업그레이드에 대해 인스턴스의 이전 버전 스냅샷을 생성합니다. Amazon RDS에서 최신 백업을 찾지 못한 경우, Amazon RDS는 업그레이드 프로세스 중에 전체 스냅샷을 생성합니다. 변경 크기는 업그레이드 시간에 영향을 줍니다. Amazon RDS가 스냅샷을 생성할 때 인스턴스는 계속해서 트래픽을 수신할 수 있습니다. 백업이 완료되면 인스턴스가 종료됩니다. 그런 다음, MySQL은 비활성화된 네트워크에서 새 엔진 버전을 실행하여 모든 원격 연결을 차단합니다.
느린 종료를 사용하기 위해 Amazon RDS는 innodb_fast_shutdown 파라미터 값을 0으로 설정합니다. 느린 종료에서는 Amazon RDS가 변경 버퍼를 병합하고 삭제된 행을 완전히 제거합니다. 느린 종료는 복구되는 데이터의 양에 따라 몇 분에서 몇 시간까지 걸릴 수 있습니다. 변경 버퍼가 크거나 기록 목록이 긴 데이터베이스를 느리게 종료하면 시간이 더 오래 걸릴 수 있습니다. 자세한 내용은 MySQL 웹사이트에서 느린 종료, innodb_fast_shutdown, 변경 버퍼 및 제거를 참조하십시오.
시스템 및 사용자 테이블을 새 버전으로 변환하기 위해 mysql_upgrade 프로그램이 MySQL 데이터베이스에서 실행됩니다. 테이블 상태에 따라 새 버전에 맞도록 테이블을 생성해야 할 수 있습니다. 데이터베이스가 업그레이드되었음을 표시하기 위해 mysql_upgrade 프로그램은 테이블의 메타데이터를 업데이트합니다. 테이블 수가 많으면 Amazon RDS for MySQL에서 메이저 버전 업그레이드를 완료하는 데 시간이 더 오래 걸릴 수 있습니다. 자세한 내용은 MySQL 웹사이트에서 mysql_upgrade: MySQL 테이블 확인 및 업그레이드를 참조하십시오.
버전 5.7로 메이저 업그레이드하는 동안 Amazon RDS for MySQL이 일부 테이블을 다시 빌드합니다. 모든 날짜 및 시간 열 유형이 새 형식으로 변환됩니다. 테이블의 데이터 양에 따라 변환에 몇 시간에서 며칠이 소요될 수 있습니다.
MySQL 5.7과 MySQL 8.0 간의 비호환성으로 인해 업그레이드 시 문제가 발생할 수 있습니다. 성공적인 업그레이드를 위해서는 데이터베이스를 준비하는 것이 가장 좋습니다. MySQL 5.7에서 8.0으로 업그레이드를 시작하면 Amazon RDS는 자동으로 사전 점검을 실행하여 비호환성을 감지합니다. 자세한 내용은 MySQL 웹사이트에서 3장 MySQL 업그레이드를 참조하십시오.
MySQL 5.6에서 MySQL 5.7로 업그레이드하는 경우, Amazon RDS는 사전 점검을 실행하여 테이블을 다시 빌드하기에 충분한 스토리지 공간이 있는지 확인합니다. 또한 Amazon RDS는 분리된 테이블이 없는지 확인합니다. Amazon RDS는 MySQL 5.7 이전 릴리스로의 업그레이드에 대한 사전 점검을 실행하지 않습니다. 잠재적인 메이저 버전 업그레이드 실패에 대비하여 롤백 계획을 세우는 것이 가장 좋습니다.
테이블에 문제가 있는지 확인하려면 mysqlcheck를 수행하는 것이 가장 좋습니다. 하지만 테이블 유지 관리 작업에 상당한 시간과 리소스가 소요될 수 있습니다. 자세한 내용은 MySQL 웹사이트에서 mysqlcheck: A table maintenance program을 참조하세요.
관련 정보
DB 인스턴스 엔진 버전 업그레이드
Amazon RDS for MySQL과 Amazon RDS for MariaDB를 업그레이드하기 위한 모범 사례
Amazon RDS의 MySQL 버전