
[이전글] MySQL 8.0.14 릴리즈 노트 #1
[다음글] MySQL 8.0.14 릴리즈 노트 #3
MySQL 8.0.14 릴리즈 노트 #2 내용입니다.
- 계정 관리 노트 (Account Management Notes)
- 감사 로그 노트 (Audit Log Notes)
- 컴파일 노트 (Compilation Notes)
- 컴포넌트 노트 (Component Notes)
- 구성 참고 노트 (Configuration Notes)
- 사용 중지 및 제거 노트 (Deprecation and Removal Notes)
- SQL 함수 및 연산자 노트 (SQL Function and Operator Notes)
- 로깅 노트 (Logging Notes)
- 최적화 도구 노트 (Optimizer Notes)
- 패키징 노트 (Packaging Notes)
- 성능 스키마 노트 (Performance Schema Notes)
- 플러그형 인증 (Pluggable Authentication)
- 보안 노트 (Security Notes)
- 공간 데이터 지원 (Spatial Data Support)
- SQL 구문 노트 (SQL Syntax Notes)
- 스레드 풀 노트 (Thread Pool Notes)
- X 플러그인 노트 (X Plugin Notes)
- 기능 추가 및 변경 (Functionality Added or Changed)
- 버그 수정 (Bugs Fixed)
스레드 풀 노트 (Thread Pool Notes)
- 스레드 풀 플러그인과 함께 제공되는
INFORMATION_SCHEMA
테이블이 성능 스키마 테이블로 사용 가능하도록 마이그레이션되었습니다. 이제INFORMATION_SCHEMA
테이블은 더 이상 사용되지 않으며 향후 MySQL 버전에서 제거될 예정입니다. 애플리케이션은 이전 테이블에서 새 테이블로 전환해야 합니다. 예를 들어, 응용 프로그램이 이 쿼리를 사용하는 경우 다음과 같습니다.
SELECT * FROM INFORMATION_SCHEMA.TP_THREAD_STATE;
응용 프로그램에서 대신 이 쿼리를 사용해야 합니다.
SELECT * FROM performance_schema.tp_thread_state;
자세한 내용은 Performance Schema Thread Pool Tables을 참조하십시오.
X 플러그인 노트 (X Plugin Notes)
- 이제 X 플러그인의 오류 처리 클래스에 5자리 SQLSTATE 오류 코드가 포함됩니다. 이전에는 SQL 오류로 인해 SQLSTATE 오류 코드가 클라이언트에 반환되었지만 MySQL 관련 오류 번호만 노출되었습니다. (Bug #28735058)
- 문서 모음을 쿼리할 때 SQL 쿼리에서 자리 표시자에 대한 인수로 부울 값이 사용된 경우 예기치 않은 결과가 반환되었습니다. 이 상황에서 올바르게 처리될 수 있도록 부울 값에 대한 새로운 변환 전문화가 추가되었습니다. (Bug #28227037)
- 이제 X 프로토콜은 검색된 데이터를 반환하기 전에 항상 ‘utf8mb4’ 문자 집합으로 변환합니다(‘utf8mb4_general_ci’ 데이터 정렬 사용). (Bug #28180155)
- 이제 X 프로토콜은 SQL 준비 기능을 지원합니다.
기능 추가 및 변경 (Functionality Added or Changed)
- InnoDB:
innodb_buffer_pool_in_core_file
변수를 사용하지 않도록 설정하면InnoDB
버퍼 풀 페이지를 제외하여 코어 파일의 크기가 줄어듭니다. 이 변수를 사용하려면core_file
변수를 사용하도록 설정하고 운영 체제에서 Linux 3.4 이상에서 지원되는MADV_DONTDUMP
비 POSIX 확장을MADvise()
로 지원해야 합니다. 자세한 내용은 Excluding Buffer Pool Pages from Core Files를 참조하십시오.Facebook의 도움에 감사드립니다. (Bug #27724476, Bug #90144) - InnoDB: 기본적으로 실행 취소 로그는 MySQL 인스턴스가 초기화될 때 생성되는 두 개의 실행 취소 테이블스페이스에 있습니다.실행 취소 테이블스페이스는
CREATE UNDO TABLESPACE
구문을 사용하여 런타임에 선택한 위치에 추가로 생성할 수 있습니다.CREATE UNDO TABLESPACE tablespace_name ADD DATAFILE ‘file_name.ibu’;CREATE UNDO TABLESPACE
구문을 사용하여 만든 실행 취소 테이블스페이스를DROP UNDO TABLESPACE
구문을 사용하여 런타임에 삭제할 수 있습니다.DROP UNDO TABLESPACE tablespace_name;ALTER UNDO TABLESPACE
구문을 사용하여 실행 취소 테이블스페이스를 활성 또는 비활성으로 표시할 수 있습니다.ALTER UNDO TABLESPACE tablespace_name SET {ACTIVE|INACTIVE};테이블스페이스의 상태를 보여주는STATE
열이INFORMATION_SCHEMA.INNODB_TABLESPACES
테이블에 추가되었습니다. 실행 취소 테이블스페이스를 삭제하려면 먼저empty
상태에 있어야 합니다. 이전에 더 이상 사용되지 않았던innodb_innodb_sshapaces
변수는 더 이상 구성할 수 없으며 향후 MySQL 버전에서 제거될 예정입니다.자세한 내용은 Undo Tablespaces를 참조하십시오. - InnoDB:
InnoDB
는 이제 병렬 클러스터형 인덱스 읽기를 지원하므로CHECK TABLE
성능을 향상시킬 수 있습니다. 이 기능은 보조 인덱스 검색에는 적용되지 않습니다. 병렬 클러스터형 인덱스 읽기가 발생하려면innodb_parallel_read_threads
세션 변수를 1보다 큰 값으로 설정해야 합니다. 기본값은 4입니다. 병렬 클러스터형 인덱스 읽기를 수행하는 데 사용되는 실제 스레드 수는innodb_parallel_read_threads
설정 또는 검색할 인덱스 하위 트리 수 중 더 작은 수에 의해 결정됩니다. - InnoDB: 이제
CREATE TABLESPACE
문의ADD DATAFILE
절이 선택 사항으로,FILE
권한이 없는 사용자는 테이블스페이스를 만들 수 있습니다. ‘ADD DATAFILE’ 절 없이 실행된CREATE TABLESPACE
문은 고유한 파일 이름을 가진 테이블스페이스 데이터 파일을 암시적으로 생성합니다. - **InnoDB:
innodb_dedicated_server
변수를 사용하도록 설정하면 자동으로 구성된 버퍼 풀 크기에 따라 로그 파일의 크기와 수가 구성됩니다. 기존에는 서버에서 탐지된 메모리 양에 따라 로그 파일 크기가 구성되었고 로그 파일 수는 자동으로 구성되지 않았습니다. - Replication: 단일 기본 모드에서 그룹을 실행할 때 적용할 백로그에 보류 중인 트랜잭션이 새 기본 모드로 선택되는 경우 새 기본 모드에 대한 읽기 작업을 수행하면 오래된 값이 반환될 수 있습니다. 이제
group_replication_consistency
변수를 사용하여 이러한 상황에서 그룹이 어떻게 동작하는지 제어할 수 있습니다.group_replication_consistency
를EVENTUAL
로 설정하면 새로운 기본은 아직 적용되지 않은 백로그가 있더라도 읽기 요청에 응답하며, 이는 이전 동작과 일치하며 백로그가 적용되는 동안 클라이언트가 이전 값을 읽을 수 있는 위험이 있습니다.super_read_only
모드가 활성화되어 있기 때문에 이 기간 동안 새 기본에 쓰기가 실패합니다.group_replication_consistency
를BEFORE_ON_PRIMARY_FAILOVER
로 설정하면 이전 기본의 백로그를 적용하는 새로 선택한 기본에 대한 모든 읽기 또는 쓰기 쿼리는 백로그가 적용될 때까지 보류됩니다. 따라서 클라이언트는 자신이 작성한 최신 값을 항상 읽을 수 있지만, 백로그가 적용될 때까지 기다려야 새 기본 값을 읽을 수 있습니다.참조 : 참고사항: Bug #26004894. - Microsoft Windows: 이제 MySQL 서버가 만든 명명된 파이프의 클라이언트에 부여된 액세스 제어는 Windows에서 성공적인 통신에 필요한 최소값으로 설정됩니다. 최신 MySQL 클라이언트 소프트웨어는 추가 구성 없이 명명된 파이프 연결을 열 수 있습니다. 이전 클라이언트 소프트웨어를 즉시 업그레이드할 수 없는 경우 새
named_pipe_full_access_group
서버 시스템 변수를 사용하여 명명된 파이프 연결을 여는 데 필요한 권한을 Windows 그룹에 부여할 수 있습니다. 전체 액세스 그룹의 구성원 자격은 제한되고 임시적이어야 합니다. - 최소 서버 RPM은 대부분 도커 영상에 사용됩니다. 도커 호환성을 높이기 위해
rpm-docker
구성 파일에서log-error
라인이 제거되었습니다. 이렇게 하면 로깅이stdout
/stderr
로 이동하여 도커 고유의 인터페이스를 사용할 수 있습니다. (Bug #28692675) - 외부 키 생성 및 삭제와 관련된 오류 메시지가 보다 구체적이고 유용한 정보로 개선되었습니다.(Bug #28526309, Bug #92087)
- 문자 집합 변환을 시도했지만 실패한
ALTER TABLE
문의 오류 메시지가 오류가 발생한 열을 나타내도록 개선되었습니다. (Bug #27546306, Bug #88738) - 이전에는 숫자 값을 사용하는 명령 옵션의 경우 접미사
K
,M
또는G
를 사용하여 1024, 10242 또는 10243의 승수를 나타낼 수 있습니다. 이제 접미사는 10244, 10245 또는 10246의 승수를 나타내기 위해T
,P
,E
가 될 수도 있습니다. Daniel Black에게 패치를 주셔서 감사합니다. (Bug #27306931, Bug #89017) - 확장성과 성능을 향상시키기 위해 리소스 그룹 잠금이 수정되었습니다. (Bug #27148580)
- 이제 그룹 복제용 그룹 통신 시스템(GCS)과 그룹 통신 엔진(XCOM, Paxos 변형)은 IPv6을 완벽하게 지원하므로 복제 그룹 구성원은 내부 그룹 통신에 IPv4 주소 대신 IPv6 주소를 사용할 수 있습니다. IPv6의 로컬 호스트 주소와 IPv6의 개인 하위 네트워크 주소(고유-로컬 주소 및 링크-로컬 유니캐스트 주소)는 수동 화이트리스트가 지정되지 않은 경우 사용할 수 있도록 그룹 복제의 자동 화이트리스트에 추가됩니다.복제 그룹의 모든 구성원이 그룹 복제에 IPv6 주소 사용을 지원하는 MySQL 서버 버전에 있는 경우 IPv6 주소를 사용하는 구성원과 IPv4 주소를 사용하는 구성원을 혼합하여 그룹에 포함할 수 있습니다. 가입 구성원은 연결을 위해 시드 구성원이 제공하는 프로토콜과 일치하는 화이트리스트 IP 주소 또는 호스트 이름을 제공해야 하지만 가입 구성원의 기본 식별 주소 또는 호스트 이름(
group_replication_local_address
)은 두 프로토콜 중 하나를 사용할 수 있습니다. 멤버가 IPv4 및 IPv6 주소로 확인되는 호스트 이름을 사용하는 경우 IPv4 주소는 항상 그룹 복제 연결에 사용됩니다. 복제 그룹의 기존 멤버 중 일부 또는 모두가 IPv6 주소 사용을 지원하지 않는 이전 버전의 MySQL Server를 사용하는 경우 가입 구성원은group_replication_local_address
옵션에 그룹 통신을 위한 IPv4 주소를 표시해야 합니다. 모든 그룹 구성원이 업그레이드되면 그룹을 IPv6 주소로 마이그레이션할 수 있습니다. (Bug #26088469, Bug #27757729, Bug #90217) - 이제 시작 옵션
--binlog-row-event-max-size
에 해당하는 시스템 변수binlog_row_event_max_size
가 있습니다. 시작 옵션 및 시스템 변수는 행 기반 이진 로그 이벤트의 최대 크기에 대해 소프트 제한을 설정하며 기본 설정은 8192바이트입니다. 가능한 경우 이진 로그에 저장된 행은 이 설정 값을 초과하지 않는 크기의 이벤트로 그룹화됩니다. 이벤트를 분할할 수 없는 경우 최대 크기를 초과할 수 있습니다.binlog_row_event_max_size
글로벌 시스템 변수는 읽기 전용이며 서버 시작 시에만 설정할 수 있습니다. 따라서 이 값은PERIST_ONLY
키워드 또는@@persist_only
한정자를SET
문과 함께 사용해야만 수정할 수 있습니다. 시스템 변수를 추가하면 성능 스키마 테이블 또는SHOW VARIABLES
또는SELECT
문을 사용하여 이 설정을 볼 수 있습니다. (Bug #19985377, Bug #74728) - MySQL 그룹 복제는 이제 TCP 소켓 대신 전용 입력 채널을 사용하여 통신할 수 있습니다. 새 입력 채널은 그룹 복제 논리와 기본 그룹 통신 엔진의 로컬 인스턴스(XCOM, Paxos 변형) 간의 통신에 공유 메모리를 사용합니다.이전에는 로컬 XCom 인스턴스와의 통신이 항상 TCP 소켓, 즉 각 그룹 멤버에 대해
group_replication_local_address
시스템 변수로 지정된 네트워크 주소를 사용하여 이루어졌습니다. 이로 인해 네트워크 프로토콜 스택을 통한 메모리 복사 및 데이터 직렬화와 같은 로컬 통신에 불필요한 오버헤드가 발생했습니다. 각 그룹 멤버가 원격 XCom 인스턴스와 통신하려면 TCP 소켓(group_replication_local_address
)이 여전히 필요합니다. 이제 그룹 복제의 GCS(그룹 통신 시스템) 구성 요소가 입력 채널 또는 TCP 중 각 그룹 복제 작업에 가장 적합한 통신 방법을 선택합니다. 예를 들어 그룹에 가입하는 프로세스에는 원격 XCom 인스턴스와의 통신이 필요하므로 TCP를 사용해야 합니다. 그러나 그룹에서 멤버를 제거하는 프로세스는 로컬 XCOM 인스턴스와의 통신만 필요하므로 입력 채널이 사용됩니다. 가능한 한 입력 채널을 선택하여 네트워킹 메커니즘을 사용한 통신과 관련된 오버헤드를 최소화합니다. - 복제에서 내부 사용을 위해 두 개의 새 세션 시스템 변수가 추가되었습니다.
original_server_version
와immediate_server_version
는 복제 토폴로지를 통해 트랜잭션과 관련된 MySQL 서버 릴리스 번호를 전송하여 교차 버전 복제를 지원합니다.original_server_version
에는 트랜잭션이 원래 커밋된 서버의 MySQL Server 릴리스 번호(예: MySQL 8.0.14 서버 인스턴스의 경우 ‘80014’)가 저장됩니다.immediate_server_version
에는 복제 토폴로지에서 즉시 마스터인 서버의 MySQL Server 릴리스 번호가 저장됩니다. 이러한 서버 중 하나 또는 복제 토폴로지의 다른 개입 서버가 이러한 세션 시스템 변수를 지원하지 않는 이전 릴리스에 있는 경우, 해당 값은 0으로 설정됩니다. 이 정보를 통해 슬레이브는 관련된 릴리스 간에 구문 변경 또는 의미 변경이 발생한 위치를 인식하고 적절하게 처리함으로써 이전 릴리스의 마스터에서 생성된 데이터를 올바르게 처리할 수 있습니다. 또한 복제 그룹의 하나 이상의 구성원이 다른 구성원보다 최신 릴리스에 있는 그룹 복제 환경에서도 이 정보를 사용할 수 있습니다. 변수의 값은 각 트랜잭션의 이진 로그에서 볼 수 있으며(Gtid_log_event
의 일부로, 또는 GTID가 서버에서 사용되지 않는 경우Anonymous_gtid_log_event
의 일부로), 교차 버전 복제 문제를 디버깅하는 데 도움이 될 수 있습니다. - 다음 조건이 적용될 경우,
ALTER TABLE
를 사용하여 (테이블 재구성 없이) 제자리에서 열 문자 집합을 변경할 수 있습니다. - 새로운
-DFORCE_INSOURCE_BUILD
CMake 옵션은 원본 빌드를 강제할지 여부를 정의합니다. 소스 외 빌드는 동일한 소스에서 여러 빌드를 허용하므로 권장되며 빌드 디렉토리를 제거하여 신속하게 정리할 수 있습니다. 소스 빌드를 강제 실행하려면 CMake를-DFORCE_INSOURCE_BUILD=ON
와 함께 호출하십시오.
[이전글] MySQL 8.0.14 릴리즈 노트 #1
[다음글] MySQL 8.0.14 릴리즈 노트 #3