2016.12.28

MySQL

MySQL Community Server 5.6.35がリリースされました

オリジナル版:http://lists.mysql.com/announce/1135

2016年12月12日に、MySQL Community Server 5.6.35がリリースされました。同製品は、General Availability(GA版)となります。

Changes in MySQL 5.6.35(主な変更点)

 MySQL Enterprise Notes(MySQL Enterprise関連)

      * Enterprise Encryption for MySQL Enterprise Edition now
        enables server administrators to impose limits on maximum key
        length by setting environment variables. These can be used to
        prevent clients from using excessive CPU resources by passing
        very long key lengths to key-generation operations. For more
        information, see Enterprise Encryption Usage and Examples

        MySQL Enterprise Editionの「Enterprise Encryption」において、
        サーバ管理者が環境変数設定によるキーの長さの上限値を設定できるようになりました。
        これらは、キーが長いことが原因で、クライアントがキー生成のために
        過度のCPUリソースを使ってしまうことを防ぎます。
        詳細は下記のEnterprise暗号化の使用方法と例をご確認ください。

       http://dev.mysql.com/doc/refman/5.7/en/enterprise-encryption-usage.html
       (Bug #19687742)
       

 Security Notes(セキュリティ関連)

      * Incompatible Change: These changes were made to
        mysqld_safe:
      
        【非互換の変更】 
        以下の変更が、mysqld_safeに適用されています。

           + Unsafe use of rm and chown in mysqld_safe could result in
           privilege escalation. chown now can be used only when the
           target directory is /var/log. An incompatible change is that
           if the directory for the Unix socket file is missing, it is no
           longer created; instead, an error occurs. Due to these
           changes, /bin/bash is required to run mysqld_safe on Solaris.
           /bin/sh is still used on other Unix/Linux platforms.
           
           mysqld_safeでrmとchownコマンドを安全(適切)に使用しないと、
           権限エスカレーションが発生してしまいます。
           chownコマンドは/var/logディレクトリにのみ使用できます。
           もしディレクトリにUnixソケットファイルがない場合、暗黙で作成されることなく
           代わりにエラーが発生するようになり、この挙動が非互換となります。
           これらの変更により、Solaris上でmysqld_safeを実行するためには/bin/bashが必要となります。
           /bin/shは他のUnix/Linuxプラットフォーム上で引き続き使用されています。

           + The --ledir option now is accepted only on the command line,
           not in option files.
           
           --ledirオプションはオプションファイルではなく、
           コマンドラインでのみ使用できるようになりました。

           + mysqld_safe ignores the current working directory.  Other
           related changes:
           
           mysqld_safeは作業中のカレントディレクトリを無視します。
           その他の関連する変更点は下記となります。

           + Initialization scripts that invoke mysqld_safe pass
           --basedir explicitly.
           
           mysqld_safeを起動する初期化スクリプトでは、明示的に--basedirを指定します。
           
           + Initialization scripts create the error log file only if the
           base directory is /var/log or /var/lib.
           
           初期化スクリプトは、ベースディレクトリが
           /var/log か /var/lib である場合にのみ、エラーログファイルを作成します。

           + Unused systemd files for SLES were removed. (Bug #24483092,
           Bug #25088048) References: See also: Bug #24464380, Bug
           #24388753.
           
           SLES用の未使用のシステムファイルは削除されました。

      * MySQL Server now includes a plugin library that enables
        administrators to introduce an increasing delay in server
        response to clients after a certain number of consecutive failed
        connection attempts. This capability provides a deterrent that
        slows down brute force attacks that attempt to access MySQL user
        accounts. For more information, see The Connection-Control Plugin
  (http://dev.mysql.com/doc/refman/5.6/en/connection-control-plugin.html).
  
        MySQLサーバに新しいプラグイン(ライブラリ)を追加されました。
        そのプラグインにより、一定回数連続して接続に失敗した後に、
        クライアントへのサーバ応答の遅延が拡大していることを
        管理者に知らせることができるようになりました。
        この機能は、MySQLユーザアカウントにアクセスしようとするブルートフォース攻撃を
        遅らせることのできる、抑止効果を持っています。
        詳細は下記のConnection-Controlプラグインをご確認ください。

      * OpenSSL is ending support for version 1.0.1 in December
        2016; see https://www.openssl.org/policies/releasestrat.html.
        Consequently, MySQL Commercial Server builds now use version
        1.0.2 rather than version 1.0.1, and the linked OpenSSL library
        for the MySQL Commercial Server has been updated from version
        1.0.1 to version 1.0.2j. For a description of issues fixed in
        this version, see https://www.openssl.org/news/vulnerabilities.html. 
        This change does not affect the Oracle-produced MySQL Community build of
        MySQL Server, which uses the yaSSL library instead.
        
        OpenSSLは2016年12月を以ってバージョン 1.0.1のサポートを終了します。
        その結果、MySQL Commercial Serverのビルドはバージョン1.0.1ではなく、バージョン1.0.2を使用し、
        MySQL Commercial ServerのリンクされたOpenSSLライブラリは
        バージョン1.0.1から1.0.2jにアップデートされています。

        このバージョンの修正された問題については、下記を確認してください。
        この変更は代わりにyaSSLライブラリに使用しているOracle-producedのMySQL
        コミュニティサーバのビルドには影響しません。

 Functionality Added or Changed(機能の追加・変更)

      * InnoDB: By default, InnoDB reads uncommitted data when
        calculating statistics. In the case of an uncommitted transaction
        that deletes rows from a table, InnoDB excludes records that are
        delete-marked when calculating row estimates and index
        statistics, which can lead to non-optimal execution plans for
        other transactions that are operating on the table concurrently
        using a transaction isolation level other than READ UNCOMMITTED.
        
        To avoid this scenario, a new configuration option,
        innodb_stats_include_delete_marked, can be enabled to ensure that
        InnoDB includes delete-marked records when calculating persistent
        optimizer statistics. (Bug #23333990)
        
        InnoDB:デフォルトでは、統計情報を計算する際にInnoDBは未コミットのデータを読み込みます。
        テーブルから行を削除する、未コミットのトランザクションが存在した場合、
        InnoDBは行の見積もりとインデックス統計情報を計算する時に削除マークが付いているレコードを
        除外します。これにより、READ UNCOMMITTED以外のトランザクション分離レベルを使用して、
        テーブル上で同時に操作されている他のトランザクションが、最適でない実行計画となってしまいます。
        このシナリオを避けるために、innodb_stats_include_delete_markedという
        新しいオプション変数が使用できるようになりました。
        この設定を有効にすると、永続的なオプティマイザ統計を計算しているときに
        InnoDBが削除マークの付いたレコードも含むようになります。
        
      * Unit testing now uses Google Mock 1.8. (Bug #24572381,Bug #82823)
        
        ユニットテストではGoogle Mock 1.8.が使われています。

 Bugs Fixed(バグ修正)

      * Incompatible Change: A change made in MySQL 5.7.8 for
        handling of multibyte character sets by LOAD DATA was reverted
        due to the replication incompatibility (Bug #24487120, Bug
        #82641) References: See also: Bug #23080148.
        
       【非互換の変更】
        MySQL5.7.8で実施されたLOAD DATAのマルチバイト文字処理の変更が、
        レプリケーションの非互換性を考慮して、元に戻りました。

      * InnoDB: The GCC mach_parse_compressed function should
        load one to five bytes depending on the value of the first byte.
        Due to a GCC bug, GCC 5 and 6 emit code to load four bytes before
        the first byte value is checked (GCC Bug #77673). A workaround
        prevents this behavior.  Thanks to Laurynas Biveinis for the
        patch. (Bug #24707869, Bug #83073)
        
        InnoDB:GCCのmach_parse_compressed関数は最初のバイト数に応じて1~5バイトをロードすべきです。
        GCCのバグにより、GCC5と6は初めのバイト数がチェックされる前に、
        4バイトをロードするコードを出力します。この動作を回避するよう、修正されました。

      * InnoDB: Due to a glibc bug, short-lived detached threads
        could exit before the caller had returned from pthread_create(),
        causing a server exit.  Thanks to Laurynas Biveinis for the
        patch. (Bug #24605956, Bug #82886)
        
        InnoDB:glibcバグにより、短い分離スレッドは呼び出し元がpthread_create()から返される前に
        終了してしまうため、サーバが落ちてしまう問題を修正しました。

      * InnoDB: On a table without an explicitly defined primary
        key, InnoDB did not replace the implicit clustered index
        (GEN_CLUST_INDEX) when a unique key was defined on a NOT NULL
        column. (Bug #24397406)
        
        InnoDB:明示的に定義されたプライマリーキーのないテーブルにおいて、InnoDBは
        ユニークキーがNOT NULL制約を持つカラムの場合、クラスタインデックス(GEN_CLUST_INDEX)を
        置き換えなかった問題を修正しました。

      * InnoDB: InnoDB failed to free memory used by the
        full-text optimizer thread. (Bug #24331265)
        
        InnoDB:InnoDBがフルテキストオプティマイザスレッドによって使用される
        メモリの開放に失敗していた問題を修正しました。

      * InnoDB: SHOW ENGINE INNODB STATUS output showed a
        "cleaning up" state for an idle thread. Thread state information
        was not reset after statement execution. (Bug #21974225, Bug #78777)
        
        InnoDB:SHOW ENGINE INNODB STATUSの出力が、アイドル状態のスレッドに対して
        cleaning upと表示されていました。スレッド状態情報が
        クエリが実行された後にリセットされていなかった問題を修正しました。

      * InnoDB: After a server restart, concurrent INSERT
        operations a table with an auto-increment primary key resulted in
        a duplicate entry error. The current auto-increment value was not
        changed after auto_increment_increment and auto_increment_offset
        settings were modified. (Bug #20989615, Bug #76872)
        
        InnoDB:サーバを再起動した後、auto-incrementプライマリキーを持つテーブルで
        同時にINSERT文を行うと、重複エントリーエラーが起こっていました。
        auto_increment_incrementとauto_increment_offset設定が変更されていれば、
        現在のauto-increment値は変更されません。

      * Replication: Tables with special DEFAULT columns, such as
        DEFAULT CURRENT_TIMESTAMP, that existed only on a slave were not
        being updated when using row-based replication
        (binlog_format=ROW). (Bug #22916743)
        
        DEFAULT CURRENT_TIMESTAMPのように特別なDEFAULTカラムを持つテーブルがある場合、
        行ベースレプリケーションを使用しているとき(binlog_format=ROW)に、
        スレーブのテーブルが更新されない問題を修正しました。

      * Replication: Enabling semisynchronous replication when a
        server was during the commit stage could cause the master to stop
        unexpectedly. This was related to the patch for Bug# 75570. (Bug #22202516)
        
        レプリケーション:準同期レプリケーションを有効にすると、
        サーバがコミットの段階で予期せずマスターが停止してしまう問題を修正しました。

      * CREATE TABLE with a DATA DIRECTORY clause could be used
        to gain extra privileges. (Bug #25092566)
        
        DATA DIRECTORY節を付けてCREATE TABLEを行うと、
        余分な権限が付与されて使用することができていた問題を修正しました。
        
      * Warnings occurring during CREATE TABLE ... SELECT could
        cause a server exit. (Bug #24595992)
        
        CREATE TABLE ... SELECTを実行するとWarningsが起きて、サーバが落ちてしまう問題を修正しました。

      * The .mylogin.cnf option file is intended for use by
        client programs, but the server was reading it as well.  
        The server no longer reads it. (Bug #24557925)
        
        .mylogin.cnfオプションファイルは、
        クライアントプログラムによって使用されることを目的としていましたが、
        サーバも同様にそれを読み込んでいました。
        今ではサーバは.mylogin.cnfオプションファイルを読み込まないよう、修正されました。

      * The data structure used for ZEROFILL columns could
        experience memory corruption, leading eventually to a server
        exit. (Bug #24489302)
        
        ZEROFILLカラムに使用されるデータ構造はメモリ破損を引き起こし、
        結果としてサーバが落ちてしまう問題を修正しました。

      * Use of very long subpartition names could result in a
        server exit. Now partition or subpartition names larger than 64
        characters produce an ER_TOO_LONG_IDENT error. (Bug #24400628,
        Bug #82429)
        
        非常に長いサブパーティション名を使用しているとサーバが落ちてしまう問題を修正しました。
        64文字以上のパーティション名もしくはサブパーティション名は
        ER_TOO_LONG_IDENTエラーを起こすようになりました。

      * The optimizer could choose ref access on a secondary
        index rather than range access on the primary key, even when the
        cost was higher. (Bug #23259872, Bug #81341)
        
        コストが高い場合でも、オプティマイザがプライマリーキーに対するrangeアクセスではなく、
        セカンダリインデックスに対するrefアクセスを選択できていた問題を修正しました。

      * For some deeply nested expressions, the optimizer failed
        to detect stack overflow, resulting in a server exit.  (Bug #23135667)
        
        深くネストされた式の場合、オプティマイザがスタックオーバーフローの検知に失敗して
        サーバが落ちてしまっていた問題を修正しました。

      * The Performance Schema events_statements_summary_by_digest table could contain multiple
        rows for the same statement digest and schema combination, rather
        than the expected single (unique) row. (Bug #22320066, Bug #79533)
        
        パフォーマンススキーマのevents_statements_summary_by_digestテーブルは
        同じ文のダイジェストとスキーマの組み合わせに対して
        単一(ユニーク)行ではなく、複数行を含んでいた問題を修正しました。


上記以外にも、さまざまな変更やバグ修正が行われています。
それらを全て確認する場合は、下記リリースノートを参照して下さい。

http://dev.mysql.com/doc/relnotes/mysql/5.6/en/news-5-6-35.html

 

MySQL5.6は、世界的に注目されているオープンソースデータベース「MySQL」の1つ前の開発バージョンです(最新はMySQL5.7となります)。MySQL5.5の後継バージョンにあたり、様々な機能や特徴があります。

・セキュリティ機能の向上(mysql_config_editorの実装、SHA-256のサポート)
・InnoDB、オプティマイザ、レプリケーション、パーティショニングの性能向上 
・GTID(Global Transaction ID)の実装 
・Performance_schemaの機能強化 
・オンラインDDLの実装

MySQL5.6には、上記以外にも様々な特徴があります。詳細については、下記URLを参照してください。

https://dev.mysql.com/doc/refman/5.6/en/mysql-nutshell.html

新たなサーバにMySQL5.6をインストール、または利用中のMySQLからMySQL5.6にアップグレードする際の情報については、以下を参照してください。

https://dev.mysql.com/doc/refman/5.6/en/installing.html

下記のダウンロードページから、MySQLのソースコード及び多数のプラットフォーム用バイナリが入手可能です。

http://dev.mysql.com/downloads/mysql/

その他、ご不明な点がございましたら、以下の公式リファレンスマニュアルをご利用いただけます。

http://dev.mysql.com/doc/refman/5.6/en/

以上