Aurora MySQL 데이터베이스 엔진 업데이트 2021년 5월 25일(버전 2.10.0)(사용되지 않음) - Amazon Aurora

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Aurora MySQL 데이터베이스 엔진 업데이트 2021년 5월 25일(버전 2.10.0)(사용되지 않음)

버전: 2.10.0

Aurora MySQL 2.10.0이 정식 버전입니다. Aurora MySQL 2.x 버전은 MySQL 5.7과 호환 가능하고, Aurora MySQL 1.x 버전은 MySQL 5.6과 호환됩니다.

현재 지원되는 Aurora MySQL 릴리스는 1.19.5, 1.19.6, 1.22.*, 1.23.*, 2.04.*, 2.07.*, 2.08.*, 2.09.*, 2.10.*, 3.01.* 및 3.02.*입니다.

기존 Aurora MySQL 2.* 데이터베이스 클러스터를 Aurora MySQL 2.10.0으로 업그레이드할 수 있습니다. Aurora MySQL 버전 1을 실행하는 클러스터의 경우 기존 Aurora MySQL 1.23 이상의 클러스터를 2.10.0으로 직접 업그레이드할 수 있습니다. 또한 현재 지원되는 Aurora MySQL 릴리스에서 Aurora MySQL 2.10.0으로 스냅샷을 복원할 수 있습니다.

질문이나 문제가 있는 경우 커뮤니티 포럼 및 AWS Support를 통해 AWS Support를 이용할 수 있습니다. 자세한 내용은 Amazon Aurora 사용 설명서의 Amazon Aurora DB 클러스터 유지 관리를 참조하세요.

참고

Aurora MySQL 데이터베이스 클러스터를 업그레이드하는 방법에 대한 자세한 내용은 Amazon Aurora 사용 설명서의 Aurora MySQL DB 클러스터의 부 버전 또는 패치 수준 업그레이드를 참조하세요.

개선 사항

아래 나열된 보안 문제 및 CVE 해결:

관리된 환경에서 처리를 미세 조정하기 위한 수정 사항 및 기타 향상된 기능 아래의 추가 CVE 수정:

새로운 기능:

  • 이제 db.t3.large 인스턴스 클래스가 Aurora MySQL에 대해 지원됩니다.

  • 바이너리 로그 복제:

    • 라이터 스레드와 덤프 스레드 간의 경합을 줄여 binlog 성능을 개선하기 위해 binlog I/O 캐시가 도입되었습니다. 자세한 내용은 Amazon Aurora 사용 설명서의 바이너리 로그 복제 최적화를 참조하세요.

    • Aurora MySQL 버전 2.08에는 대규모 트랜잭션이 관련된 경우 충돌 복구 시간과 커밋 시간 지연을 줄이기 위해 개선된 binlog 처리가 도입되었습니다. 이제 GTID가 사용되는 클러스터에 대해 이러한 개선 사항이 지원됩니다.

  • 리더 인스턴스 가용성 개선:

    • 이전에는 라이터 인스턴스가 다시 시작될 때 Aurora MySQL 클러스터의 모든 리더 인스턴스도 다시 시작되었습니다. 오늘 출시를 통해 리전 내 리더 인스턴스는 라이터 인스턴스가 다시 시작되는 동안 계속해서 읽기 요청을 처리하므로 클러스터의 읽기 가용성이 개선됩니다. 자세한 내용은 Amazon Aurora 사용 설명서의 Aurora MySQL 클러스터 재부팅(버전 2.10 이상)을 참조하세요.

      중요

      Aurora MySQL 2.10으로 업그레이드한 후에는 라이터 인스턴스를 재부팅해도 전체 클러스터가 재부팅되지 않습니다. 전체 클러스터를 재부팅하려면 라이터 인스턴스를 재부팅한 후 클러스터의 리더 인스턴스를 재부팅합니다.

  • 논리적 미리 읽기(LRA) 기술에 의해 요청된 미리 읽기 페이지 읽기 성능이 개선되었습니다. 이 성능 개선은 Aurora 스토리지로 전송된 단일 요청의 여러 페이지 읽기를 배치 처리하여 달성되었습니다. 따라서 LRA 최적화를 사용하는 쿼리가 최대 3배 더 빠르게 실행됩니다.

  • 제로 가동 중지 다시 시작 및 패치 적용:

가용성 향상:

  • 데이터베이스에 이전에 중단된 DDL 활동 중에 생성된 임시 인덱스 및 테이블이 많은 경우 더 빠르게 시작되도록 개선되었습니다.

  • DROP TRIGGER, ALTER TABLE 및 특히 테이블의 분할 유형 또는 파티션 수를 수정하는 ALTER TABLE 등, 중단된 DDL 활동의 충돌 복구 중에 다시 시작이 반복되는 것과 관련된 여러 문제가 해결되었습니다.

  • 데이터베이스 활동 스트림(DAS) 로그 처리 중에 서버가 다시 시작되는 문제가 수정되었습니다.

  • 시스템 테이블에서 ALTER 쿼리를 처리하는 동안 오류 메시지가 인쇄되는 문제가 수정되었습니다.

일반적인 개선 사항:

  • 쿼리 캐시에서 리더 인스턴스의 오래된 결과가 반환될 수 있는 문제가 수정되었습니다.

  • 시스템 변수 innodb_flush_log_at_trx_commit이 0 또는 2로 설정되었을 때 일부 Aurora 커밋 지표가 업데이트되지 않는 문제가 수정되었습니다.

  • 쿼리 캐시에 저장된 쿼리 결과가 다중 문 트랜잭션에 의해 새로 고쳐지지 않는 문제가 수정되었습니다.

  • 바이너리 로그 파일의 마지막으로 수정된 타임스탬프가 올바르게 업데이트되지 않는 문제가 수정되었습니다. 이 문제로 인해 고객이 구성한 보존 기간에 도달하기 전에 바이너리 로그 파일이 조기에 제거될 수 있었습니다.

  • 충돌 복구 후 InnoDB에서 잘못 보고된 binlog 파일 이름과 위치가 수정되었습니다.

  • binlog_checksum 파라미터가 NONE인 경우 대규모 트랜잭션이 잘못된 binlog 이벤트를 생성할 수 있는 문제를 수정했습니다.

  • 복제된 트랜잭션에 DDL 문이 포함되어 있고 행 변경이 많은 경우 binlog 복제본이 오류와 함께 중지되던 문제가 수정되었습니다.

  • 테이블을 삭제할 때 리더 인스턴스가 다시 시작되는 문제가 수정되었습니다.

  • 대규모 트랜잭션이 있는 binlog 파일을 사용하려고 할 때 오픈 소스 커넥터가 실패하는 문제가 수정되었습니다.

  • 큰 지오메트리 값이 있는 테이블에 공간 인덱스를 생성한 후 대형 지오메트리 열에 잘못된 쿼리 결과가 발생할 수 있는 문제가 수정되었습니다.

  • 이제 데이터베이스가 다시 시작되는 동안 임시 테이블스페이스를 다시 생성하여 연결된 스토리지 공간을 확보하고 회수할 수 있습니다.

  • Aurora 리더 인스턴스에서 performance_schema 테이블이 잘리지 않던 문제가 수정되었습니다.

  • HA_ERR_KEY_NOT_FOUND 오류가 발생하면서 binlog 복제본이 중지될 수 있는 문제를 수정했습니다.

  • FLUSH TABLES WITH READ LOCK 문을 실행할 때 데이터베이스가 다시 시작되는 문제가 수정되었습니다.

  • Aurora 리더 인스턴스에서 사용자 수준 잠금 기능을 사용할 수 없던 문제가 수정되었습니다.

MySQL 커뮤니티 에디션 버그 픽스 통합

  • 트랜잭션 격리 수준이 REPEATABLE READ로 설정된 경우 인터리브 트랜잭션에서 슬레이브 애플리케이션이 교착 상태에 빠질 수 있습니다. (버그 #25040331)

  • 저장 프로시저에 다른 보기를 참조하는 보기를 참조하는 문이 포함되어 있으면 프로시저를 두 번 이상 성공적으로 호출할 수 없습니다. (버그 #87858, 버그 #26864199)

  • OR 조건이 많은 쿼리에서 이제 옵티마이저의 메모리 효율성이 향상되어 range_optimizer_max_mem_size 시스템 변수에 의해 적용되는 메모리 제한을 초과할 가능성이 적어집니다. 또한 해당 변수의 기본값이 1,536,000에서 8,388,608로 늘어났습니다. (버그 #79450, 버그 #22283790)

  • 복제: 복제본의 SQL 스레드에서 호출되어 릴레이 로그의 다음 이벤트를 읽는 next_event() 함수에서 SQL 스레드가 오류(예: 닫힌 릴레이 로그)로 인해 가져온 relaylog.log_lock을 해제하지 않아 릴레이 로그의 잠금을 가져오기 위해 대기 중인 다른 모든 스레드가 중단되는 문제가 있었습니다. 이 수정을 적용하면 이 상황에서 SQL 스레드가 함수에서 나가기 전에 잠금이 해제됩니다. (버그 #21697821)

  • 가상 열이 있는 ALTER TABLE에 대한 메모리 손상이 해결되었습니다. (버그 #24961167, 버그 #24960450)

  • 복제: 다중 스레드 복제본에서 slave_pending_jobs_size_max보다 큰 트랜잭션을 처리해야 하는 경우 이 크기를 사용하여 작은 대기열 크기로 다중 스레드 복제본을 구성할 수 없었습니다. slave_pending_jobs_size_max보다 큰 모든 패킷은 패킷이 slave_max_allowed_packet으로 설정된 제한보다 작은 경우에도 ER_MTS_EVENT_BIGGER_PENDING_JOBS_SIZE_MAX 오류와 함께 거부되었습니다. 이 수정을 적용하면 slave_pending_jobs_size_max가 하드 제한이 아닌 소프트 제한이 됩니다. 패킷 크기가 slave_pending_jobs_size_max를 초과하지만 slave_max_allowed_packet보다 작은 경우 모든 복제본 작업자의 대기열이 빌 때까지 트랜잭션이 보류된 후 처리됩니다. 모든 후속 트랜잭션은 대규모 트랜잭션이 완료될 때까지 보류됩니다. 따라서 복제본 작업자의 대기열 크기는 제한되지만 경우에 따라 더 큰 트랜잭션을 허용할 수 있습니다. (버그 #21280753, 버그 #77406)

  • 복제: 다중 스레드 복제본을 사용할 때 적용자 오류에 표시되는 작업자 ID 데이터가 성능 스키마 복제 테이블에 표시된 데이터와 일치하지 않았습니다. (버그 #25231367)

  • 복제: -GTID-mode=on, -log-bin=off로 실행하고 -를 사용하는 GTID 기반 복제 복제본에서 무시해야 할 오류가 발생했을 때 제대로 업데이트되지 않아 동기화가 제대로 이루어지지 않았습니다. slave-skip-errors Exec_Master_Log_Pos Exec_Master_Log_Pos Read_master_log_pos GTID_NEXT가 지정되지 않은 경우 복제본은 단일 문 트랜잭션에서 롤백할 때 GTID 상태를 업데이트하지 않습니다. 트랜잭션이 완료되었지만 GTID 상태가 다르게 표시되므로 Exec_Master_Log_Pos가 업데이트되지 않습니다. 이 수정은 GTID_NEXT가 지정된 경우에만 트랜잭션 롤백 시 GTID 상태 업데이트 제한을 제거합니다. (버그 #22268777)

  • 복제: 바이너리 로깅이 사용 중지된 경우 부분적으로 실패한 문에 자동 생성되거나 지정된 GTID가 올바르게 사용되지 않았습니다. 이 수정을 적용하면 이진 로깅이 사용 중지된 경우 부분적으로 실패한 DROP TABLE, 부분적으로 실패한 DROP USER 또는 부분적으로 실패한 DROP VIEW에 관련 GTID가 각각 사용되고 @@GLOBAL.GTID_EXECUTEDmysql.gtid_executed 테이블에 저장됩니다. (버그 #21686749)

  • 복제: MySQL 5.7을 실행하는 복제본에서 MySQL 5.5의 일부가 아닌 server_uuid 검색 중에 발생하는 오류로 인해 MySQL 5.5 소스에 연결할 수 없었습니다. 이 문제는 server_uuid 검색 방법의 변경으로 인해 발생했습니다. (버그 #22748612)

  • 복제: 이전에 실행된 GTID 트랜잭션을 자동으로 건너뛰는 GTID 트랜잭션 건너뛰기 메커니즘이 XA 트랜잭션에 대해 올바르게 작동하지 않았습니다. (버그 #25041920)

  • 잘못된 트랜잭션 ID가 지정되어 실패한 ">XA ROLLBACK 문이 올바른 트랜잭션 ID로 바이너리 로그에 기록되었기 때문에 복제 복제본의 작업에 사용될 수 있었습니다. 이제 바이너리 로깅이 수행되기 전에 오류 상황이 확인되고 실패한 XA ROLLBACK 문이 로깅되지 않습니다. (버그 #26618925)

  • 복제: 소스 로그 파일 이름 및 소스 로그 위치를 지정하지 않은 CHANGE MASTER TO 문을 사용하여 복제본을 설정한 다음 START SLAVE가 실행되기 전에 종료한 다음 옵션 relay-log-recovery 세트를 사용하여 다시 시작하면 복제가 시작되지 않습니다. 이 문제는 릴레이 로그 복구가 시도되기 전에 수신기 스레드가 시작되지 않아 릴레이 로그에서 소스 로그 파일 이름과 소스 로그 위치를 제공하는 데 필요한 로그 회전 이벤트를 사용할 수 없기 때문에 발생했습니다. 이제 이 상황에서 복제본은 릴레이 로그 복구를 건너뛰고 경로를 로깅한 다음 복제를 시작합니다. (버그 #28996606, 버그 #93397)

  • 복제: 행 기반 복제에서 utf8mb3 열이 있는 테이블을 utf8mb4 문자 집합으로 정의된 열이 있는 동일한 정의의 테이블로 복제할 때 필드 길이가 잘못 표시된 메시지가 반환되었습니다. (버그 #25135304, 버그 #83918)

  • 복제: GTID를 사용 중인 복제 복제본에서 RESET SLAVE 문이 실행되는 경우 기존 릴레이 로그 파일이 제거되지만 채널에 대해 수신된 GTID 세트가 지워지기 전에 새로운 대체 릴레이 로그 파일이 생성되었습니다. 따라서 이전 GTID 세트가 새 릴레이 로그 파일에 PREVIOUS_GTIDS 이벤트로 기록되고 이로 인해 두 서버에 설정된 gtid_executed가 모두 비어 있음에도 불구하고 복제본에 소스보다 많은 GTID가 있다는 내용의 치명적 오류가 복제에서 발생합니다. 이제 RESET SLAVE가 실행되면 새 릴레이 로그 파일이 생성되기 전에 수신된 GTID 세트가 지워지므로 이러한 상황이 발생하지 않습니다. (버그 #27411175)

  • 복제: GTID를 복제에 사용하는 경우 동일한 GTID의 빈 트랜잭션 또는 대체 트랜잭션을 삽입하는 권장 방법으로 구문 분석 오류(ER_PARSE_ERROR)를 야기한 문이 포함된 트랜잭션을 수동으로 건너뛸 수 없습니다. 이 작업을 수행하면 복제본에서 GTID를 이미 사용된 것으로 식별하여 해당 GTID를 공유하는 원치 않는 트랜잭션을 건너뛰어야 합니다. 그러나 구문 분석 오류의 경우 GTID를 건너뛰어야 하는지 여부를 확인하기 전에 문이 구문 분석되므로 의도가 트랜잭션을 건너뛰는 것이라 할지라도 구문 분석 오류로 인해 복제 적용자 스레드가 중지되었습니다. 이 수정에서는 GTID가 이미 사용되었으므로 해당 트랜잭션을 건너뛰어야 하는 경우 복제 적용자 스레드가 구문 분석 오류를 무시합니다. 이 동작 변경은 mysqlbinlog에 의해 생성된 바이너리 로그 출력으로 구성되는 워크로드에는 적용되지 않습니다. 이 상황에서는 건너뛴 트랜잭션 바로 뒤에 오는 트랜잭션에 구문 분석 오류가 있는 경우 오류가 생성되어야 하지만 자동으로 건너뛸 위험이 있습니다. (버그 #27638268)

  • 복제: GTID에 대한 SQL 스레드에서 부분 트랜잭션을 건너뛸 수 있습니다. (버그 #25800025)

  • 복제: WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS()에 제공된 제한 시간 파라미터가 음수 또는 분수인 경우 서버가 예기치 않은 방식으로 동작합니다. 이 수정에서는 다음과 같이 수정됩니다.

    • 분수 제한 시간 값을 반올림 없이 있는 그대로 읽습니다.

    • 서버가 엄격한 SQL 모드에 있는 경우 음수 제한 시간 값이 오류와 함께 거부됩니다. 서버가 엄격한 SQL 모드에 있지 않은 경우 함수가 대기 없이 즉시 NULL을 반환한 다음 경고를 생성합니다. (버그 #24976304, 버그 #83537)

  • 복제: 분수 값이 포함된 제한 시간(예: 1.5)에 WAIT_FOR_EXECUTED_GTID_SET() 함수가 사용된 경우 제한 시간이 근사한 정수(초)로 반내림되고 값이 1초 미만(예: 0.1)인 경우 0으로 반내림되었음을 의미하는 캐스팅 로직 오류가 발생했습니다. 이제 캐스팅 로직이 수정되어 제한 시간 값이 원래 지정된 대로 반올림/반내림 없이 적용됩니다. Dirkjan Bussink 씨의 기여에 감사드립니다. (버그 #29324564, 버그 #94247)

  • GTID를 사용하는 경우 다중 문 트랜잭션 내의 연결이 끊긴 XA 트랜잭션의 XA COMMIT에서 어설션이 발생했습니다. (버그 #22173903)

  • 복제: gtid_next 값이 수동으로 설정된 경우 알 수 없는 트랜잭션 식별자에 대해 XA ROLLBACK 문이 실행되면 디버그 빌드에서 어설션이 발생했습니다. 이제 XA ROLLBACK 문이 오류와 함께 실패하는 경우 서버에서 GTID 상태 업데이트를 시도하지 않습니다. (버그 #27928837, 버그 #90640)

  • 여러 CASE 함수가 ORDER BY 절에 사용되는 경우 잘못된 정렬 순서 문제가 수정됩니다(Bug#22810883).

  • 정렬을 사용한 일부 쿼리는 최적화 중에 초기화되지 않은 열에 액세스하여 서버가 종료될 수 있습니다. (버그 #27389294)

Aurora MySQL 버전 1과의 비교

다음 Amazon Aurora MySQL 기능은 Aurora MySQL 버전 1(MySQL 5.6과 호환됨)에서 지원되지만 현재 이 기능은 Aurora MySQL 버전 2(MySQL 5.7과 호환됨)에서는 지원되지 않습니다.

MySQL 5.7 호환성

이 Aurora MySQL 버전은 MySQL 5.7과 연결성이 호환되며 JSON 지원, 공간 인덱스 및 생성된 열과 같은 기능이 포함되어 있습니다. Aurora MySQL은 z축 곡선을 사용하는 공간 인덱싱의 기본 구현을 사용하여 MySQL 5.7보다 20배 이상 높은 쓰기 성능과 10배 이상 높은 읽기 성능을 공간 데이터 집합에 제공합니다.

이 Aurora MySQL 버전은 현재 다음과 같은 MySQL 5.7 기능을 지원하지 않습니다.

  • 그룹 복제 플러그인

  • 페이지 크기 증가

  • 시작 시 InnoDB 버퍼 풀 로딩

  • InnoDB 풀 텍스트 구문 분석기 플러그인

  • 멀티 소스 복제

  • 온라인 버퍼 풀 크기 조정

  • 암호 확인 플러그인

  • 쿼리 다시 쓰기 플러그인

  • 복제 필터링

  • CREATE TABLESPACE SQL 문