MySQL 8.0.36 릴리스 노트
MySQL 8.0.36 Community Server 릴리스 노트를 한국어로 번역하고, DBA가 참고해야 할 핵심 내용을 함께 정리하였습니다.
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)
- 패키지 업그레이드 전
repo.mysql.comGPG 키 교체(A8D3785C)를 반영하십시오. 기존 키 만료로apt/yum서명 검증 실패가 발생할 수 있으므로 MySQL APT/YUM repo 설정 패키지 재설치 또는 새 공개키 등록을 사전 작업에 포함해야 합니다. - InnoDB AHI 해시 함수 성능 회귀와 보조 인덱스 손상 가능성이 수정되었습니다. 8.0.30 이후 AHI 관련 CPU 상승·성능 저하를 경험한 환경은 업그레이드 후 AHI 사용 여부, 핫 인덱스,
SHOW ENGINE INNODB STATUS지표를 비교하는 것이 좋습니다. CREATE TABLE ... SELECT복제 중 중지 시 서버 종료, 오류 상태 채널에서 강제START GROUP_REPLICATION시 비정상 종료 가능성이 수정되었습니다. HA 토폴로지에서는 롤링 업그레이드 전후 failover·rejoin 절차를 재검증하십시오.- Performance Schema의 저장 프로시저 마이크로 명령어 계측(
statement/sp/%,statement/sp/stmt제외)이 기본 비활성화됩니다. 저장 프로그램 상세 추적에 의존하는 모니터링은 업그레이드 후 수집 항목 감소를 확인하고 필요한 계측만 명시적으로 활성화해야 합니다. - PAM 인증 디버그 로그는 기본적으로 비밀번호를 더 이상 출력하지 않습니다. 보안상 개선이지만, 장애 분석 절차에서 민감정보 포함 로그를 기대하던 운영 스크립트는
AUTHENTICATION_PAM_LOG=PAM_LOG_WITH_SECRET_INFO가 필요한지 별도 승인 절차와 함께 검토하십시오. - OpenSSL 번들 버전이 3.0.12로 갱신되었습니다. TLS 정책, FIPS, 오래된 클라이언트/암호군 호환성을 사용하는 환경은 사전 연결 테스트가 필요합니다.
Audit Log 관련 사항
- 일부 경우
audit_log_read(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를 참조하십시오.GnuPG 키 업데이트로 인해,
repo.mysql.com을 사용하도록 설정된 시스템은apt또는yum을 사용하여 MySQL 8.0.36 이상 또는 MySQL 8.3.0 이상으로 업그레이드할 때 서명 확인 오류를 보고할 수 있습니다. 이 문제를 해결하려면 다음 방법 중 하나를 사용하십시오:- 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을 참조하십시오. (Bug #74313, Bug #20042010)
추가되거나 변경된 기능
- 중요한 변경: OpenSSL 라이브러리가 번들로 제공되는 플랫폼의 경우, MySQL Server에 링크된 OpenSSL 라이브러리가 버전 3.0.12로 업데이트되었습니다. OpenSSL 버전 3.0.12에서 수정된 문제는 https://openssl-library.org/news/openssl-3.0-notes/에 설명되어 있습니다. (Bug #36033684)
수정된 버그
-
Performance; InnoDB:
InnoDBadaptive 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옵션은 더 이상 강제되지 않으며, 대신 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을 수행하면 계획되지 않은 서버 종료로 이어질 수 있었습니다. (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()암호화 함수에 데이터를 전달하면 서버가 중단될 수 있었습니다. (Bug #35764496) -
뷰의 일부 하위 선택은 항상 올바르게 처리되지 않았습니다. (Bug #35738548)
-
여러 테이블의 대량 이름 변경과 같은 작업을 수행하는 동안,
CREATE TABLE... SELECT와 유사한 데이터 정의 문을 동시에 실행하면 서버가 예기치 않게 중지될 수 있었습니다. (Bug #35735937) -
UPDATE HISTOGRAM은 모든 경우에 예상대로 동작하지 않았습니다.UPDATE HISTOGRAM은 모든 경우에 예상대로 동작하지 않았습니다. (Bug #35710404)
-
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문이 연속 실행에서 예기치 않게 서로 다른 결과를 반환했습니다. (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)