2019.05.29

MySQL

MySQL 5.7.26 GA版(リリース日:2019年4月25日)

主な変更点

■ セキュリティ関連

・MySQL Commercial Server用のOpenSSLライブラリがバージョン1.0.2rに更新されました。OpenSSLの
 新しいバージョンで修正された問題は、http://www.openssl.org/news/vulnerabilities.htmlで
 説明されています。

 この変更は、Oracleが作成したMySQL ServerのMySQL Communityビルドには影響しません。これは、
 代わりにyaSSLライブラリを使用します。(Bug #28988091)

■ バグ修正

・重要事項:MySQLサーバーに含まれているlibeventライブラリがバージョン2.1.8にアップグレード
 されました。(Bug #28207237、Bug #29041505、Bug #29055011)

・InnoDB:最適化されたInnoDB内部のテンポラリテーブルはインプレースのUPDATE操作をサポートして
 いなかったために、削除マーク付きのレコード数が継続的に増加しました。大量の削除マーク付きの
 レコードは、予想よりも長いクエリ実行時間の原因となる可能性がありました。(Bug #29207450)

・InnoDB:生成された列の基本列情報が格納されていませんでした。(Bug #29021730)

・InnoDB:innodb_flush_method O_DIRECT_NO_FSYNC設定に関連するアサーションコードが、最近の
 その設定への変更により、無効になりました。アサーションコードが改訂されました。(Bug #29007731)

 参照:Bug #27309336。

・InnoDB:innochecksumユーティリティで発見されたメモリリークが削除されました。
 (Bug #28917614、Bug #93164)

・InnoDB:仮想カラムにインデックスを作成しようとして失敗した後のDDL操作で、アサーションエラーが
 発生しました。(Bug #28825718)

・InnoDB:Linux AIOハンドラ関数は、完了したI/Oイベントが成功したかどうかを確認できませんでした。
 (Bug #27850600、Bug #90402)

・InnoDB:CREATE TABLEスレッドによって呼び出された関数が、バックグラウンドスレッドによって
 解放された後にテーブルオブジェクトにアクセスしようとしました。

 (Bug #27373959, Bug #89126)

・InnoDB:INSERT ... ON DUPLICATE KEY UPDATE操作を同時に実行する2つのセッションで
 デッドロックが発生しました。タプルの部分的なロールバック中に、別のセッションがそれを更新する
 可能性がありました。このバグに対する修正は、Bug #11758237、Bug #17604730、Bug #20040791に
 対する修正を元に戻します。(Bug #25966845)

・InnoDB:結合テーブルへのアクセスに使用される方法がconstの場合、InnoDBが一致する行を
 複数回アンロックしようとしました。(Bug #20939184)

・InnoDB:INFORMATION_SCHEMA.TABLESのINDEX_LENGTHの値は、インデックスの追加時に更新され
 ませんでした。(Bug #19811005)

・パーティショニング:ALGORITHM=INPLACEを使用したALTER TABLEステートメントによって
 パーティションテーブルに追加されたAUTO_INCREMENTキーが、各パーティションで再起動されました。
 (Bug #92241、Bug #28573894)

・レプリケーション:WAIT_FOR_EXECUTED_GTID_SET()関数が小数部分を含むタイムアウト値(例:1.5)
 で使用された場合、キャストロジックのエラーは、タイムアウト値は最も近い整数秒に切り捨てられ、
 1秒未満の値(例:0.1)の場合はゼロに切り捨てられることを意味します。キャストロジックは、
 タイムアウト値が切り捨てなしで元の指定どおりに適用されるように修正されました。
 (Bug #29324564、Bug #94247)

・レプリケーション:group_replication_exit_state_actionの値によっては、グループを出る
 メンバーの動作に一貫性がありませんでした。エラーシナリオに関係なくグループを出る
 メンバーの動作を一致させるために、現在、group_replication_exit_state_action=READ_ONLYの
 メンバーが意図せずにグループを出る時には、開始時のメンバーのsuper_read_onlyモードが
 復元されます。これにより、group_replication_exit_state_action=ABORT_SERVERのメンバーの
 動作と一貫性のある動作になります。(Bug #28971639、Bug #28526591)

・レプリケーション:非推奨のgroup_replication_allow_local_disjoint_gtids_joinを使用する時は
 いつでも、ログメッセージが追加されます。(Bug #28971624)

・レプリケーション:過負荷のサーバーでは、メンバーがグループに参加した時に、そのポイントを
 示すVIEW_CHANGE_LOG_EVENTイベントが正しい場所に記録されていなかった可能性がありました。
 これにより、新しく参加するサーバーへのデータ転送やデータの分岐でエラーが発生する可能性が
 ありました。現在、VIEW_CHANGE_LOG_EVENTイベントはバイナリログの正しい場所に記録されます。
 さらに、イベントを記録する際の遅延について、警告が記録されます。(Bug #28971594)

・レプリケーション:アプライヤスレッドがテーブルを開く処理中に停止した場合、エラーが
 設定されなかったために、ビルドタイプによってはセグメンテーションフォルトやアサーションが
 発生する可能性がありました。エラー処理は、現在、この状況では正しく有効になります。
 (Bug #28864557)

・レプリケーション:サーバーでGTIDが使用される場合、マスターが自動スキップ機能を使用して
 トランザクションをスキップするたびに、レプリケーションスレーブ上のマスター情報ログが
 同期されていました。プロセスは、スレーブに送信されてログへの強制フラッシュを引き起こした
 ダミーのハートビートで終了します。これは、スレーブの書き込み負荷に大きな累積的な影響を
 与える可能性がありました。同じサーバーから発生しそのために無視されたイベントを含む
 循環レプリケーショントポロジーでも、同じ問題が発生する可能性がありました。それらも、
 ログへの強制フラッシュでスレーブによって処理されました。ハートビートイベントおよび
 循環レプリケーションを介して受信された無視されたイベントに対する強制フラッシュを削除する
 ようにスレーブ処理コードが変更され、マスター情報ログが適切な場合(例:CHANGE MASTER
 ステートメントが発行された場合、またはバイナリログがローテーションされる場合)にのみ
 同期されるようになりました。(Bug #28815555、Bug #85158)

・レプリケーション:シングルプライマリモード(デフォルトである
 group_replication_single_primary_mode=ON)に設定されたレプリケーショングループでは、
 深刻なネットワーク遅延がグループに影響を与えると、プライマリとセカンダリが
 トランザクションについて異なる決定を下す可能性があり、メンバーのgtid_executed設定に
 相違が生じる可能性がありました。この問題は修正されました。
 (Bug #28768550、Bug #28966455、Bug #92690)

・レプリケーション:バイナリログに書き込まれたGRANTステートメントが誤ってログに記録される
 ことがあり、その結果、マスター上で正常に実行されたGRANTステートメントがレプリケーション
 スレーブ上でエラーを引き起こす可能性がありました。
 (Bug #28643405、Bug #29155451、Bug #93750)

・レプリケーション:ストレージエンジンがSTATEMENT形式でログに記録する機能があり、ROW形式では
 できない場合、binlog_formatがSTATEMENTに設定されていると、安全でないSQLステートメントが
 ログに記録され、警告メッセージがエラーログに書き込まれます。ただし、
 そのようなステートメントは実行されず、エラーメッセージはエラーログに書き込まれました。
 これは、binlog_formatがMIXEDまたはROWに設定されている場合の正しい動作です。この問題は
 現在修正され、binlog_formatがSTATEMENTに設定されている場合、安全でないステートメントは
 期待どおりに警告とともにログに記録されるようになりました。(Bug #28429993、Bug #73936)

・Microsoft Windows:named_pipe_full_access_groupシステム変数の妥当性テストで、NULL値が
 考慮されていませんでした。(Bug #29256690)

・authentication_ldap_simpleプラグインが誤って認証を強制する可能性がありました。
 (Bug #29637712)

・Fedora 29プラットフォームで、compat-openssl10-develビルド依存関係がopenssl-develに
 変更されました。(Bug #29278747)

・CMakeがMySQLで動作するには古すぎるlibtirpcライブラリを見つけた場合、代わりにglibcの
 Sun RPCを使おうとします。(Bug #29240701)

・--usersオプションを使用すると、mysqlpumpはCREATE USERステートメントとGRANTステートメント
 を出力に書き出しましたが、ダンプによって作成された他のオブジェクトに適用するには遅すぎ
 ました。その結果、ダンプファイルを復元すると、ユーザーアカウントがあまりにも遅く作成され、
 ファイルによって作成された他のオブジェクトに適用できませんでした。mysqlpumpは、現在、
 他のオブジェクトよりも先にダンプファイルにユーザーアカウントを書き込みます。(Bug #29023216)

・mysql.userテーブルが破損していると、サーバーが終了する可能性がありました。(Bug #28986737)

・tirpcヘッダーのCMakeチェックは、より多くのLinuxプラットフォームのヘッダーを見つけることが
 できるように、pkgconfigを使用するように戻りました。これにはpkgconfigがインストールされている
 必要があります。(Bug #28970313、Bug #93341、Bug #28997093)

・プリペアドステートメントの実行中にNULLポインターにアクセスしようとする可能性がありました。
 (Bug #28692136)

・接続がthread_poolプラグインによって管理されている場合、Aborted_connectsステータス変数は、
 失敗した接続試行に対してインクリメントされませんでした。(Bug #28490126)

・mysqladmin shutdownは、mysqldのシャットダウンを待ちませんでした。
 (Bug #28466137、Bug #91803)

 参考:この問題は、Bug #25364806のレグレッションです。

・短絡評価を受けているクエリを実行したストアドプロシージャの繰り返し呼び出しは、必ずしも
 正しく処理されませんでした。(Bug #28379655)

・キーリング移行は、ソースキーリングへの読み取りアクセスのみを必要とするはずですが、
 ユーザーが書き込みアクセスを持っていない場合、失敗しました。(Bug #28339014)

・キーリング移行を実行しているユーザーがキーリングファイルへの書き込みアクセス権を持って
 いない場合、移行は失敗しましたが、その最終エラーログメッセージに成功を報告しました。
 (Bug #28330922)

・FLUSH STATUSの実行中、パフォーマンススキーマがセッションステータスを不必要に
 グローバルステータスに集約し、いくつかのステータス変数に関して二重カウントが
 引き起こされました。(Bug #28291258、Bug #91541)

・いくつかのステータス変数の値は、元の値に戻る前に一時的に増加する可能性がありました。
 (Bug #27839644、Bug #90351)

・ALTER INSTANCE ROTATE INNODB MASTER KEYの実行とkeyring_fileプラグインから
 keyring_encrypted_fileプラグインへの移行は、暗号化されたテーブルを使用不可にする
 可能性がありました。(Bug #27760952)

・udf_exampleユーザー定義関数のバイナリファイルがバイナリ配布から削除されました。
 (Bug #26115002、Bug #29178542)

・サーバーが--skip-name-resolveオプションを使用して起動された場合、ホスト名の一部が
 localhostであるアカウントを無視することについて誤った警告がエラーログに書き込まれることが
 ありました。(実際にはアカウントは使用され、無視されませんでした。)
 (Bug #23329861、Bug #81441)

・クライアントの接続作業と同時にプラグインのインストールおよびアンインストールを行うと、
 サーバーが終了する可能性がありました。(Bug #22980441)

・複雑な結合を伴うクエリの中には、ファイルハンドルをリークするものがありました。
 (Bug #90902、Bug #28039829)

・Ubuntu 14.04とSLES 11はEOLであり、現在はもうサポートされていません。

全ての変更点やバグ修正については、以下のページをご覧ください。
MySQL 5.7.26リリースノート(MySQLウェブサイト): https://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-26.html

MySQL Editions

MySQL EditionsMySQLのサブスクリプションは、24時間365日体制でお客様をサポートいたします。さらに MySQL Enterprise Edition では、データベース管理者支援ツール MySQL Enterprise Monitor やバックアップツール MySQL Enterprise Backup をご利用いただけます。

MySQL Editionsの詳細