MySQL 5.7.28 릴리즈 노트 2019-10-14

MySQL

MySQL 5.7.28 릴리즈 노트 내역입니다.

환경설정 노트 (Configuration Notes)

  • OpenSSL 1.1.1을 사용하여 MySQL 5.7을 컴파일할 수 있으므로 2019년 말 OpenSSL 1.0.2가 EOL 상태에 도달하더라도 OpenSSL에 대해 MySQL 5.7을 컴파일할 수 있습니다.
  • 모든 MySQL 5.7 빌드는 이제 OpenSSL을 사용합니다. MySQL은 yaSSL을 SSL 라이브러리로 사용하는 것을 더 이상 지원하지 않으며 소스 배포에 yaSSL이 더 이상 포함되지 않습니다.WITH_SSL CMake 옵션은 더 이상 ‘번들'(yaSSL 사용)을 유효한 값으로 허용하지 않으며 기본 옵션 값이 ‘번들'(호스트 시스템에 설치된 OpenSSL 버전 사용)에서 ‘시스템’으로 변경되었습니다.

보안 노트 (Security Notes)

sys 스키마 노트 (sys Schema Notes)

  • 이제 sys.schema_unused_indexes 보기는 고유한 인덱스를 필터링합니다. 기부를 해주신 Gillian Gunson 에게 감사드립니다. (Bug #24798995, Bug #83257)
  • 이제 sys.ps_is_consumer_enabled() 함수는 인수가 알 수 없는 non-NULL이 아닌 소비자 이름일 경우 NULL을 반환하지 않고 오류를 생성합니다.(Bug #24760317)
  • 이전에는 sys 스키마 소스가 별도의 Git 저장소에서 유지되었다. 이제 sys 스키마 소스가 MySQL 소스 배포에 포함되어 유지 관리됩니다. (scripts/sys_schema 이하)sys.version 보기는 더 이상 사용되지 않으며 향후 MySQL 버전에서 제거될 예정입니다. 영향을 받는 응용 프로그램은 대안을 사용하도록 조정해야 합니다. 예를 들어 VERSION() 함수를 사용하여 MySQL Server 버전을 검색합니다.

버그 수정 (Bugs Fixed)

  • InnoDB: MyISAM 테이블에 대한 ALTER TABLE ... ENCRYPTION = 'Y' 작업에서 스토리지 엔진이 암호화를 지원하지 않음을 나타내는 오류를 발생시키지 못했습니다. INPLACE 알고리즘은 .frm 파일의 메타데이터를 업데이트하기 전에 암호화 지원을 확인하지 않았습니다. 이 문제를 해결하기 위해 암호화 지원 플래그가 추가되었습니다. 이제 ALTER TABLE ... ENCRYPTION = 'Y' 작업은 스토리지 엔진이 암호화를 지원하지 않을 경우 플래그를 확인하고 오류를 보고합니다. (Bug #29543447)
  • InnoDB: 표시된 행 삭제는 부분 롤백을 완료하기 전에 외부 읽기 잠금을 획득할 수 있습니다. 외부 읽기 잠금으로 인해 부분 롤백 중에 암시적 잠금을 명시적 잠금으로 변환하지 못해 어설션 오류가 발생했습니다. (Bug #29195848)
  • InnoDB: 동시 삽입을 사용한 장시간 실행 ALTER TABLE ... ADD INDEX 작업으로 인해 세마포어 대기가 발생했습니다. Satya Bodapati님이 패치를 해 주셔서 감사합니다. (Bug #29008298)
  • Replication: SQL 스레드가 중지되는 동안 슬레이브에서 SQL 스레드를 시작하기 위해 START SLAVE 문이 발행되고 슬레이브 상태에 대한 요청이 동시에 이루어진다면 3개의 스레드를 포함하는 교착 상태가 발생할 수 있다. 이제 SQL 스레드가 중지되는 동안 잠금을 해제하여 문제가 해결되었습니다. (Bug #29697588, Bug #95115)
  • Replication: WAIT_FOR_EXECITE_GTID_SET() 함수의 잠금 문제로 인해 서버가 중단될 수 있습니다. 이제 문제가 수정되었습니다. (Bug #29550513)
  • Replication: GTID가 사용 중이고 MASTER_AUTO_POSITIONON으로 설정된 다중 스레드 슬레이브에서 예기치 않은 중지 후 슬레이브가 릴레이 로그 복구를 시도하지만 릴레이 로그가 손실되어 복제가 시작되지 않습니다.그러나 GTID 자동 포지셔닝을 사용하여 누락된 트랜잭션을 복원할 수 있으므로 이 단계는 필요하지 않았습니다. 복구 상황에서는 슬레이브가 먼저 MASTER_AUTO_POSITIONON으로 설정되어 있는지 확인하고, 그렇지 않으면 건너뛸 트랜잭션 계산 단계를 생략하여 이전 릴레이 로그가 필요하지 않고 복구가 진행될 수 있습니다. (Bug #28830834, Bug #92882)
  • SQL 스크립트에서 C 소스를 생성할 때 일부 utf8 인코딩 문자가 여러 줄로 분할되었습니다. Przemysław Skibiński님이 패치를 해 주셔서 감사합니다. (Bug #30152555, Bug #96449)
  • SHOW PROCESSLIST 출력에는 완료되었지만 더 이상 처리되지 않는 문이 포함될 수 있습니다. (Bug #29999818)
  • Solaris의 경우, mysqld.cc에는 더 이상 필요하지 않은 memcntl()의 프로토타입이 포함되어 있었습니다. 프로토타입이 제거되었습니다. (Bug #29953495, Bug #95971)
  • Solaris의 경우 GCC로 컴파일할 때 -DWITH_SSL=system가 작동하지 않았습니다. (Bug #29953460, Bug #95970)
  • -DWITED_SERVER=1로 구성된 MySQL 빌드에 실패했습니다. (Bug #29948728, Bug #95740)
  • keyring_aws 플러그인의 경우 keyring_aws_region 시스템 변수의 일부 유효한 영역 값이 거부되었습니다. (Bug #29933758)
  • 디버그 빌드의 경우 ‘GEORMETY’ 열과 ‘SELECT * FROM(SELECT NULL)’의 결합된 데이터 형식을 계산할 때 UNION 쿼리 중에 어설션이 발생할 수 있습니다. (Bug #29916900, Bug #95827)
  • LDAP 인증 플러그인을 사용한 인증의 경우 사용자 DN 부분이 비어 있고 그룹 매핑이 구성된 경우 인증이 잘못된 사용자 DN을 할당하고 사용자 검색을 건너뛰었습니다. (Bug #29897624)
  • mysqlpump MySQL 5.7보다 오래된 서버에 대해 실행할 때 오류가 발생했습니다. (Bug #29889253)
  • 서명되지 않은 정수 형식 캐스팅으로 인해 정수 오버플로가 발생할 경우 임의 크기 메모리 할당으로 인해 나중에 버퍼 오버플로가 발생할 수 있습니다. (Bug #29878914)
  • MeCab 플러그인 초기화 중에 해제된 개체를 사용하려고 하면 분할 오류가 발생했습니다. (Bug #29832534)
  • RPM 패키지를 사용하여 설치된 MySQL의 경우 LDAP 인증 플러그인을 사용하여 클라이언트 계정이 인증되면 서버 연결을 테스트하는 초기화 스크립트입니다. (Bug #29786782)
  • 저장소 엔진을 초기화하는 동안 잘못 잠그면 서버가 종료될 수 있습니다. (Bug #29782379)
  • GTID 사용 서버에서 DROP USER와 보기에 액세스한 준비된 문을 동시에 실행하면 교착 상태가 될 수 있습니다. (Bug #29772622)
  • VS2019에서 ‘/ZI’ 플래그 사용으로 인해 디버그 컴파일이 선택되어 컴파일 오류가 발생했습니다. 지금은 ‘/Z7’이 대신 사용됩니다.(Bug #29691691, Bug #95125)
  • 클라이언트 라이브러리가 서버에서 결과 집합 메타데이터를 가져오는 동안 null 포인터의 참조를 취소할 수 있습니다. (Bug #29597896, Bug #30689251)
  • READ UNCOMMITTED 분리 레벨에서 memcached 클라이언트의 과부하 상태에서 분할 결함이 발생했습니다. 한 트랜잭션에서 업데이트 중인 외부에 저장된 ‘BLOB’ 열이 NULL 값과 0이 아닌 데이터 길이를 가진 것으로 다른 트랜잭션에서 읽혔습니다. (Bug #29396364, Bug #93961)
  • TIMESTAMPADD() 함수에 대한 인수는 준비된 문에 대해 반전될 수 있습니다. (Bug #29268394)
  • MySQL Community Edition의 경우 서버가 명시적인 ssl_cipher 순서로 구성되어 있지 않은 한 서버에서 지정한 암호 순서가 서버 쪽의 순서보다 우선하여 사용되었습니다. (Bug #26882825)
  • thread_pool 플러그인을 사용하도록 설정하면 sys.processlistsys.session 보기에 실제 사용자 이름이 아닌 스레드 이름이 표시됩니다. (Bug #25906021, Bug #85976)
  • sys.schema_index_statistics 보기의 delete_latency 열이 SUM_TIMER_DELETE 열이 아닌 성능 스키마 table_io_waits_summary_by_index_usage 테이블의 ‘SUM_TIMER_INSERT’ 열을 잘못 참조했습니다. (Bug #25521928)
  • sys.diagnostics() 절차의 출력에서 user_summary_by_file_io_type 보기의 latency 열이 형식화된 값이 아닌 원시 피코초 단위로 잘못 표시되었습니다. (Bug #25287996)
  • MySQL Enterprise Encryption 함수는 DH(Diffie-Hellman) 메서드를 DH 키가 아닌 키에 적용하여 예기치 않은 결과 또는 서버 종료가 발생할 수 있습니다.(Bug #22839007)
  • SHOW PROCESSLIST 및 일부 INFORMATION_SCHEMA 및 성능 스키마 테이블에 대한 암호 마스킹이 완료되지 않았습니다. (Bug #20712046)
  • -DWITH_EXAMPLE_STORAGE_ENGINE=1 CMake 옵션이 무시되었지만 무시해서는 안 됩니다. ‘-DWITD_EX샘플_STORAGE_ENGINE=0’이 지정되면 EXAMPLE 저장소 엔진이 플러그인으로 구축됩니다. (Bug #70859, Bug #17772560, Bug #30133062)참조: 참고 항목: Bug #18324650.