월: 2017 2월

MySQL 5.6.33 to 5.6.35

5.6 의 Bug #76872 로 인해 5.6.33 to 5.6.35 로 업데이트 진행, 그 밖에 많은 치명적 버그에 대한 픽스 반영

#5.6.33
버그:
mysqld_safe 에서 –malloc-lib 에 인자는 /usr/lib, /usr/lib64, /usr/lib/i386-linux-gnu, /usr/lib/x86_64-linux-gnu 중 하나에 존재해야함
추가하여, –mysqld 와 –mysqld-version 은 옵션파일이 아니라 커맨드라인에서만 허용됨 (Bug #24464380)
Bug #24619033, Bug #82920.

#5.6.34
패키징:
RPM 과 Debian 패키지가 /var/lib/mysql-files 디렉토리를 생성

보안:
(비호환) secure_file_priv 에 대한 동작 변경
– secure_file_priv 을 NULL 로 세팅하면 import/export 오퍼레이션을 완전히 끔
– 서버기동시 안전하지 않은 값이면 경고를 로그에 찍음, datadir 이나 그 하위 디렉토리, empty 값, 모든 유저에게 엑세스가 가능한 디렉토리라면 안전하지 않은 경로로 간주. 존재하지 않는 경로라면, 에러로그에 에러메시지 찍고 exit.
– CMake INSTALL_LAYOUT 값에 따라 default secure_file_priv 정해짐, DEB, RPM, SLES, SVR4 는 /var/lib/mysql-files/
– INSTALL_SECURE_FILE_PRIVDIR CMake 옵션사용하여 소스빌드시 secure_file_priv 값 명시할 수 있음

#5.6.35
(비호환) mysqld_safe 에 다음 변경사항이 적용됨

– mysqld_safe 내 안전하지 않은 rm 과 chown 이 비정상적인 권한 확대를 시킴, chown 은 타겟 디렉토리가 /var/log/ 일때만 사용이 가능.
Unix socket 파일을 위한 디렉토리가 존재하지 않는다면 더 더 이상 생성되어지지 않음, 대신 에러가 발생. 이러한 변경점 때문에 솔라리스에서는 mysqld_safe 를 실행시키는데 /bin/bash 가 필요함. 유닉스/리눅스 플랫폼에서는 /bin/sh 을 여전히 사용
– –ledir 옵션은 옵션파일이 아닌 커맨드라인에서만 허용됨
– mysqld_safe 는 현재의 working 디렉토리를 무시함

다른 관련 변경점:

– 초기Initialization 스크립트에서 mysqld_safe 에 –basedir 를 명시적으로 invoke
– 베이스 디렉토리가 /var/log 또는 /var/lib 인 경우에만 초기Initialization 스크립트들이 에러로그 파일을 생성
– 사용되지않는 SLES을 위한 systemd 파일이 제거됨

(Bug #24483092, Bug #25088048, Bug #25378439, Bug #25378565)
References: See also: Bug #24464380, Bug #24388753, Bug #24619033, Bug #82920.

– 연속적으로 커넥션이 실패할 경우 해당 클라이언트에 대해 서버의 응답에 딜레이를 줄 수 있는 Connection-Control 어드민 라이브러리 플러그인 추가

– InnoDB: 기본적으로 InnoDB 는 통계정보를 계산할 때 커밋되지 않은 데이터를 읽지만, 커밋되지 않은 트랜잭션이 테이블을 delete 하는 경우 InnoDB 가 row 평가estimation 와 인덱스 통계를 계산할 때 delete-marked 레코드를 제외하였음, 이는 동시적으로 READ UNCOMMITTED 외 다른 아이솔레이션 레벨을 쓰는 트랜잭션이 돌고 있을 때 최적화되지 않은 실행 계획에서 돌 수 있었음, 이 시나리오를 피하기 위해서 새로운 설정 옵션 innodb_stats_include_delete_marked 를 추가하여 persistent 옵티마이저 통계정보를 계산할 때 확실하게 InnoDB 가 delete-marked 레코드를 포함시킬 수 있도록 함, innodb_stats_include_delete_marked 이 켜져있으면 ANALYZE TABLE 은 통계정보를 갱신할 때 delete-marketd 레코드를 포함시킴, 기본값 OFF (Bug #23333990)

– InnoDB: glibc 버그로, caller 가 pthread_create() 로 부터 리턴값을 받기 전에 짧은시간 붙었다가 떨어진detached 쓰레드가 종료exit되어 서버 크래시를 유발할 수 있었음 Thanks to Laurynas Biveinis for the patch. (Bug #24605956, Bug #82886)
https://bugs.mysql.com/bug.php?id=82886

– InnoDB: SHOW ENGINE INNODB STATUS 시 idle 쓰레드의 상태가 “cleaning up” 으로 보여짐, 쓰레드 상태가 구문 수행 후 리셋되지 않음 (Bug #21974225, Bug #78777)
https://bugs.mysql.com/bug.php?id=78777

– InnoDB: 서버 재기동 이후, AI가 PK로 잡혀있는 한 테이블에 대한 동시 INERT 시 중복 키 에러가 발생, auto_increment_increment 와 auto_increment_offset 세팅 이후 auto-increment 값이 변경되지 않았었음 (Bug #20989615, Bug #76872)
https://bugs.mysql.com/bug.php?id=76872

– 몇몇의 리눅스 기동 스크립트는 datadir 을 제대로 세팅하지 않음 (Bug #25159791)

– CREATE TABLE … SELECT 도중에 발생할 수 있는 warning 이 서버 크래시를 유발 (Bug #24595992)

– .mylogin.cnf 옵션파일이 클라이언트 프로그램에서 사용되어지는 것을 염두해두고 만든 건데 서버도 그 파일을 읽었었음, 더 이상 서버는 이 파일을 읽지 않음 (Bug #24557925)

– union 쿼리의 결과 튜플이 max_join_size 를 넘어서는 경우 서버 크래시를 유발 (Bug #23303485)

– 옵티마이저가 코스트가 높은데도 불구하고, 프라이머리의 range 엑세스가 아니라 세컨더리 인덱스의 ref 억세스를 함 (Bug #23259872, Bug #81341)
https://bugs.mysql.com/bug.php?id=81341

– nested expression 가 심층적으로 들어갈 때 옵티마이저가 스택 오버플로를 감지하는데 실패함, 이는 서버 크래시를 유발 (Bug #23135667)

– 서버가 오프라인될 때 퍼포먼스스키마 내의 race condition 이 서버 크래시를 유발 (Bug #22551677)

– 퍼포먼스스키마의 events_statements_summary_by_digest 테이블이 같은 구문 digest 일 경우 유니크한 row 에 집계되어야하는데 다수의 row 에 집계될 수 있었음 (Bug #22320066, Bug #79533)
https://bugs.mysql.com/bug.php?id=79533

– 많은 동시 서버 커넥션이 있을 때 qsort 에 대한 메모리 계산이 잘못되어 스택 오버플로우 에러를 발생 (Bug #73979, Bug #19678930, Bug #23224078)
https://bugs.mysql.com/bug.php?id=73979

Advertisements