MySQL 5.7.37 릴리즈 노트 2022-01-18

MySQL

MySQL 5.7.37 릴리즈 노트 입니다.

감사 로그 노트 (Audit Log Notes)

  • 이전에는 MySQL Enterprise Audit에서 기록한 각 이벤트에 SQL 문 리터럴 텍스트가 포함되었습니다. 문에 중요한 정보가 포함될 수 있으므로 대안을 제공하기 위해 감사 로그 필터링 언어는 이제 리터럴 텍스트 대신 문의 다이제스트 로깅을 지원합니다.

    예를 들어, 이 문을 기록하는 대신 다음과 같이 하십시오.
SELECT * FROM orders WHERE some_sensitive_column=1234567

감사 로그 플러그인은 이 다이제스트를 기록할 수 있습니다.

SELECT * FROM `orders` WHERE `some_sensitive_column` = ?

이것은 실제 데이터 값이 아닌 파라미터 마커가 나타나는 준비된 문에 대해 이미 기록된 것과 유사합니다.다이제스트 로깅을 수행하려면 Replacement of Event Field Values에서 설명한 대로 문 리터럴 텍스트를 해당 다이제스트로 바꾸는 감사 필터 정의를 사용합니다. 텍스트 대체는 초기 감사 단계(필터링 중)에 발생하므로 문 리터럴 텍스트 또는 다이제스트 값을 로깅할지 여부는 나중에 작성된 로그 형식(감사 로그 플러그인이 XML을 생성하는지 JSON 출력을 생성하는지 여부)에 관계없이 적용됩니다. (Bug #31482609)

컴파일 노트 (Compilation Notes)

  • 시스템 curl 라이브러리에 연결하지 않고 컬이 포함된 이진 패키지는 curl 7.80.0을 사용하도록 업그레이드되었습니다. (Bug #33576431)

SQL 함수 및 연산자 노트 (SQL Function and Operator Notes)

  • MBRContains() 함수를 사용하는 쿼리에 사용 가능한 공간 인덱스가 모두 사용된 것은 아닙니다. (Bug #32975221)참조: 이 이슈는 Bug #29770705의 회귀 입니다.
  • FORMAT() 함수는 es_ES 또는 es_MX 로케일이 지정된 경우 수천 개의 구분 기호와 구분 기호 간의 그룹화를 표시하지 않고 형식화된 숫자를 반환했습니다. (Bug #31374305)

패키지 노트 (Packaging Notes)

  • MySQL 다운로드 가능 패키지에 서명하는 데 사용되는 GnuPG 빌드 키가 업데이트되었습니다. 이전 GnuPG 빌드 키는 2022-02-16에 만료되도록 설정되어 있습니다. GnuPG 서명 검사를 사용하여 MySQL 다운로드 가능 패키지의 무결성 및 신뢰성을 확인하거나 공용 GnuPG 빌드 키의 사본을 얻는 방법에 대한 자세한 내용은 Signature Checking Using GnuPG를 참조하십시오.GnuPG 키 업데이트로 인해 ‘repo.mysql.com’을 사용하도록 구성된 시스템에서 apt 또는 yum를 사용하여 MySQL 5.7.37 이상 또는 MySQL 8.0.28 이상으로 업그레이드할 때 서명 확인 오류가 발생할 수 있습니다. 이 문제를 해결하려면 다음 방법 중 하나를 사용하십시오.
    1. https://dev.mysql.com/downloads/에서 MySQL APT 또는 YUM 저장소 설정 패키지를 수동으로 다시 설치합니다.
    2. MySQL GnuPG 공개 키를 다운로드하여 시스템 GPG 키링을 추가합니다.
    (Bug #33587308)

버그 수정 (Bugs Fixed)

  • InnoDB: InnoDB 소스의 buf_validate() 함수가 최적화되어 디버그 빌드의 성능이 향상되었습니다.Hobert Lu 님께 감사드립니다. (Bug #33417058, Bug #104967)
  • Partitioning: 생성된 열 식에 결정적이지 않은 함수를 사용하여 테이블을 만들 수는 없지만 모든 경우 이 작업이 수행되지는 않았습니다. 하나 이상의 ALTER TABLE 문을 사용하여 하나 이상의 생성된 열이 있는 파티션된 테이블에 도착할 수 있습니다. 이 테이블에 대해 SHOW CREATE TABLE 를 실행하여 얻은 CREATE TABLE 문을 실행하려고 할 때 MySQL은 분할 식 자체가 합법임에도 불구하고 문제가 있는 열이 아닌 분할 식을 참조하는 잘못된 오류 메시지와 함께 문을 거부했습니다.이는 생성된 열에 대해 정의된 안전하지 않은 식(내부 변수 thd->safe_to_cache_query 에서)이 확인되었기 때문에 발생했으며 나중에 파티션 식이 문제가 발생한 열을 참조하지 않아도 오류가 발생했습니다. 표현 이제 이러한 경우 파티션 함수를 구문 분석하기 전에 thd->safe_to_cache_query를 재설정합니다.생성된 열에서 특정 비결정적 함수(AES_ENCRYPT(), AES_DECRYPT(), RANDOM_BYTES())의 사용을 허용하는 문제는 별도로 처리됩니다. (Bug #29268656)참조: 참고 사항: Bug #32592320.
  • Partitioning: 파티션된 테이블의 기본 키 이외의 인덱스를 사용하는 쿼리로 인해 과도한 CPU 로드가 발생하는 경우가 있습니다. (Bug #104576, Bug #33238010)
  • Replication: 복제본 서버에서 PAD_CHAR_TO_FULL_LENGTH SQL 모드를 사용하도록 설정하면 복제 메타데이터 리포지토리 테이블에서 복제 채널의 이름에 후행 공백이 추가되어 해당 데이터를 사용하여 채널을 식별하는 복제 작업에 오류가 발생할 수 있습니다. 이제 이 문제는 MySQL 8.0에서는 문자 열에 VARCHAR를 사용하고 MySQL 5.7에서는 해당 테이블을 읽을 때 SQL 모드를 사용하지 않도록 설정하여 해결되었습니다. Brian Yue에게 감사합니다. (Bug #33213841)
  • MySQL 5.7은 MySQL 5.6 또는 MySQL 8.0과 동일한 방식으로 thread_stack 변수를 처리하지 않았습니다. (Bug #33362907)
  • 경우에 따라서는 허용되지 않는 SERIAL 유형의 열이 생성될 수 있습니다.자세한 내용은 Numeric Data Type SyntaxCREATE TABLE and Generated Columns를 참조하십시오. (Bug #33141966)
  • 암시적으로 또는 명시적으로 트랜잭션을 커밋하는 문은 트리거 또는 저장된 함수 내에서 허용되지 않습니다. 이 경우 CREATE TRIGGERCREATE FUNCTION 모두 오류(ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG)를 보고해야 하지만 DROP TABLESPACE를 올바르게 처리하지 못했습니다. (Bug #33141958)
  • 온라인 키 링 마이그레이션에 사용된 MySQL 세션이 마이그레이션 완료 후 정상적으로 닫히지 않아 연결 취소(Aborted connection) 노트가 오류 로그에 인쇄됩니다. (Bug #32989716)
  • SHOW PROCESSLIST 는 준비된 문을 삭제하는 과정에 있는 연결에 속한 쿼리 문자열에 액세스할 때 여유 메모리를 읽을 수 있습니다. (Bug #28142052)
  • ALTER USER ... IDENTIFIED WITH ... BY에 대한 권한이 올바르게 확인되지 않았습니다. (Bug #27923149, Bug #29882299)