---
title: "MySQL 8.0.36 릴리스 노트"
description: "MySQL 8.0.36 Community Server 릴리스 노트를 한국어로 번역하고, DBA가 참고해야 할 핵심 내용을 함께 정리하였습니다."
tags: [ MySQL, 릴리스노트 ]
image: "mysql-release-note.png"
author: "Oracle"
published: "2024-01-16"
updated: ""
source_url: "https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-36.html"
---

## DBA를 위한 핵심 내용

MySQL 8.0.36은 기능 추가보다 운영 안정성·보안·패키징 영향이 큰 유지보수 릴리스입니다. DBA 관점에서는 저장 프로그램/Performance Schema 오버헤드 완화, InnoDB AHI 성능 회귀 보정, 복제·Group Replication 장애 수정이 긍정적이지만, 저장소 GPG 키 교체로 패키지 업그레이드가 실패할 수 있고, Google Cloud가 정리한 MySQL 8.0.36 이하 `GROUP BY`/TempTable 성능 이슈도 함께 점검해야 합니다. ([Google Cloud Known Issues](https://docs.cloud.google.com/sql/docs/mysql/known-issues-in-mysql-8.0-minor-versions))

1. 패키지 업그레이드 전 `repo.mysql.com` GPG 키 교체(`A8D3785C`)를 반영하십시오. 기존 키 만료로 `apt`/`yum` 서명 검증 실패가 발생할 수 있으므로 MySQL APT/YUM repo 설정 패키지 재설치 또는 새 공개키 등록을 사전 작업에 포함해야 합니다.
2. InnoDB AHI 해시 함수 성능 회귀와 보조 인덱스 손상 가능성이 수정되었습니다. 8.0.30 이후 AHI 관련 CPU 상승·성능 저하를 경험한 환경은 업그레이드 후 AHI 사용 여부, 핫 인덱스, `SHOW ENGINE INNODB STATUS` 지표를 비교하는 것이 좋습니다.
3. `CREATE TABLE ... SELECT` 복제 중 중지 시 서버 종료, 오류 상태 채널에서 강제 `START GROUP_REPLICATION` 시 비정상 종료 가능성이 수정되었습니다. HA 토폴로지에서는 롤링 업그레이드 전후 failover·rejoin 절차를 재검증하십시오.
4. Performance Schema의 저장 프로시저 마이크로 명령어 계측(`statement/sp/%`, `statement/sp/stmt` 제외)이 기본 비활성화됩니다. 저장 프로그램 상세 추적에 의존하는 모니터링은 업그레이드 후 수집 항목 감소를 확인하고 필요한 계측만 명시적으로 활성화해야 합니다.
5. PAM 인증 디버그 로그는 기본적으로 비밀번호를 더 이상 출력하지 않습니다. 보안상 개선이지만, 장애 분석 절차에서 민감정보 포함 로그를 기대하던 운영 스크립트는 `AUTHENTICATION_PAM_LOG=PAM_LOG_WITH_SECRET_INFO`가 필요한지 별도 승인 절차와 함께 검토하십시오.
6. OpenSSL 번들 버전이 3.0.12로 갱신되었습니다. TLS 정책, FIPS, 오래된 클라이언트/암호군 호환성을 사용하는 환경은 사전 연결 테스트가 필요합니다.

## Audit Log 관련 사항

- 일부 경우 [`audit_log_read`](https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/audit-log-reference.html#function_audit-log-read)`(` [`audit_log_read_bookmark`](https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/audit-log-reference.html#function_audit-log-read-bookmark)`())`를 호출하면 Out of memory 오류가 발생했습니다. (Bug #35957453)

## 컴파일 관련 사항

- **Microsoft Windows:** MySQL이 Visual Studio 2022를 사용하여 올바르게 컴파일되지 않았습니다. (Bug #35967676)
- `-DWITH_ZLIB=system` 검사를 개선했습니다. (Bug #35968195)
- Linux에서 컴파일할 때 OpenSSL 3 라이브러리에 대해 `no-error=deprecated-declarations` 플래그를 `no-deprecated-declarations`로 변경했습니다.

  기여해 주신 karry zhang께 감사드립니다. (Bug #112209, Bug #35755328)

## Optimizer 관련 사항

- 사용된 해싱 알고리즘은 고유성을 확인하기 위해 `HASH` 필드를 사용할 때 성능이 좋지 않았습니다. (Bug #109548, Bug #34959356)

## 패키징 관련 사항

- **중요한 변경 사항:** MySQL 다운로드 가능 패키지에 서명하는 데 사용되는 GnuPG 빌드 키(`A8D3785C`)가 업데이트되었습니다. 이전 GnuPG 빌드 키(`3A79BD29`)는 2023-12-14에 만료되었습니다. GnuPG 서명 검사를 사용하여 MySQL 다운로드 가능 패키지의 무결성과 진위를 확인하는 방법에 대한 정보 또는 공개 GnuPG 빌드 키 사본을 얻으려면 [Signature Checking Using GnuPG](https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/checking-gpg-signature.html)를 참조하십시오.

  GnuPG 키 업데이트로 인해, `repo.mysql.com`을 사용하도록 설정된 시스템은 `apt` 또는 `yum`을 사용하여 MySQL 8.0.36 이상 또는 MySQL 8.3.0 이상으로 업그레이드할 때 서명 확인 오류를 보고할 수 있습니다. 이 문제를 해결하려면 다음 방법 중 하나를 사용하십시오:

  - [https://dev.mysql.com/downloads/](https://dev.mysql.com/downloads/)에서 MySQL APT 또는 YUM 저장소 설정 패키지를 수동으로 다시 설치하십시오.
  - MySQL GnuPG 공개 키를 다운로드하고 시스템 GPG 키링에 추가하십시오.

## Performance Schema 관련 사항

- 저장 프로그램을 실행할 때 Performance Schema 계측으로 인해 일부 불필요한 오버헤드가 발생했습니다.

  이 릴리스부터 `statement/sp/stmt`를 제외한 모든 저장 프로시저 마이크로 명령어(`statement/sp/%`)는 기본적으로 비활성화됩니다. (Bug #27934653)
- Performance Schema 문 계측의 성능이 개선되었습니다. 구체적으로, `MESSAGE_TEXT` 데이터 수집이 이제 더 효율적입니다. (Bug #112621, Bug #35916912)

## Pluggable Authentication 관련 사항

- 이번 릴리스부터 PAM authentication 플러그인을 디버깅하는 데 사용되는 `AUTHENTICATION_PAM_LOG` 환경 변수의 동작이 다음과 같이 변경되었습니다:

  - `AUTHENTICATION_PAM_LOG`를 임의의 값으로 설정해도(다음 항목에서 설명하는 경우는 제외) 더 이상 진단 메시지에 비밀번호가 포함되지 않습니다.
  - 진단 메시지에 비밀번호를 포함하려면 `AUTHENTICATION_PAM_LOG=PAM_LOG_WITH_SECRET_INFO`를 설정하십시오.

  자세한 내용은 [PAM Authentication Debugging](https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/pam-pluggable-authentication.html#pam-pluggable-authentication-debugging)을 참조하십시오. (Bug #74313, Bug #20042010)

## 추가되거나 변경된 기능

- **중요한 변경:** OpenSSL 라이브러리가 번들로 제공되는 플랫폼의 경우, MySQL Server에 링크된 OpenSSL 라이브러리가 버전 3.0.12로 업데이트되었습니다. OpenSSL 버전 3.0.12에서 수정된 문제는 [https://openssl-library.org/news/openssl-3.0-notes/](https://openssl-library.org/news/openssl-3.0-notes/)에 설명되어 있습니다. (Bug #36033684)

## 수정된 버그

- **Performance; InnoDB:** `InnoDB` adaptive hash index에서 사용하는 해싱 함수가 MySQL 8.0.30에서 수행된 리팩터링의 의도하지 않은 결과로 더 많은 비용이 들게 되었습니다. (Bug #111538, Bug #35531293)

  References: 이 문제는 다음의 회귀입니다: Bug #81814, Bug #16739204, Bug #23584861.
- **InnoDB:** adaptive hash index (AHI)에서 사용하는 해시 함수가 성능을 높이도록 개선되었습니다. (Bug #35449386)
- **InnoDB:** 시작 중에 change buffer 항목이 있는 경우, 비활성화된 [`innodb_validate_tablespace_paths`](https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/innodb-parameters.html#sysvar_innodb_validate_tablespace_paths) 옵션은 더 이상 강제되지 않으며, 대신 MySQL 서버가 모든 테이블스페이스 검증을 진행합니다. 그렇지 않으면 보조 인덱스가 손상될 수 있었습니다. (Bug #35208990)
- **InnoDB:** 동시 DDL 및 DML 작업 중에 온라인 로그가 너무 크게 증가하면 DDL이 실패할 수 있었습니다. 이 문제를 방지하도록 버퍼 처리가 개선되었습니다. (Bug #35115601)
- **Replication:** Performance Schema 메모리 인스트루멘테이션에서 `Log_event` 이벤트에 사용된 현재 바이트 수를 계산하는 문제로 인해, 복제본의 `sql/replica_sql` 스레드가 끝없이 증가하고 크기가 결코 감소하지 않는 것처럼 보였습니다. (Bug #35546877)

- **Replication:** `CREATE TABLE AS SELECT`를 복제하는 동안 복제를 중지하면 서버가 종료되었습니다. (Bug #33934013)
- **Group Replication:** 복제 채널이 오류 상태인 동안 강제 [`START GROUP_REPLICATION`](https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/start-group-replication.html)을 수행하면 계획되지 않은 서버 종료로 이어질 수 있었습니다. (Bug #34724344)
- Enterprise Linux 8 RPM을 빌드할 때, 빌드 스크립트는 이제 더 새로운 **strip** 명령(`/opt/rh/gcc-toolset-12` 아래)을 가리키며, 이제 해당 **dwz** 도구를 사용할 수 있는지 확인합니다. (Bug #36086236)
- 일부 경우, 부적절하게 초기화된 플러그인이 설치한 로드 가능한 함수를 호출하면 계획되지 않은 종료가 발생했습니다. (Bug #35889261)
- `handler.cc`의 `handler::ha_index_end()`에서 어설션 실패를 발견하고 수정했습니다. (Bug #35877600)
- 서버 시작 중 `MYSQL_FIREWALL` 플러그인이 올바르게 초기화되지 못하면, 서버 로그에 오류가 발생하고 때때로 **mysqld**가 계획되지 않게 종료되었습니다. (Bug #35853298)
- `GROUP BY`가 있는 일부 중첩 쿼리가 올바르게 처리되지 않았습니다. (Bug #35846402, Bug #35945822)

  참조: 이 문제는 다음의 회귀입니다: Bug #32918400.
- 제한된 경우, [`MD5()`](https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/encryption-functions.html#function_md5) 암호화 함수에 데이터를 전달하면 서버가 중단될 수 있었습니다. (Bug #35764496)

- 뷰의 일부 하위 선택은 항상 올바르게 처리되지 않았습니다. (Bug #35738548)
- 여러 테이블의 대량 이름 변경과 같은 작업을 수행하는 동안, [`CREATE TABLE... SELECT`](https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/create-table-select.html)와 유사한 데이터 정의 문을 동시에 실행하면 서버가 예기치 않게 중지될 수 있었습니다. (Bug #35735937)
- [`UPDATE HISTOGRAM`](https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/explain.html#explain-analyze)은 모든 경우에 예상대로 동작하지 않았습니다.

  UPDATE HISTOGRAM은 모든 경우에 예상대로 동작하지 않았습니다. (Bug #35710404)
- [`EXPLAIN ANALYZE`](https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/explain.html#explain-analyze)는 항상 예상된 결과를 생성하지 않았습니다. (Bug #35710383)
- 하위 쿼리 해석 중 오류가 발생했습니다. (Bug #35710373)

  참조: 이 문제는 다음의 회귀입니다: Bug #35184353.
- 사용된 테이블 정보의 갱신은 이제 모든 테이블 객체가 적절한 상태에 있음을 알 수 있도록 테이블이 열린 직후인 다음 실행 시작 시점까지 지연됩니다. (Bug #35710213, Bug #36030073)
- 일부 `HAVING` 쿼리는 예상된 결과를 생성하지 않았습니다. (Bug #35710183)
- 일부 재귀 CTE는 예상대로 동작하지 않았습니다. (Bug #35654240)
- `OVER (PARTITION...)`을 사용하는 일부 쿼리는 항상 성공적으로 실행되지 않았습니다. (Bug #35627798)

- `ROLLUP`이 포함된 일부 서브쿼리가 항상 올바르게 처리되지는 않았습니다. (Bug #35621842, Bug #35804794)
- Windows 설치 MSI 인터페이스에서 `CPACK_COMPONENT_GROUP_INFO_DISPLAY_NAME` 설정 옵션을 제거했습니다. 이제 `INFO_BIN` 및 `INFO_SRC` 파일은 항상 설치됩니다. (Bug #35529968)
- 윈도우 함수를 사용하는 일부 쿼리가 항상 올바르게 처리되지는 않았습니다. (Bug #35471471)
- 디버그 빌드에서 대소문자가 변경된 컬럼 이름으로 인해 서버가 종료될 수 있었습니다. (Bug #35449266)
- MySQL Server 설치 패키지에 `INFO_SRC` 파일 사본이 두 개 포함되어 있었습니다. (Bug #35400142)
- prepared statement 내의 [`SELECT`](https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/select.html) 문이 연속 실행에서 예기치 않게 서로 다른 결과를 반환했습니다. (Bug #35340987, Bug #35846585, Bug #35846873)

  참조: 이 문제는 다음의 회귀입니다: Bug #35060385.
- 일부 `SELECT DISTINCT` 쿼리가 항상 올바르게 처리되지는 않았습니다. (Bug #33725447)
- `sql/field.cc`의 어설션 실패를 제거했습니다. (Bug #112503, Bug #35846221)
- `SELECT AVG(...) OVER (PARTITION BY...)` 형식의 일부 쿼리가 항상 올바르게 처리되지는 않았습니다. (Bug #112460, Bug #35710179, Bug #35845413)

- 공식 MySQL Yum 또는 SUSE 리포지토리를 사용하여 MySQL을 업그레이드하면 항상 MySQL 서비스가 활성화되었습니다. 이제 설치 후에만 서비스를 활성화하며, 업그레이드 중에는 기존 값을 보존하고 편집하지 않습니다. (Bug #112382, Bug #35823558)
- 조건의 컬럼을 교체해야 하는 파생 조건 푸시다운이 있는 쿼리에서, 교체 항목은 `ROLLUP`으로 래핑되어 있지만 일치하는 항목은 그렇지 않은 경우, 존재하는 것으로 알려져 있더라도 일치하는 항목을 찾을 수 없었습니다. (Bug #111665, Bug #35498378, Bug #35570065, Bug #35826171)

  References: 이 문제는 다음 버그의 회귀입니다: Bug #33349994.
- `ORDER BY`에 윈도우 함수가 포함된 중첩 블록을 정렬하면 `sql/sql_executor.cc`에서 assert가 발생했습니다. (Bug #111306, Bug #34856256, Bug #35471522)
- 저장 프로시저에서 윈도우 함수에 대한 결과에 산술 연산을 수행하면 프로시저가 처음 실행될 때는 올바른 결과를 제공했지만, 이후 모든 호출에서는 잘못된 결과를 반환했습니다. (Bug #110983, Bug #35380604)

  References: 다음도 참조하십시오: Bug #110847, Bug #35340987.
- MySQL은 `libc`의 `musl` 버전을 사용하여 올바르게 빌드되지 않았습니다.

  기여해 주신 Sam James에게 감사드립니다. (Bug #110808, Bug #35330950)
- 일부 경우에 뷰에서 선택하면 소량의 메모리가 누수되었습니다. (Bug #103133, Bug #32764586)
