MySQL 5.7.31 릴리즈 노트 2020-07-13

MySQL

MySQL 5.7.31 릴리즈 노트 입니다.

환경 설정 노트 (Configuration Notes)

  • tcmalloc은(는) 더 이상 mysqld_safe --malloc-lib 옵션에 허용되는 값이 아닙니다. (Bug #31372027)

패키지 노트 (Packaging Notes)

  • MySQL에 번들로 제공된 libevent 라이브러리가 버전 2.1.11로 업그레이드되었습니다. 또한 WITH_LIBEVENT CMake 옵션의 경우 다음과 같은 두 가지 사항이 변경되었습니다.
    1. yes는 더 이상 system의 동의어로 허용되지 않습니다. 대신 system을 사용합니다.
    2. system은(는) 지정되었지만 시스템 libevent를 찾을 수 없는 경우 번들 버전이 누락된 시스템 라이브러리 대신 더 이상 사용되지 않으며 대신 오류가 발생합니다.
    (Bug #30926742)

보안 노트 (Security Notes)

  • Incompatible Change: 이제 INFORMATION_SCHEMA.FILES 테이블에 액세스하려면 PROCESS 권한이 필요합니다.이 변경 사항은 FILES 테이블의 테이블스페이스 정보에 액세스하는 mysqldump 명령 사용자에게 영향을 미치므로 이제 PROCESS 권한도 필요합니다. 테이블스페이스 정보를 덤프할 필요가 없는 사용자는 mysqldump--no-tablespaces 옵션으로 호출하여 이 요구 사항을 해결할 수 있습니다. (Bug #30350829)
  • MySQL Server의 연결된 OpenSSL 라이브러리가 버전 1.1.1g로 업데이트되었습니다. 새 OpenSSL 버전에서 해결된 문제는 https://www.openssl.org/news/cl111.txthttps://www.openssl.org/news/vulnerabilities.html에서 설명합니다. (Bug #31296697)

버그 수정 (Bugs Fixed)

  • InnoDB: 모듈 소유자로 정의된 카운터의 INNODB_METRICS 테이블 AVG_COUNT_RESET 값이 NULL을 보고했습니다. METRIC_AVG_VALUE_RESET 필드가 NULL로 잘못 표시되었습니다.Fungo Wang님이 많은 기여를 해주셔서 감사합니다. (Bug #31084706, Bug #98990)
  • InnoDB: 기록 목록 길이가 0에 가까울 때 삭제 스레드 작업이 과도하여 CPU 리소스가 낭비되고 뮤텍스 경합이 발생했습니다. (Bug #30875956)
  • InnoDB: “ibuf cursor restoration fails” 오류로 인해 서버에 간헐적으로 장애가 발생했습니다. (Bug #30770380, Bug #91033)
  • InnoDB: 종료하는 동안 치명적인 “page still fixed or dirty” 오류가 발생했습니다. (Bug #29759555, Bug #95285)참조: 이 문제는 Bug #29207450의 회귀입니다.
  • Partitioning: ORDER BY를 사용한 분할된 테이블에 대한 쿼리가 다음 조건에서 정렬되지 않은 결과를 반환했습니다.:
    • 테이블에는 열 중 하나에 접두사가 있는 복합 인덱스가 있습니다.
    • 쿼리의 WHERE 절에 접두사 열에 동등 조건이 포함되어 있습니다.
    • 접두사가 있는 열은 인덱스에서 맨 왼쪽에 있는 열입니다.
    • ORDER BY에 사용된 열은 인덱스의 맨 오른쪽 열입니다.
    • 이 지수는 ORDER BY를 처리하는 데 사용되었습니다.
    제안을 해주신 Quanan Han 님게 감사드립니다. (Bug #84070, Bug #25207522)
  • Replication: 복제 원본 서버가 종료된 후 재시작되면, MEMORY 표는 비어 있게 됩니다. 이 효과를 복제본에 복제하기 위해, 시작 후 원본이 지정된 MEMORY 테이블을 처음 사용할 때, 해당 테이블에 대한 DELETE 문을 이진 로그에 기록하여 테이블을 비워야 함을 복제본에게 알립니다. 이전에 생성된 DELETE 문은 현재 세션의 이진 로그 문 캐시에 기록되었으며, 이로 인해 동일한 GTID로 다른 문과 함께 기록되거나 BEGINCOMMIT 문 없이 기록될 수 있습니다. 또한 경우에 따라 생성된 DELETE 문이 GTID를 트리거한 트랜잭션에 사용할 수 있습니다. 생성된 DELETE 문은 이제 BEGINCOMMIT 문과 함께 기록되며 결과 트랜잭션은 문 캐시에 기록되는 즉시 이진 로그에 플러시되므로 항상 자체 GTID를 수신하고 다른 트랜잭션과 별도로 유지됩니다. (Bug #30527929, Bug #25681518, Bug #77729)
  • Replication: 그룹 구성원 자격 변경과 동시에 발생한 경우 로컬 그룹 구성원에 대한 통계에 대한 그룹 복제에서 성능 스키마로의 내부 쿼리가 실패했습니다. 이 문제를 해결하기 위해 내부 쿼리에 대한 잠금이 개선되었습니다.(Bug #30049349, Bug #30791583, Bug #30963553)
  • Replication: 시스템 변수 binlog_transaction_dependency_trackingbinlog_transaction_dependency_history_size 와 관련된 교착 시나리오에 대해 MySQL 8.0.14 및 MySQL 5.7.25에서 수정한 경우 트랜잭션 종속성 추적에 사용되는 쓰기 세트 기록이 동시 업데이트에서 보호되지 않는 부작용이 있었습니다. 이제 쓰기 세트 기록과 추적 모드는 액세스할 때마다 올바르게 잠깁니다. (Bug #29719364, Bug #95181)참조: 참고 항목: Bug #28511326, Bug #91941.
  • -DWITH_EDITLINE=system로 구성하면 이전 라이브러리 버전에 대해 컴파일 실패가 발생했습니다. (Bug #31366715)
  • 이전 MySQL 배포에서 번들 libedit 라이브러리를 업그레이드하면 해당 라이브러리를 사용하는 빌드에 문제가 발생하여 mysql 클라이언트의 CTRL+C(SIGINT)를 적용하려면 다음과 같은 Enter가 필요합니다. (Bug #31360025)
  • 변수에 CONCAT('') 또는 CONCAT_WS('')를 할당하면 변수가 빈 문자열이 아닌 NULL로 설정됩니다. (Bug #31320716, Bug #99485, Bug #31413167, Bug #99722)
  • gen_range() 사용자 정의 함수는 인수를 잘못 처리하여 서버를 종료할 수 있습니다. (Bug #30763294)
  • UPDATE 처리 중에 내부 메모리 테이블을 “InnoDB”로 변환하면 키 길이 오류가 발생할 수 있습니다. (Bug #30674616)
  • ‘*'(단일 별표 문자) 열을 정의할 수 있지만 SELECT '*'SELECT *와 동일하게 처리되어 쿼리에서 이 열만 선택할 수 없습니다. 즉, 별표 문자가 백틱으로 둘러싸인 경우에도 모든 테이블 열 목록으로 확장되었습니다. (Bug #30528450)
  • 내부 packet-length 함수가 잘못된 정수 형식의 값을 반환했습니다. (Bug #30139031)
  • mysqldumpINSERT 문 길이 계산에는 VARBINARY 문자열에 사용되는 ‘_binary’ 문자 집합 도입기가 고려되지 않았습니다. (Bug #29998457, Bug #96053)
  • 내부 메서드 ‘Field_tiny::pack()’이(가) 항상 예상대로 경계 검사를 수행하지 않았습니다.(Bug #29948029)참조: 참고 항목: Bug #31591391.
  • mysql_store_result() 에서 잘못된 데이터 패킷을 감지하지 못할 수 있습니다.(Bug #29921423)
  • 첫 번째 테이블의 키를 업데이트한 다중 테이블 UPDATE에서 임시 테이블 전략을 사용할 경우 임시 테이블에 중복 항목을 쓴 후 ‘레코드를 찾을 수 없습니다’ 오류가 발생할 수 있습니다. (Bug #28716103)
  • 최적화 프로그램에서 유사 테이블에 테이블로 액세스하려고 하면 예기치 않은 서버 동작이 발생할 수 있습니다. (Bug #28651673)
  • 서버가 쿼리를 최적화할 때 GROUP BY가 있는 하위 쿼리를 실수로 제거하기도 했는데, 이는 외부 선택에서 이 하위 쿼리를 사용한 경우에도 마찬가지입니다. 이 문제는 하위 쿼리가 집계 함수를 사용한 경우에도 발생할 수 있습니다. (Bug #28240054)
  • NAME_CONST() 함수의 강압성이 잘못 평가되었습니다.(Bug #26319675)
  • Optimizer가 값을 가져오기 위해 생성된 열의 인덱스를 선택할 때 잘못된 결과가 발생할 수 있습니다. (Bug #24345509, Bug #29451999)