2018.01.19

MySQL

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

オリジナル版:https://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-21.html

2018年1月15日に、MySQL 5.7.21がリリースされました。同製品は、General Availability(GA版)となります。

Changes in MySQL 5.7.21 (主な変更点)

Audit Log Notes(アカウント管理関連)

* MySQL Enterprise Audit now supports compression and encryption of audit log files. 
  Encryption is based on a user-defined password. To use this feature, the MySQL keyring
  must be enabled because audit logging uses it for password storage. MySQL Enterprise 
  Audit also now supports logging in JSON format, in addition to the existing XML formats. 
  For JSON format, functions are available that provide runtime log reading capabilities. 
  For additional information, see MySQL Enterprise Audit.

  MySQL Enterprise Audit機能で監査ログの圧縮および暗号化がサポートされました。暗号化は
  ユーザが定義したパスワードに基づいて行われます。この機能を使うためには、MySQLのkeyring
  を有効にする必要があります。監査ロギング用のパスワードを保管するのに同機能を利用する
  ためです。また、従来のXML形式に加えJSON形式にも対応するようになりました。ロギングが
  実行中でも変更が可能です。詳細は別ページをご確認ください。


Configuration Notes(設定関連)

* For RHEL, SLES, and Fedora RPMs, the default plugin directory for debug builds has
  been changed from /usr/lib64/mysql/plugin to /usr/lib64/mysql/plugin/debug. 
  (Bug #27072155, Bug #88363)

  RHEL, SLES, FedoraのRPMパッケージにおいて、デバッグビルド用のプラグインディレクトリの
  デフォルトが /usr/lib64/mysql/plugin から /usr/lib64/mysql/plugin/debug に変更しれました。

* The installation scripts for MySQL Enterprise Audit and MySQL Enterprise Firewall now 
  create their associated tables in the mysql system database as InnoDB rather than 
  MyISAM tables. (Bug #26323351, Bug #26906601)

  MySQL Enterprise Audit および MySQL Enterprise Firewall のインストールスクリプトが
  作成するテーブルがMyISAMではなくInnoDBになりました。

* The hardcoded memory page size of 8KB for the memory-mapped transaction coordinator was
  too small for platforms such as ARM64 and PowerPC where the page size is much larger. 
  The server now invokes a system call to get the page size of the current platform rather 
  than using a hardcoded value. A consequence for the --log-tc-size option is that the 
  minimum and default values are now 6 times the page size. 
  Also, the value must be a multiple of the page size. Thanks to Alexey Kopytov for 
  the patch. (Bug #23014086, Bug #80818, Bug #26931470, Bug #87995)

  ARM64 や PowerPC といったメモリページサイズが大きなプラットフォームでは、トランザクション
  コーディネータがマッピングする 8KB メモリページは小さすぎます。そこでMySQLサーバは
  ハードコードされた固定値を使うのではなく、プラットフォームのページサイズを取得し、設定値と
  するようになりました。そのため、--log-tc-sizeオプションの最小値(デフォルト値)は
  ページサイズの6倍になっています。また、その値は複数ページサイズに対応しています。


Deprecation and Removal Notes(非推奨および削除関連)

* InnoDB: The innodb_undo_tablespaces configuration option is deprecated and will be removed 
  in a future release.

  innodb_undo_tablespaces オプションが非推奨となり、将来のバージョンで削除されます。


Performance Schema Notes(パフォーマンススキーマ関連)

* The Performance Schema setup_timers table is now deprecated, to be removed in MySQL 8.0, 
  as is the TICK row in the performance_timers table.

  パフォーマンススキーマのsetup_timersテーブルが非推奨となり、MySQL8.0で削除されます。
  そのままパフォーマンススキーマテーブルの TICK 行が代わりとなります。


Pluggable Authentication(接続可能な認証)

* For the LDAP authentication plugins, handling of the group search attribute indicated by 
  the authentication_ldap_sasl_group_search_attr and authentication_ldap_simple_group_search_attr 
  system variables is more flexible. If the group search attribute is isMemberOf, LDAP authentication 
  directly retrieves the user attribute isMemberOf value and assign it as group information. 
  If the group search attribute is not isMemberOf, LDAP authentication searches for all groups 
  where the user is a member. (The latter is the default behavior.) This behavior is based on how LDAP 
  group information can be stored two ways: 1) A group entry can have an attribute named memberUid or 
  member with a value that is a user name; 2) A user entry can have an attribute named isMemberOf with 
  values that are group names. (Bug #26317645)

  LDAP認証プラグインについて、authentication_ldap_sasl_group_search_attr変数と authentication_ldap_
  simple_group_search_attr変数によるグループ検索の属性がよりフレキシブルになりました。
  グループ検索方法が"isMemberOf"の場合は、LDAP認証は"isMemberOf"で直接検索を行い、グループ情報を
  取得します。"isMemberOf"でない場合は、メンバーとなっているユーザのグループを全て検索します。
  後者がデフォルトの挙動です。この挙動は、LDAPグループ情報がどのように保持されているかどうかで決まります。
  
  1) グループエントリには、memberUidという属性を持つ、もしくはユーザ名を持っているメンバーを登録できる
  2) ユーザエントリにはisMemberOfというグループ名の属性を持つことができる

* For the LDAP authentication plugins, the group search attribute was fixed and not configurable. 
  Two new system variables now enable using custom group filters: 
  authentication_ldap_sasl_group_search_filter and authentication_ldap_simple_group_search_filter. 
  (Bug #26091340)

  LDAP認証プラグインでグループ検索の属性が修正され、設定できなくなりました。
  そのため、カスタムグループフィルタリング用に、2つの新しいシステム変数が使えるようになりました。
  authentication_ldap_sasl_group_search_filter and authentication_ldap_simple_group_search_filter. 


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

* Incompatible Change: Passwords are now restricted to a maximum of 256 characters for
  the sha256_password authentication plugin, and for the PASSWORD() function when 
  old_passwords=2. Also, the number of password hashing rounds is capped to limit 
  CPU time used. (Bug #27099029, Bug #27194270)

  【非互換の変更】sha256_password認証プラグインおよびold_passwords=2設定時の
  PASSWORD()関数について、パスワードの上限が256文字に制限されるようになりました。
  また、パスワードハッシュのラウンド回数は消費したCPU時間が上限になります。

* The linked OpenSSL library for the MySQL Commercial Server has been updated to 
  version 1.0.2n. Issues fixed in the new OpenSSL version are described at 
  http://www.openssl.org/news/vulnerabilities.html.

  MySQL商用版で参照されるOpenSSLのライブラリのバージョンが1.0.2nになりました。

  This change does not affect the Oracle-produced MySQL Community build of MySQL Server, 
  which uses the yaSSL library instead. (Bug #27212666, Bug #27236394)

  この変更は yaSSL ライブラリを代替として使っているMySQLコミュニティ版には無関係です。

* MySQL now supports key migration between underlying keyring keystores. This enables 
  DBAs to switch a MySQL installation from one keyring plugin to another. See Migrating Keys 
  Between Keyring Keystores.

  MySQLで鍵管理基盤同士の鍵のマイグレーションができるようになりました。これによりDBAが
  インストール時にkeyringプラグインを切り替えることができるようになります。詳細は
  公式ページを参照してください。


Test Suite Notes(テストスイート関連)

* Documentation for the MySQL Test Suite is now maintained in the MySQL source tree using
  Doxygen (see http://dev.mysql.com/doc/dev/mysql-server/latest/PAGE_MYSQL_TEST_RUN.html).
  The related Unix man pages that previously were produced from the old test suite manual
  are no longer updated and have gone out of date. Consequently, they are no longer 
  included in MySQL distributions. (Bug #27021754)

  MySQLのテストスイート向けドキュメントが Doxygen になりました。これまでUnixの man で
  表示されていた古いドキュメントは更新されなくなり、MySQLのディストリビューションに
  含まれなくなりました。

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

* Replication: Host names can now be specified as part of a whitelist for group replication 
  connections, using the group_replication_ip_whitelist system variable. Host names support 
  CIDR notation. Host names that resolve to IPv6 addresses are not supported.

  group_replication_ip_whitelistシステム変数を設定した時、Group Replication接続先の
  ホワイトリスト内にホスト名が指定できるようになりました。このホスト名には、CIDR記法も
  使用できます。なお、IPv6のIPアドレスへの解決はできません。

  For host names, name resolution takes place only when a connection request is made by 
  another server. A host name that cannot be resolved is not considered for whitelist 
  validation, and a warning message is written to the error log. Forward-confirmed 
  reverse DNS (FCrDNS) verification is carried out for resolved host names.
   
  ホスト名の名前解決は他サーバからリクエストがあった時にのみ行われます。ホワイトリストの
  チェックで名前解決ができなかった場合、Warningメッセージがエラーログに書かれます。
  その後、リバースDNSによる名前解決が試されます。

* Replication: The group_replication_allow_local_disjoint_gtids_join system variable has
  been deprecated and is scheduled for removal in a future version.

  【レプリケーション関連】group_replication_allow_local_disjoint_gtids_joinシステム変数が
  非推奨となり、将来のバージョンで削除予定です。


Bugs Fixed(バグ修正)

* Important Change; Partitioning: Checking for tables that used the generic partitioning 
  handler could cause delays of several minutes when starting the MySQL Server. 
  To keep this from happening, the --disable-partition-engine-check option is now enabled 
  by default. (Bug #85830, Bug #25846957)

  【パーティション関連(重要な変更)】一般的なパーティショニングハンドラを使用している
  テーブルのチェックのせいで、MySQL起動値に数分間の遅延が発生することがありました。
  この事象を回避するため、--disable-partition-engine-checkオプションが追加され、
  デフォルトで有効になっています。

* Performance; JSON: Creating a representation of a JSON string now optimizes for the most 
  common case?that the string to be processed contains no special characters that need to 
  be escaped?scanning for the first special character in the string, and copying each 
  sequence of characters which do not require escaping in a single memcpy() call, 
  rather than checking each character in turn to determine whether it needed to be escaped, 
  escaping it if so, and then copying it, one by one, as was done previously.

  【JSON関連(パフォーマンス)】JSON文字列の値を作成した場合に、最も一般的なケースに
  最適化されます。例えば、エスケープが必要な特殊文字が含まれていないか一文字ずつチェックする
  のではなく、特殊文字が存在しないか全体をスキャンし、一回のmemcpy()で対象外の文字を
  まとめてコピーします。

* InnoDB: Multiple updates from different clients on a partitioned table caused an unexpected 
  lock wait timeout due to an incorrectly set lock type. (Bug #26731025, Bug #87619)

  【InnoDB関連】パーティショニングされたテーブルに対して異なるクライアントから複数のUPDATEが
  実行された時に、正しくない種類のロックが実行されるせいで予期しないロック待ちタイムアウトが
  発生してしまう不具合を修正しました。

* InnoDB: An ALTER TABLE operation caused the server to halt. (Bug #26492721)

  【InnoDB関連】ALTER TABLEを実行するとサーバが終了してしまう不具合を修正しました。

* InnoDB: The innodb_table_stats data dictionary table was not updated with new partition 
  names when renaming a partitioned table. (Bug #26390658, Bug #86927)

  【InnoDB関連】パーティショニングされたテーブルをリネームする際、innodb_table_stats
  データディクショナリテーブルが更新されなくなりました。

* InnoDB: A FLUSH TABLES operation failed to drop an aborted index. While removing
  the table from the cache, the clustered index was dropped prior to checking for 
  the aborted index. (Bug #26256456, Bug #86607)

  【InnoDB関連】FLUSH TABLEがアボートしたインデックスの削除に失敗していました。
  キャッシュからテーブルを削除している時、クラスタインデックスがアボートしたインデックス
  のチェック前に削除されていたことが原因です。

* InnoDB: An iterative approach to processing foreign cascade operations resulted in 
  excessive memory use. (Bug #26191879, Bug #86573)

  外部キーのカスケード操作が過度のメモリを消費してしまう不具合を修正しました。

* InnoDB: An INSERT operation on a table with a spatial index raised an assertion due to 
  a failure that occurred during a lock conflict check. (Bug #25729649)

  地理インデックスが貼られたテーブルに対してINSERTを実行した時、ロックの競合チェックが
  失敗したことによりアサーションエラーが発生する不具合を修正しました。

* InnoDB: Warnings that should only appear in a debug version of MySQL were printed to
  the error log when the length of the history list exceeded 2000000. 
  (Bug #24296076, Bug #82213)
  
  【InnoDB関連】MySQLのデバッグバージョンでのみ出力されるWarningが、履歴リストの長さが
  2000000を超えた時にエラーログに出力されてしまう不具合を修正しました。

* InnoDB: Attempting to reduce the buffer pool size to less than the buffer pool chunk 
  size did not report a warning. (Bug #23590280)

  【InnoDB関連】バッファプールの chunk size よりも小さくなるようにバッファプールサイズを
  引き下げた場合にワーニングが発生するようになりました。

* InnoDB: Full-text search on indexed columns that use a binary collation did not return
  case sensitive matches. (Bug #21625016, Bug #78048)

  collation=binaryが設定されたインデックスカラムに対して全文検索を実行しても正しい検索
  結果が得られない不具合を修正しました。

* Partitioning: In certain cases when fetching heap records a partition ID could be set
  to zero. (Bug #86255, Bug #26034430)
    
  【パーティション関連】ヒープレコードをフェッチする特定のケースで、パーティションIDに
  "0"を設定できる不具合を修正しました。

* Replication: If Group Replication was configured to start on server boot when the server 
  was being initialized using --initialize or --initialize-insecure, because the replication 
  applier infrastructure was not initialized this resulted in an assertion. 
  Now, Group Replication is not started when the server is being initialized. (Bug #26802395)

  【レプリケーション関連】--initialize もしくは --initialize-insecure オプションを使って
  サーバを初期化してGroup Replicationを開始した時に、replication applierが初期化されて
  いないことが原因でアサーションエラーが発生していました。
  現在は、サーバが初期化中にGroup Replicationが起動しなくなりました。

* Replication: With semisynchronous replication in use, if RESET MASTER was issued 
  while an active transaction was waiting for an acknowledgement from the slave, 
  the count of waiting sessions in the Rpl_semi_sync_master_wait_sessions server status 
  variable was incorrect after the wait was completed. (Bug #26748533)

  【レプリケーション関連】準同期レプリケーション環境で、アクティブなトランザクションが
  スレーブからのACKを待っている時にRESET MASTERが実行されると待機中セッションのカウント
  (Rpl_semi_sync_master_wait_sessionsステータス変数)が不正な値になってしまう不具合を
  修正しました。

* Microsoft Windows: On Windows, with the myisam_use_mmap and flush system variables 
  enabled, MyISAM did not always flush table files properly. (Bug #26880757)

  【MS Windows関連】Windows環境で myisam_use_mmap 変数とフラッシュシステム関連の変数が
  有効な時に FLUSH TABLE が正常に処理されないことがある不具合を修正しました。

* Microsoft Windows: On Windows, resolution was improved of a timer used for query 
  performance assessment. (Bug #22305994, Bug #26734457)

  【MS Windows関連】クエリ性能の評価に使われていたタイマーの性能が向上しました。
  
* VALUES() was not handled correctly in some cases. (Bug #26881946)

  VALUES()関数がいくつかのケースで正常に処理されない不具合を修正しました。

* The Performance Schema now stores rewritten rather than raw SQL statement text 
  when available. (Bug #26732229)

  パフォーマンススキーマが、生のSQLではなく書き換えた状態のものを可能な限り保持
  するようになりました。

* Incorrect results or a server exit could result when SHA2() was passed a user-defined 
  variable in some character sets. (Bug #26704451)

  SHA2()が一部の文字コード環境で、ユーザ定義変数に使用された場合に不正な結果、もしくは
  サーバダウンが発生してしまう不具合を修正しました。
  
* Creating a table with excessive index information could cause a server exit. (Bug #26529369)
  
  過度のインデックス情報を記載してCREATE TABLEを実行した時にサーバがダウンする場合がありました。

* REFERENCES privilege checking could use the incorrect database in some cases. (Bug #26106655)

  対象外のデータベースでもREFERENCES権限が機能してしまう不具合を修正しました。

* Incorrect results could occur on a table with a unique index when the optimizer chose 
  a loose index scan even though the unique index had no index extensions. 
  (Bug #25989915, Bug #86165, Bug #26532061, Bug #87207)

  ユニークインデックスが貼られたテーブルに関して、インデックス拡張が行われない場合でも
  オプティマイザが loose index scan を選択してしまった時にクエリの結果が不正になってしまう
  不具合を修正しました。

* Executing a stored procedure containing a statement that created a table from the contents
  of certain SELECT statements could result in a memory leak. (Bug #25586773)

  SELECT文からテーブルを作成するCREATE TABLE文を含むストアドプロシージャを実行した時に、
  メモリリークが発生してしまう不具合を修正しました。

* For geometry calculations, invalid input parameters could lead to an incorrect result 
  buffer and cause an assertion to be raised or a server exit. (Bug #25062396)

  GIS情報の計算時に不正なパラメータが入力されていると、正常でない結果バッファになり、
  アサーション、もしくはサーバダウンが発生する不具合を修正しました。

* Setting the MYSQL_GROUP_SUFFIX environment variable had no effect. (Bug #23072792)
  
  MYSQL_GROUP_SUFFIX 環境変数が機能していませんでした。
  
* A circular dependency problem involving sql/sql_builtin.cc was resolved. (Bug #16877045)
  
  sql/sql_builtin.ccの依存関係問題が解消されました。
  
* A prepared statement containing an ORDER BY list that referred to a parameter was not
  always handled correctly. (Bug #87863, Bug #26867652)

  パラメータの一覧をORDER BYする prepared statement が正常に処理されないことがある不具合を
  修正しました。
上記以外にも、さまざまな変更やバグ修正が行われています。それらを全て確認する場合は、下記リリースノートを参照して下さい。 https://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-21.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/

以上