2017.04.13

MySQL

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

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

2017年4月10日に、MySQL 5.7.18がリリースされました。同製品は、General Availability(GA版)となります。


Changes in MySQL 5.7.18 (主な変更点)

 DTrace Support(STrace関連)

     * Support for DTrace is deprecated and is removed in MySQL 8.0.
       
       DTraceのサポートが非推奨となりました。MySQL8.0からは完全になくなります。

 Packaging Notes(パッケージ関連)

     * Changes in RPM package structure require a larger set of packages to be removed to 
       install MySQL Server cleanly. (Bug #25603087)

       RPMパッケージが、MySQL Serverを正常にインストールできるように、より多くのパッケージの
       削除を求めるようになりました。

     * To avoid potential race conditions, Debian packages now use the GNU install utility 
       rather than a combination of mkdir, touch, and chown. (Bug #25258829)

       潜在的な競合を避けるため、Debian向けのパッケージでは、従来のmkdir / touch / chown 
       ではなく、GNUの install utility を使用するようになりました。

     * The my-default.cnf.sh file (used to produce a default my-default.cnf or 
       my-default.ini file) is no longer included in source distributions and 
       my-default.cnf and my-default.ini are no longer included in or installed by 
       distribution packages. (Bug #22525354)

       "my-default.cnf.sh"(my-default.cnf/my-default.iniを生成するためのシェル)が
       ソースに含まれなくなりました。そのため、my-default.cnf および my-default.iniは
       今後作られなくなります。

 Parser Notes(パーサ関連)

     * PROCEDURE ANALYSE() syntax is now deprecated and is removed in MySQL 8.0.

       PROCEDURE ANALYSE()文は非推奨となり、MySQL8.0からは削除されます。

     * The use of \N as a synonym for NULL in SQL statements is deprecated and is removed 
       in MySQL 8.0. Use NULL instead.

       SQLステートメントの中で、"NULL"のシノニムとして"\N"を使用することは非推奨となり、
       MySQL8.0からは使えなくなります。"NULL"を使用してください。

       This change does not affect text file import or export operations performed with 
       LOAD DATA INFILE or SELECT ... INTO OUTFILE, for which NULL continues to be 
       represented by \N. See LOAD DATA INFILE Syntax.

       "LOAD DATA INFILE" や "SELECT ... INTO OUTFILE"などによるテキストファイルの
       インポート/エクスポート処理は、この変更の影響を受けません。詳細は、"LOAD DATA INFILE"
       のマニュアルを参照してください。

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

     * The keyring_okv plugin no longer supports RSA or DSA key types. (Bug #25540639)
       
       keyring_okvが、RSA or DSA形式の鍵をサポートしなくなりました。

 X Plugin Notes(関連)

     * The MYSQLX_TCP_PORT CMake option was ignored. (Bug #25493867, Bug #84804)

       CmakeのMYSQLX_TCP_PORTオプションが無視されていた不具合を修正しました。

     * Connections were released which were not initialized when validation occurred. 
       (Bug #25392280)

       バリデーションにひっかかった時に、初期化されていない接続が解放されてしまう
       不具合を修正しました。

     * The Mysqlx_notice_warning_sent and Mysqlx_notice_other_sent status variable values
       did not increment as expected. (Bug #25289949, Bug #84258, Bug #25290001, Bug #84260)

       Mysqlx_notice_warning_sent, Mysqlx_notice_other_sentステータス変数の値が
       正しくインクリメントされなかった不具合を修正しました。

     * The manual definition of the MYSQL_DYNAMIC_PLUGIN macro was redundant. 
       (Bug #25162590, Bug #83988)

       MYSQL_DYNAMIC_PLUGINマクロのマニュアル定義は不要でした。

     * IPv6 connectivity support defined a new system variable Mysqlx-bind-address with
       the default value of '0.0.0.0', but the default value should have been '*' so that 
       connections to X Plugin may be made using an IPv6 address, an IPv4 address, 
       or a hostname. (Bug #25047909, Bug #83688)

       IPv6接続をサポートしたのに伴い、Mysqlx-bind-addressパラメータ変数のデフォルト値を
       "0.0.0.0" から "*" に変更しました。これにより、IPv6 / IPv4 / hostname の全ての
       ケースに対応することができます。

     * On Linux, MySQL Shell in JavaScript and Python interactive mode hid collections 
       if the letter case in the collection name was not uniform. (Bug #24848125)
       
       Linux上で、コレクション名のレターケースが統一されていない場合、JavaScriptおよび
       PythonでMySQL Shellを使った時にコレクションが見えなくなる不具合を修正しました。

     * If multiple user accounts exist that match the authenticating user, the X Plugin 
       would attempt to authenticate all matching accounts instead of the best matching 
       account. (Bug #24847537)
       
       ユーザ認証時に複数のユーザに適合した場合、最も適合するユーザ1つではなく
       全ユーザに対して認証を行ってしまう不具合を修正しました。

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

     * Replication: View change events from a Group Replication group can now be replicated 
       to an external multithreaded slave (MTS) of type DATABASE. (Bug #25170698)
       
       【レプリケーション】 Group Replicationグループから届いたビューの変更が、
       DATABASEタイプのマルチスレッドスレーブとしてレプリケーションされるようになりました。
       
     * Replication: When a negative or fractional timeout parameter was supplied to 
       WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS(), the server behaved in unexpected ways. 
       With this fix: (Bug #24976304, Bug #83537)
       
       【レプリケーション関連】WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS()に、負の数もしくは小数が
       渡された時に、MySQLが予期せぬ挙動をしてしまう不具合を修正しました。内容は以下の通り。

       + A fractional timeout value is read as-is, with no round-off.
       
         小数の値はそのまま適用され、四捨五入されることはありません。
       
       + A negative timeout value is rejected with an error if the server is on 
         a strict SQL mode; if the server is not on a strict SQL mode, the value makes
         the function return NULL immediately without any waiting and then issue a warning.
         
         もし、サーバでstrict SQLモードが設定されている場合は、負の数が渡された時に
         エラーになります。strict SQLモードではない場合は、NULLを返すようになります。
         (待ち状態やWarningは発生しません)

     * The performance of UTF-8 binary collations was improved. 
       (Bug #24788778, Bug #83247, Bug #25076862)
       
       UTF-8のバイナリコレクションの性能が向上しました。

     * mysql_secure_installation is more strict about what it considers valid yes and no 
       responses. (Bug #13344753, Bug #62925)
       
       mysql_secure_installationスクリプトの"yes"/"no"判定がより厳密になりました。

     * The replace utility is deprecated and will be removed in MySQL 8.0. If you wish to 
       continue using this utility, be sure to retain a copy from an installed version of 
       MySQL.
       
       replace utilityが非推奨になり、MySQL8.0からは削除されます。もし、このutilityを
       継続して使いたい場合、インストールされたMySQLバージョンからのコピーが保持できて
       いるか、よく確認してください。

 Bugs Fixed(バグ修正)

     * InnoDB: The restriction that required the first undo tablespace to use space ID 1 
       was removed. The first undo tablespace may now be assigned a space ID other than 1. 
       Space ID values for undo tablespaces are still assigned in a consecutive sequence. 
       (Bug #25551311)
       
       【InnoDB関連】最初のundoテーブルスペースでは"ID:1"を使わなければいけない、という制限が
       なくなりました。そのため、1以上のスペースIDが割り当てられる可能性があります。
       ただし、undoテーブルスペースに割り当てられるスペースIDは、これまで通りシーケンシャルな
       数字になります。

     * InnoDB: A DROP TABLE operation raised an assertion on a server with an 
       innodb_force_recovery setting of 5 or 6. DROP TABLE is no longer permitted with 
       these innodb_force_recovery settings. (Bug #25385590)

       References: This issue is a regression of: Bug #19779113.
       
       【InnoDB関連】innodb_force_recovery変数に "5" or "6" が設定されているときに
       DROP TABLEを実行するとアサーションエラーが発生していました。
       そのため、innodb_force_recovery変数が上記の設定になっている場合、DROP TABLEが
       実行できなくなりました。
       
       この問題は、Bug #19779113のリグレッションとなります。

     * InnoDB: Compiling the server without the Performance Schema caused a build failure. 
       (Bug #25348787)
       
       【InnoDB関連】Performance_schemaなしでMySQL serverをコンパイルした時に、ビルドエラーが
       発生する不具合を修正しました。

     * InnoDB: During read-ahead, the wrong page size was used to calculate the tablespace 
       size. (Bug #25330449)
       
       【InnoDB関連】read-ahead(先読み)が有効になっているときに、間違ったページサイズで
       テーブルスペースのサイズが計算されてしまう不具合を修正しました。

     * InnoDB: Disabling macros such as UNIV_PFS_MUTEX, UNIV_PFS_RWLOCK, and UNIV_PFS_THREAD 
       caused compilation errors. (Bug #25251082)
       
       【InnoDB関連】UNIV_PFS_MUTEX, UNIV_PFS_RWLOCK, UNIV_PFS_THREAD などのマクロを
       無効にしたときに、コンパイルエラーが発生する不具合を修正しました。

     * InnoDB: A NULL virtual column field name in a virtual index caused a server exit 
       during a field name comparison that occurs while populating virtual columns affected 
       by a foreign key constraint. (Bug #25222337)
       
       【InnoDB関連】仮想カラムの名前が空のときに、外部キー制約の影響でMySQLが強制終了
       してしまう不具合を修正しました。

     * InnoDB: A server exit on restart was caused by missing my_thread_init() and 
       my_thread_exit() functions for background threads that initialize the st_my_thread_var 
       structure. (Bug #25167032)
       
       【InnoDB関連】st_my_thread_varを初期化する my_thread_init() / my_thread_exit()関数が
       失敗した時にサーバが異常終了してしまう不具合を修正しました。

     * InnoDB: A gap lock was taken unnecessarily during foreign key validation while using
       the READ COMMITTED isolation level. (Bug #25082593)
       
       【InnoDB関連】トランザクション分離レベルが"READ COMMITTED"の場合、外部キーの
       バリデーション中に不要なギャップロックを取得してしまう不具合を修正しました。

     * InnoDB: After a TRUNCATE TABLE operation on a table with a FULLTEXT index, space size 
       was incorrectly calculated resulting in an invalid read. (Bug #25053705)
       
       【InnoDB関連】FULLTEXTインデックスが含まれるテーブルにTRUNCATE TABLEを実行した後、
       スペースサイズの計算値が正しいものにならない不具合を修正しました。

     * InnoDB: An error in code related to table statistics raised an assertion in the 
       dict0stats.cc source file. (Bug #24585978)
       
       【InnoDB関連】テーブルの統計情報に関連するコード内でエラーが発生した時、
       dict0stats.ccソースファイルのアサーションエラーが発生する不具合を修正しました。

     * InnoDB: A concurrent DML operation during an in in-place ALTER TABLE operation that 
       rebuilt the table did not update a virtual index, resulting in a mismatch between 
       the virtual index and clustered index. (Bug #23219499)
       
       【InnoDB関連】in-placeのALTER TABLE実行中に、並行してDMLを発行した場合、
       仮想インデックスが更新されず、仮想インデックスとクラスタインデックスの間で
       不整合が発生してしまう不具合を修正しました。

     * InnoDB: A TRUNCATE TABLE operation held the dict_sys mutex while scanning for and 
       removing pages from the buffer pool, causing concurrent DDL operations to stall. 
       The mutex is now released during the scan and acquired again when the scan is 
       completed. (Bug #23070734, Bug #80060)
       
       【InnoDB関連】TRUNCATE TABLE文を実行した時、テーブルスキャンおよびバッファプールから
       データを削除している間、ずっとdict_sys(mutexロック)が取得されており、その結果
       並行するDDLの性能が劣化することがありました。現在は、テーブルスキャン中は mutexロックは
       解放され、スキャンの完了後にロックを再取得するようになりました。

     * InnoDB: SELECT COUNT(*) performance regressed in some cases due to a modification 
       introduced in MySQL 5.7.2 that caused InnoDB to count rows by traversing the clustered 
       index instead of a smaller secondary index. The modification was reverted. 
       (Bug #23046302, Bug #80580)
       
       【InnoDB関連】MySQL5.7.2で導入された、セカンダリインデックスが小さい場合であっても
       クラスタインデックスを使用してレコードの件数を数える挙動が原因で、SELECT COUNT(*)の
       性能が劣化してしまう場合がありました。現在は、この修正はなくなりました。

     * InnoDB: Performance Schema instrumentation for InnoDB file I/O was disabled on Windows. 
       (Bug #14025581)
       
       【InnoDB関連】Windows版MySQLで、Percormance_schema の「InnoDBのファイルI/O」関連の
       instrumentが無効になっていた不具合を修正しました。

     * InnoDB: The row_search_mvcc() function unnecessarily traversed the entire table for 
       a range query, which occurred when the record was not in the transaction read view. 
       (Bug #84202, Bug #23481444, Bug #25251375)
       
       【InnoDB関連】トランザクションが読み込んだレコードの中に目的のレコードが含まれて
       いなかった場合に、row_search_mvcc()関数が不必要なテーブルスキャンを実行してしまう
       不具合を修正しました。

     * Replication: MEMBER_STATE of a group replication member did not go from ERROR to 
       OFFLINE when the STOP GROUP_REPLICATION command was executed if the error state 
       was due to ER3092. (Bug #25674926)
       
       【レプリケーション関連】ER3092エラーが発生した時に、STOP GROUP_REPLICATIONを
       実行してもMEMBER_STATEが"ERROR"から"OFFLINE"に戻らない不具合を修正しました。

     * Replication: With flow control enabled, reaching a minimum flow control quota of 1 
       will made Group Replication not stop throttling when the cause of throttling was 
       no longer in effect. (Bug #25461354)
       
       【レプリケーション関連】Flow Controlが有効になっている時に、Flow Controlの作動条件の
       最低値に達した場合、条件を満たさなくなってもFlow Controlが引き続き動作してしまう
       不具合を修正しました。

     * Replication: Using an unresolvable host name in group_replication_group_seeds caused 
       START GROUP_REPLICATION to fail. The fix ensures that host names in 
       group_replication_group_seeds are validated when starting Group Replication and 
       the list must contain at least one valid address. Invalid addresses are ignored. 
       (Bug #25460324, Bug #84674)
       
       【レプリケーション関連】group_replication_group_seeds変数に名前解決が出来ない
       ホスト名を使用した場合、START GROUP_REPLICATIONが失敗します。現在は、この変数に
       一つでも有効な値が含まれていれば、START GROUP_REPLICATIONが成功するようになりました。
       なお、無効なアドレスは無視されます。

     * Replication: When starting Group Replication on an offline node, the node could be 
       configured for replication, but fail for recovery. (Bug #25256910)
       
       【レプリケーション関連】オフラインノード上で、Group Replicationを開始した時、
       そのノードのレプリケーションの設定が正しくても、リカバリに失敗してしまう不具合を
       修正しました。

     * Replication: Group Replication GCS was not discarding messages when a member within 
       the group was inactive. (Bug #25134074)
       
       【レプリケーション関連】グループ内のノードが非アクティブになった時に、ノード間で
       通信されるメッセージが破棄されていなかった不具合を修正しました。

     * Replication: When the MTS slave applier stopped because of an (injected) error, 
       it reported no useful information for troubleshooting. (Bug #24822686)
       
       【レプリケーション関連】マルチスレッドスレーブが、インジェクションエラーで停止した時に、
       トラブルシューティングに有用な情報を出力するようになりました。

     * Replication: When using a multi-threaded slave (slave_parallel_workers greater than 0) 
       the value of Seconds_Behind_Master was incorrect when rotating a relay log. 
       (Bug #23532304)
       
       【レプリケーション関連】マルチスレッドスレーブ(slave_parallel_workers>0)を有効に
       している場合に、リレーログのローテート時にSeconds_Behind_Masterが不正な値になってしまう
       不具合を修正しました。

     * For CREATE TABLE statements that specified the table name with a database qualifier and 
       included a DATA DIRECTORY or INDEX DIRECTORY option, an error occurred if there was 
       no default database. (Bug #25514146, Bug #84861)
       
       デフォルトデータベースが設定されていない場合に、database修飾子および DATA DIRECTORY or 
       INDEX DIRECTORYオプションが付いたCREATE TABLE文を実行するとエラーが発生する不具合を
       修正しました。

     * Starting the server with performance_schema_digests_size=1 caused an abnormal exit. 
       (Bug #25492129, Bug #84786)
       
       "performance_schema_digests_size=1"を設定してMySQL serverを起動した時に、
       異常終了していた不具合を修正しました。

     * mysqld_safe did not check whether the directory named by the --basedir option existed. 
       (Bug #25365194)
       
       mysqld_safeが、--basedirオプションで指定されたディレクトリが存在するかどうかチェックを
       していなかった不具合を修正しました。

     * mysqld_safe failed if the error log file named by the --log-error option was a FIFO. 
       (Bug #25356221, Bug #84427)
       
       --log-errorオプションで指定されたエラーログファイルがFIFO形式だった場合に、mysqld_safeが
       エラーとなる不具合を修正しました。

     * mysqld_safe could fail if the --datadir option value ended with a / character.
       (Bug #25319457)
       
       --datadirオプションの設定値が "/" で終わっている時に、mysqld_safeでエラーが発生することが
       あった不具合を修正しました。

     * A recent change to mysqld_safe caused the mysql.server script to be unable to start it 
       if the base directory was specified as an absolute path that differed from the 
       compiled-in default absolute path. (Bug #25319392, Bug #84263)
       
       最近のmysqld_safeに対する変更が原因で、baseディレクトリにコンパイル時のデフォルトとは
       異なる絶対パスが設定されている場合に mysql.server スクリプトが起動できなくなる不具合を
       修正しました。

     * The connection_control plugin failed to compile if the Performance Schema was disabled. 
       (Bug #25308357, Bug #84304)
       
       Performance_schemaが無効になっている場合に、connection_controlプラグインのコンパイルに
       失敗する不具合を修正しました。

     * Passwords did not expire correctly for accounts created using MySQL Workbench. 
       (Bug #25299309)
       
       MySQL Workbenchを使って作成したユーザのパスワードが正しくexpireできない不具合を修正しました。
       
     * Semicolon (;) characters within or between statements could cause distinct digests to 
       be generated from identical statements. (Bug #25244533, Bug #83253)
       
       セミコロン(;)がステートメントの中、もしくは間に含まれていた場合に、同じクエリから
       異なる結果が返ってしまう可能性がある不具合を修正しました。

     * For a client linked against libmysqlclient, invalid memory access could occur during 
       use of prepared statements. (Bug #25164932)
       
       libmysqlclientを使用したクライアントで、prepared statementsを使用した時に不正な
       メモリアクセスが発生することがあった不具合を修正しました。

     * Executing a stored procedure containing a query that accessed a view could allocate 
       memory that was not freed until the session ended. (Bug #25053286)
       
       ビューにアクセスするクエリを含んだストアドプロシージャを実行した時に、セッションが
       終了するまで割り当てられたメモリを解放しない不具合を修正しました。

     * A query could produce incorrect results if the WHERE clause contained a dependent 
       subquery, the table had a secondary index on the columns in the select list followed 
       by the columns in the subquery, and GROUP BY or DISTINCT permitted the query to use 
       a Loose Index Scan. (Bug #24671968, Bug #83005)
       
       以下の条件を満たすクエリが、正しくない結果を返す可能性があった不具合を修正しました。
       ・DEPENDENT SUBQUERYが含まれている
       ・サブクエリが使用するカラムにセカンダリインデックスが貼ってある
       ・GROUP BY or DISTINCT が、「Loose Index Scan」を使用できる

     * A regular expression pattern match into a large string could result in a server exit 
       due to memory allocation failure or integer overflow. (Bug #24449076, Bug #24449090)
       
       巨大な文字列に対して正規表現のパターンマッチを実行すると、メモリの割り当てエラーや
       オーバーフローが発生する可能性があった不具合を修正しました。

     * mysqldumpslow failed to parse timestamps in the slow query log; it had not been updated 
       to track a change in log timestamp format. (Bug #24007040)
       
       mysqldumpslowコマンドがスロークエリログのタイムスタンプのパースに失敗する不具合に関しては、
       フォーマットの変更に追随しないことになりました。

     * The QUOTE() function could allocate excessive memory. A limit of max_allowed_packet bytes 
       is now imposed and returns NULL with a warning for attempts to allocate more. 
       (Bug #23195404)
       
       QUOTE関数が過度のメモリを割り当ててしまう不具合を修正しました。max_allowed_packetが
       上限値となり、それ以上のメモリを割り当てそうになった場合は、NULLを返すようになります。

     * Queries that used an aggregate function with DISTINCT could produce incorrect results. 
       (Bug #22686994, Bug #80310)
       
       DISTINCT句を伴う集合関数を使用したクエリが、正しくない結果を返す可能性があった不具合を
       修正しました。

     * With the use_index_extensions flag of the optimizer_switch system variable disabled, 
       some SELECT DISTINCT queries could return incorrect results. (Bug #21749123, Bug #78244)
       
       optimizer_switch変数で、use_index_extensionsを無効にしている場合に、
       一部のSELECT DISTINCTクエリで正しくない結果を返す可能性があった不具合を修正しました。

     * In a replication environment, SET PASSWORD or ALTER USER could fail to execute on 
       the slave due to failure to parse the hash string correctly. (Bug #20228478)
       
       レプリケーション環境下で、スレーブ上で SET PASSWORD or ALTER USER を実行した時に、
       ハッシュ文字列のパースが上手くいかずにエラーとなる不具合を修正しました。

     * Timestamps for server-side prepared statements could be written to the binary log up to
       a second behind timestamps for the corresponding nonprepared statements, leading to time 
       value differences between master and slave servers. 
       (Bug #74550, Bug #19894382, Bug #25187670)
       
       server-side prepared statementsのタイムスタンプが、prepared statements以外のクエリよりも
       数秒遅れてバイナリログに記録されるため、マスタとスレーブ間で不整合が発生する可能性があった
       不具合を修正しました。

上記以外にも、さまざまな変更やバグ修正が行われています。それらを全て確認する場合は、下記リリースノートを参照して下さい。
http://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5.7.18.html

 

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

   - パフォーマンスやスケーラビリティの向上
   - JSON形式のサポート
   - マルチソースレプリケーションの実装
   - SYSスキーマの導入
   - セキュリティの向上
   - InnoDBにおけるGIS(位置データ)の対応

MySQL5.7には、上記以外にも様々な特徴があります。詳細については、下記URLを参照してください。
http://mysqlserverteam.com/whats-new-in-mysql-5-7-generally-available/

新たなサーバにMySQL5.7をインストール、または利用中のMySQLからMySQL5.7にアップグレードする際の情報については、以下を参照してください。
http://dev.mysql.com/doc/refman/5.7/en/installing.html

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

その他、ご不明な点がございましたら、以下の公式リファレンスマニュアルをご利用いただけます。
http://dev.mysql.com/doc/refman/5.7/en/

以上