MySQL 5.7.29 릴리즈 노트 2020-01-13

MySQL

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

감사 로그 노트 (Audit Log Notes)

  • ANALYZE TABLE 문은 이제 read 감사 이벤트를 생성합니다. (Bug #29625461)

패키지 노트 (Packaging Notes)

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

버그 수정 (Bugs Fixed)

  • InnoDB: GCC 9.2.0으로 MySQL을 컴파일하는 동안 os_file_get_parent_dir 경고가 발생했습니다. (Bug #30499288, Bug #97466)
  • InnoDB: 비관적 업데이트 중 또는 이전 버전의 레코드로 돌아갈 때 새로 추가된 외부 저장 필드를 가져와 업데이트하는 데 사용되는 내부 함수(btr_push_update_extern_fields())가 더 이상 필요하지 않습니다. 새로 추가된 외부 저장 필드는 다른 기능에 의해 업데이트됩니다. 또한 외부에 저장된 필드 수를 결정하는 데 사용된 방법도 수정되었습니다. (Bug #30342846)
  • InnoDB: 비교 함수에서 공간 인덱스의 잎이 아닌 페이지를 병합하려고 할 때 두 레코드가 같은 것으로 확인되었습니다. 함수가 이 예기치 않은 조건을 처리할 수 없어 긴 세마포어 대기 시간이 발생하고 결과적으로 어설션 오류가 발생했습니다. (Bug #30287668)
  • InnoDB: 서로 다른 DATA DIRECTORY 절로 정의된 원본 테이블과 대상 테이블로 인해 테이블스페이스 가져오기 작업에 실패한 경우 스키마 불일치 오류가 불충분하게 보고되었습니다. 또한 .cfg 파일이 없는 경우 동일한 작업을 수행하면 어설션 오류가 발생합니다. 이제 두 경우 모두 데이터 디렉토리 불일치로 인해 가져오기 작업이 종료되기 전에 보다 유용한 오류 메시지가 보고됩니다. (Bug #30190199, Bug #30190227, Bug #20644698, Bug #76142)
  • InnoDB: 수정 레코드에 수정 트리 구조가 필요한지 여부를 감지하는 btr_cur_will_modify_tree() 함수에 사용되는 기준이 불충분했습니다.(Bug #30113362)
  • InnoDB: ALTER TABLE ... DISCARD TABLESPACE 작업으로 인해 중단 상태가 발생했습니다. (Bug #29942556, Bug #30324703)
  • InnoDB: 세션 임시 테이블에 대해 불필요한 암시적 2차 인덱스 잠금 변환을 금지하여 코드 회귀를 해결했습니다. (Bug #29718243)
  • InnoDB: 삭제 표시된 레코드를 정리하는 동안 커서가 손상된 페이지에 있을 때 테이블 스페이스 가져오기 작업에서 어설션이 발생했습니다. 페이지가 손상된 경우 어설션하는 대신 가져오기 작업이 종료되고 오류가 보고됩니다. (Bug #29454828, Bug #94541)
  • Replication: 구성원이 복제 그룹에 가입하거나 다시 가입할 때 그룹 복제가 분산 복구 프로세스에서 오류를 감지하는 경우(가입 구성원이 기존 온라인 구성원으로부터 상태 전송을 수신함) 자동으로 새 기부자로 전환되고 상태 전송을 다시 시도합니다. 포기하기 전에 가입 회원의 재시도 횟수는 group_replication_recovery_retry_count 시스템 변수에 의해 설정됩니다. 성능 스키마 테이블 replication_applier_status_by_worker에 마지막 재시도를 발생시킨 오류가 표시됩니다. 이전에는 그룹 구성원이 병렬 복제 장치 스레드(slave_parallel_workers 시스템 변수에서 설정한 대로)로 구성된 경우에만 이 오류가 표시되었습니다. 그룹 멤버가 단일 어플라이언스 스레드로 구성된 경우 내부 RESET SLAVE 작업을 통해 각 재시도 후 오류가 삭제되어 볼 수 없습니다. 또한 SHOW SLAVE STATUS 명령의 출력에 대해 단일 또는 다중 어플라이언스 스레드가 있는지 여부도 마찬가지입니다. 이제 분산 복구를 다시 시도한 후 RESET SLAVE 작업이 더 이상 수행되지 않으므로 마지막 재시도를 발생시킨 오류를 항상 볼 수 있습니다. (Bug #30517160, Bug #30517172, Bug #97540)
  • Replication: 오류가 발생한 복제 그룹 구성원이 소수 그룹에 다시 가입하려고 했지만 다시 가입하지 못하게 되면 메모리 누수가 발생할 수 있습니다.(Bug #30162547, Bug #96471)
  • Replication: 마스터 로그 파일 이름 및 마스터 로그 위치를 지정하지 않은 CHANGE MASTER TO 문을 사용하여 복제 슬레이브를 설정한 후 START SLAVE가 실행되기 전에 종료한 다음 --relay-log-recovery 옵션을 설정하여 다시 시작하면 복제가 시작되지 않습니다. 릴레이 로그 복구를 시도하기 전에 수신기 스레드가 시작되지 않았기 때문에 마스터 로그 파일 이름과 마스터 로그 위치를 제공하는 릴레이 로그에서 로그 순환 이벤트를 사용할 수 없기 때문에 이 문제가 발생했습니다. 이런 경우 슬레이브는 릴레이 로그 복구를 건너뛰고 경고를 기록한 후 복제를 시작합니다. (Bug #28996606, Bug #93397)
  • Replication: 복제 마스터 및 슬레이브에서 GTID를 사용하도록 설정하고 슬레이브가 ‘MASTER_AUTO_POSITION=1’ 옵션을 설정한 상태에서 마스터가 마스터에 연결하는 경우 마스터는 슬레이브가 아직 수신하지 않았거나 커밋되지 않은 모든 트랜잭션을 슬레이브에게 전송해야 합니다. 마스터가 전송해야 할 트랜잭션이 마스터의 이진 로그에서 이미 삭제된 경우 마스터는 슬레이브에 ER_MASTER_HAS_PURGED_REQUIRED_GTIDS(1789) 오류를 전송하고 복제가 시작되지 않습니다. 오류 ER_MASTER_HAS_PURGED_REQUIRED_GTIDS에 제공된 메시지가 슬레이브가 누락된 트랜잭션을 다른 소스에서 복제하거나 슬레이브를 최신 백업에서 생성된 새 슬레이브로 대체하는 이 상황에서 올바른 작업에 대한 조언을 제공하도록 변경되었습니다. 이 메시지는 향후 상황을 방지하기 위해 마스터의 이진 로그 만료 기간을 수정할 수 있음을 알려줍니다. 또한 마스터는 삭제된 트랜잭션의 GTID를 식별하여 경고 메시지 ER_FOUND_MISSING_GTIDS(11809)의 오류 로그에 제공하므로 누락된 GTID를 수동으로 계산할 필요가 없습니다. (Bug #26004541, Bug #29769293)
  • macOS: macOS에서 MySQL을 -DWITH_SSL=system로 구성하면 mysql_config 출력에 정적 SSL 라이브러리의 내부 CMake 이름이 잘못 포함되었습니다. (Bug #30541879, Bug #97632)
  • 서버를 구축하는 데 사용되는 OpenSSL 버전과 라이브러리 또는 플러그인과 같은 MySQL의 다른 부분에 사용되는 버전이 일치하지 않을 수 있습니다. 이로 인해 LDAP 인증 플러그인과 같은 특정 기능이 작동하지 않을 수 있습니다. 이제 모든 것을 구축하는 데 동일한 버전의 OpenSSL이 사용됩니다. (Bug #30573696, Bug #30515370)
  • 도커 패키지에 LDAP 인증 플러그인이 없습니다. (Bug #30465247)
  • 파생된 테이블에 있는 필드의 원래 테이블 이름이 항상 올바르게 표시되지 않았습니다. (Bug #30362898)참조: 참고 항목: Bug #24611344. Bug #22364401 의 회귀입니다.
  • MySQL Installer가 Windows Server 2012에서 MySQL 5.7을 제거하지 못했습니다. (Bug #30323924, Bug #96940)
  • 여러 세션에서 AUTO_INCREMENT 열이 있는 테이블에 동시 INSERT ... ON DUPLICATE KEY UPDATE 문을 실행하지만 AUTO_INCREMENT 값을 지정하지 않으면 삽입이 실패하고 고유 인덱스 위반이 발생할 수 있습니다. (Bug #30194841, Bug #96578)
  • lower_case_table_names=2를 사용하면 SHOW TABLES가 대문자로 된 테이블을 표시하지 못할 수 있습니다. (Bug #29957361)
  • 서버 시작 시 명령줄에 keyring_encrypted_file_password가 설정되어 있으면 시스템 유틸리티에서 암호 값을 볼 수 있습니다. (Bug #29848634)
  • LOCK TABLES 문이 적용된 상태에서 잠긴 테이블에 대한 메타데이터 변경으로 인해 세션 변수에 대한 성능 스키마 또는 ‘SHOW’ 쿼리가 opening_tables 상태로 중단될 수 있습니다. (Bug #29836204, Bug #92387)
  • SELECTWHERE 조건인 *A* AND (*B* OR *C* [OR ...]) 로 인해 범위가 불가능하게 되어 서버가 예기치 않게 종료되었습니다. (Bug #29770705)
  • JSON 형식의 감사 로깅의 경우 이제 id 필드에 65535보다 큰 값이 포함될 수 있습니다. 이전에는 로깅 작업을 실행할 때 초당 65536개 이상의 쿼리를 실행할 수 있었는데, 이는 id 값에 허용된 16비트를 초과했습니다. (Bug #29661920)
  • 연결 패킷이 불완전하면 클라이언트가 인증 플러그인 이름을 제대로 초기화하지 못할 수 있습니다. (Bug #29630767)
  • libmysqlclient C 클라이언트 라이브러리를 사용한 클라이언트 프로그램은 잘못된 형식의 세션 추적 정보가 포함된 OK 패킷을 수신하면 종료될 수 있습니다.(Bug #29297620, Bug #29630735)
  • 특정 상황에서 read_only 또는 super_read_only 시스템 변수를 활성화해도 SUPER 권한 없이 사용자에 의해 실행되는 동시 DDL 문이 차단되지 않았습니다. (Bug #28438114, Bug #91852)
  • mysqlpump 잘못된 보기를 포함하는 데이터베이스를 덤프하지 않고 종료하지만, 잘못된 보기가 존재하지만 덤프할 데이터베이스에 없는 경우에도 실패합니다. (Bug #27096081)