MySQL 5.7.36 릴리즈 노트 2021-10-19

MySQL

MySQL 5.7.36 릴리즈 노트 입니다.

보안 노트 (Security Notes)

버그 수정 (Bugs Fixed)

  • Incompatible Change: 보기의 모든 SELECT 문에서 쿼리 요약은 보기 정의를 기반으로 했습니다. 결과적으로 서로 다른 쿼리가 동일한 다이제스트를 가지며 성능 스키마 테이블 events_statements_summary_by_digest에 함께 집계되었으므로 해당 테이블의 통계를 고유한 SELECT 문을 구분하는 데 사용할 수 없었습니다. 이제 보기의 각 SELECT 문장에 대한 쿼리 요약은 보기 정의가 아닌 SELECT를 기반으로 합니다. 이렇게 하면 events_statements_summary_by_digest 테이블에서 SELECT 문을 구분할 수 있습니다. 그러나 쿼리 요약을 사용하는 도구의 경우 이 변경 사항을 고려하여 약간의 조정이 필요할 수 있습니다. 예를 들어 MySQL Enterprise Firewall 및 쿼리 다시 쓰기 플러그인은 쿼리 요약에 의존하므로 보기와 연결된 기존 규칙을 업데이트해야 할 수 있습니다. (Bug #27540213, Bug #89559, Bug #31761802)
  • InnoDB: 로그 잘라내기 실행 취소가 활성화된 경우(innodb_undo_log_truncate=ON) MySQL 5.6에서 MySQL 5.7.34 이전 버전으로 업그레이드한 후 로그 잘라내기 실행 취소 작업이 시작되면 교착 상태가 발생하고 궁극적으로는 실패가 발생할 수 있습니다. MySQL 5.7.35(Bug #32800020)에 도입된 패치는 MySQL 5.6에서 MySQL 5.7.35 이상으로 직접 업그레이드할 경우의 교착 문제를 해결했지만 MySQL 5.6에서 MySQL 5.7.34 또는 그 이전 버전으로 업그레이드하기 전에 MySQL 5.35 이상으로 업그레이드된 인스턴스의 경우 이 문제가 지속되었습니다. 이 문제를 해결하기 위해 이제 문제가 있는 pre-5.7.2 롤백 세그먼트 슬롯이 확인되고 오류 로그에 다음과 유사한 메시지가 기록되고 시작 시 재설정됩니다.[Note] InnoDB: Found duplicate reference rseg: 33 space: 1 page: 3
    [Note] InnoDB: Reset pre-5.7.2 rseg: 1 after duplicate is found.pre-5.7.2 롤백 세그먼트 슬롯에 제거할 실행 취소 데이터가 없으면 다음과 유사한 메시지가 표시됩니다.[Note] InnoDB: Successfully reset 32 pre-5.7.2 rseg slots.pre-5.7.2 롤백 세그먼트 슬롯에서 실행 취소 데이터가 발견되면 느린 종료 후 다시 시작하라는 다음과 유사한 메시지가 표시됩니다.[Note] InnoDB: pre-5.7.2 rseg: 2 holds data to be purged.
    History length: 1. Recommend slow shutdown with innodb_fast_shutdown=0 and restart(Bug #33181859)
  • InnoDB: 활성 트랜잭션에서 사용하는 동안 실행 취소 테이블스페이스를 잘라내면 어설션 오류가 발생했습니다. 트랜잭션이 중간에 완료된 것으로 표시되어 잘라내기 작업이 허용되었습니다. (Bug #33162828)
  • InnoDB: 상위 테이블에서 행을 삭제하거나 업데이트하면 가상 열 값을 NULL로 설정한 하위 테이블에서 계단식 SET NULL 작업이 시작되었습니다. 가상 열 값은 기본 열 값에서 파생되어야 합니다.Yin Peng님에게 감사를 드립니다. (Bug #33053297)
  • InnoDB: InnoDB 복구 프로세스는 복구 중인 데이터에 페이지 압축이 적용되었음을 인식하지 못하여 redo 로그 적용 단계에서 테이블스페이스 데이터 파일의 크기가 증가하여 디스크 가득 상태에 도달하는 시스템의 복구 실패를 초래할 수 있습니다. (Bug #32771259)
  • Replication: 자동 포지셔닝에 필요한 GTID가 제거되었을 때 MySQL Replication에서 발생하는 오류 메시지가 잘못 할당되거나 스크램블될 수 있습니다. (Bug #32965864)
  • Replication: mysqldump를 사용하여 가져온 덤프를 복원한 후 gtid_executedgtid_purged GTID 세트의 내용이 지속되지 않았습니다. 이제 gtid_purged GTID 집합이 작성된 후 mysql 스키마(mysql.gtid_executed 테이블 포함)가 삭제되지 않도록 덤프 파일 순서가 변경되었습니다. mysqldump에 대한 새 옵션 --skip-mysql-schema가 추가되어 mysql 스키마를 삭제하지 않도록 선택할 수 있습니다. (Bug #32843447)
  • JSON: JSON 값을 텍스트로 변환하면 대상 문자열이 선형으로 증가하여 불필요하게 많은 수의 재할당이 발생합니다. 이제 이 프로세스에서는 기하급수적인 증가를 사용하여 필요한 할당 수를 줄입니다.이 수정은 원래 MySQL 8.0에 표시되었으며 Annirudh Prasad가 MySQL 5.7로 백포팅했습니다. (Bug #103790, Bug #32919524)참조: 참고사항: Bug #28949700.
  • 전체 텍스트 인덱스가 있는 여러 테이블에서 동시 삽입 작업으로 인해 많은 수의 전체 텍스트 인덱스 동기화 요청이 발생하여 메모리 부족 상태가 발생했습니다. (Bug #32831765, Bug #103523)
  • 쿼리가 집계에 임시 테이블을 사용할 경우 항목별 그룹은 임시 테이블의 고유한 제약 조건으로 사용됩니다. 항목 값이 이미 있으면 행이 업데이트되고, 그렇지 않으면 새 행이 임시 테이블에 삽입됩니다. 항목에 결과 필드 또는 참조 항목이 있으면 두 번 평가하여 임시 테이블에 결과가 있는지 확인하고 없으면 삽입할 행을 구성하는 동안 다시 평가했습니다. 항목별 그룹이 결정적이지 않은 경우, 존재 여부를 확인하는 데 사용되는 결과 값이 삽입을 시도한 결과와 달라서 값이 테이블에 이미 있으면 삽입이 거부됩니다.우리는 결정적이지 않은 모든 항목의 해시를 고유한 제약으로 사용하여 이 문제를 수정하여 해시가 한 번만 평가되도록 합니다. (Bug #32552332)
  • SHOW GRANTS 문장의 견적 처리가 개선되었습니다. (Bug #31716706)