2019.08.01

MySQL

MySQL 5.7.27 GA版(リリース日:2019年7月22日)

主な変更点

■ キーリング関連

・keyring_awsプラグインが最新のAWS SDKを使用するように更新され、OpenSSL 1.1で動作するように
 なりました。

■ パッケージング関連

・システムのcurlライブラリにリンクするのではなく、curlを含むバイナリパッケージがcurl 7.64.0を
 使用するようになりました。(Bug#29357198)

■ Xプラグイン関連

・Windowsでは、Xプラグインは不要なメッセージまたは情報が不十分なメッセージのいくつかを
 記録しました。メッセージは必要に応じて削除または改善されています。(Bug #27839153)

■ 追加・変更された機能

・Microsoft Windows:新しい警告メッセージは、Windows上でMySQLの名前付きパイプを使用して
 行われた接続がコネクタが名前付きパイプで要求できる権限を制限していることをDBAに知らせます。

 以前は、named_pipe_full_access_groupシステム変数は、デフォルトで組み込みのWindowsの
 Everyoneグループ(SID S-1-1-0)にマップされる値に設定されていました。しかし、
 このグループは理想的でなく、MySQLの名前付きパイプに対するより少ない許可を要求することが
 できないコネクタのメンバーシップを制限するグループに置き換えられるべきです。

 named_pipe_full_access_groupに割り当てられた文字列値が '*everyone*'(または
 Windowsシステム言語の同等のもの)であり、名前付きパイプが有効な場合、
 新しい警告が起動時にエラーログに書き込まれます。さらに、システム変数が実行時に
 Everyoneグループにリセットされると、警告がエラーログに書き込まれ、クライアントに
 通知されます。

■ 主なバグ修正

・InnoDB:rw-lockの実装におけるメモリバリアが不十分なため、ARMでデッドロックが発生しました。
 (Bug #29508001、Bug #94699)

・InnoDB:MySQLサーバー稼働中に手動でシステム時刻を変更すると、ページクリーナーの
 スレッド遅延が発生しました。(Bug #29138644、Bug #93708)

・InnoDB:ログ適用中、OPTIMIZE TABLE操作の後、InnoDBは仮想カラムインデックスの更新を
 チェックする前に仮想カラムを追加しませんでした。(Bug #28834208)

・InnoDB:生成された仮想BLOBカラムを含むINSERT操作は、誤った値が原因で
 セカンダリインデックスが更新されるという結果となりました。(Bug #28652826)

・InnoDB:全文キャッシュサイズが全文キャッシュサイズ制限を超えた場合、データ同期時に
 行われる全文キャッシュロックが解除されませんでした。(Bug #25289359)

・InnoDB:同時挿入操作を実行中の異なるauto_increment_increment値を使用する
 クライアントセッションは、重複キーエラーを引き起こす可能性がありました。
 (Bug #15851528、Bug #67526)

 参照:元に戻されたパッチ:Bug #14049391、Bug #65225。

・パーティショニング:ALTER TABLE ... EXCHANGE PARTITIONは、交換されるパーティションが
 非パーティション化テーブルと同じ行フォーマットを使用している場合でも、
 パーティション化されたテーブルに異なる行フォーマットを使用するパーティションがあると、
 エラー Non matching attribute 'ROW_FORMAT' between partition and table で失敗しました。
 (Bug #28687608)

・レプリケーション:グループメンバー数と自動インクリメント間隔の間の不一致に対して
 発行されるエラーメッセージは、auto_increment_incrementシステム変数ではなく、
 group_replication_auto_increment_incrementシステム変数を誤って参照しました。
 auto_increment_incrementの値は、グループレプリケーションの開始時に
 group_replication_auto_increment_incrementで指定された値に変更されますが、
 MySQL 8.0以降でauto_increment_incrementおよびauto_increment_offsetにデフォルト値が
 ある場合のみで、マルチプライマリモードでのみです。auto_increment_incrementの値は、
 常にエラーメッセージについてチェックされる値でした。現在、正確なシステム変数名を
 指定するように修正されました。(Bug #29542425)

・レプリケーション:1つのMySQLサーバーインスタンスによって生成されたイベントが別の
 インスタンスのバイナリログに書き込まれる時、2番目のサーバーは最初のサーバーがそれ自体と
 同じ数のバイナリログイベントタイプをサポートすると暗黙のうちに仮定しました。
 そうでない場合、イベントヘッダーが正しく処理されませんでした。この問題は修正されました。
 (Bug #29417234)

・レプリケーション:グループレプリケーションでは、同じバージョンのメンバーがすでに
 グループ内に存在していても、参加メンバーは彼ら自身を既存のレプリケーショングループとの
 互換性がないと誤って識別してしまう可能性があります。これは、彼らが最も高いバージョンの
 メンバーを含むすべての他のメンバーに対してチェックを行ったためです。参加メンバーは、
 互換性チェックに自分のバージョンも含めました。現在、参加メンバーは自分自身を最も低い
 バージョンの既存のグループメンバーと比較するだけで、自分のバージョンを数に入れません。
 (Bug #29390946、Bug #94429)

・レプリケーション:サーバーの再起動後にMEMORYテーブルがマスター上で暗黙的に削除されると、
 マスターはスレーブもテーブルを空にするようにバイナリログにDELETEステートメントを
 書き込みます。この生成されたイベントは、現在、バイナリログにコメントが含めます。
 そのため、DELETEステートメントの理由は簡単に識別できます。(Bug #29157796、Bug #93771)

・レプリケーション:ステートメントベースのレプリケーションを使用している状態で、
 UPDATE操作とCOMMIT操作の間に無操作トランザクションがあった時にsuper_read_onlyが
 サーバーでONに設定されていると、トランザクションはバイナリログに書き込まれ、
 GTIDを割り当てられます。トランザクションは、現在、この状況ではブロックされます。
 MySQL 8.0からは、トランザクションの進行中にsuper_read_onlyの値を変更することは
 できません。(Bug#29009092、Bug#93440)

・レプリケーション:グループレプリケーション用のグループ通信エンジン(XCom、Paxosの亜種)は
 適切な方法でメモリ不足エラーを処理しませんでした。メッセージのペイロードのコピーを
 作成するためにメモリを割り当てることができなかった場合、エラーは記録されましたが、
 メッセージはまだ送信され、ペイロードはnullでした。
 受信側メンバーのグループコミュニケーションシステム(GCS)はメッセージを空として廃棄し、
 受信側メンバーのXComインスタンスはこのアクションを受け入れて再試行しなかったため、
 メッセージが事実上スキップされました。これにより、受信側メンバーに設定されているGTIDが
 グループから分かれ、レプリケーションエラーが発生しました。
 XComは、現在、メモリ不足エラーが発生した場合、正常に終了します。そのため、この状況は
 発生しません。(Bug #28702320)

・レプリケーション:バイナリログのクエリログイベントで、DROP TABLEステートメントと
 DELETEステートメントの実行に使用されたスレッドIDが誤って識別されたか、まったく
 識別されませんでした。
 一時テーブルが含まれている(セッション固有であるため正しいスレッドIDを必要とする)
 マルチスレッドレプリケーションスレーブでは、mysqlbinlogを使用して
 ポイントインタイムリカバリのためにバイナリログを再生すると、この見落としによりエラーが
 発生しました。スレッドIDは現在正しく設定されます。(Bug #28642318、Bug #92398)

・レプリケーション:スレーブサーバーがマスターステータスと接続情報をMySQL 8.0の
 デフォルトであるテーブル(master_info_repository=TABLE)に記録する時、サーバーが
 スーパーリードオンリーモードの場合(super_read_only=ON)、mysql.slave_master_infoテーブルは
 シャットダウン時に更新されませんでした。この時点ではエラーログにエラーは書き込まれません
 でしたが、マスターログファイルとマスターログの位置情報が古いため、サーバーの起動後に
 レプリケーションに失敗しました。シャットダウン時にマスター情報ログを更新するスレッドは、
 現在、他のレプリケーションスレッドと同様に読み取り専用チェックから除外されているため、
 サーバーがスーパーリードオンリーモードであっても、テーブルを更新できます。
 シャットダウンしているスレーブのエラー処理も改善され、スレーブステータスログへの書き込みに
 失敗するとエラーログにエラーが記録されるようになりました。(Bug #27675107、Bug #89987)

・ストアドプログラムのローカルオブジェクトのソート中に、非常に厳密なアサーションが
 発生する可能性がありました。(Bug #29759547、Bug #95062)

・RPMパッケージからインストールすると、不正な権限でエラーログが発生する可能性がありました。
 (Bug #29702462)

・監査ログ暗号化を有効にすると、サーバーが終了する可能性がありました。(Bug#29549327)

・DebianとUbuntuでは、MySQLパッケージは、MySQLのネイティブパッケージからアップグレードした後、
 mysql.serviceを有効にしませんでした。(Bug #29435592)

・サーバーがエラー発生時に共有メモリ接続を正しくクローズしなかったため、予期しない
 サーバー動作が発生する可能性がありました。(Bug #29435426)

・開発コンポーネントが選択されなかった場合、MySQLインストーラーはOpenSSL DLLの依存関係を
 インストールしませんでした。(Bug #29423421、Bug #94168)

・パーサーが複数ステートメントのクエリに対してメモリリークを起こす可能性がありました。
 (Bug #29419820)

・CREATE USERおよびALTER USERは、IDENTIFIED WITH auth_plugin AS 'hash_string'構文で
 使用された場合、ハッシュされた認証文字列の有効性をチェックしませんでした。(Bug#29395944)

・VARCHARカラムにインデックスを含み、MySQL 5.7.23より前に作成されたInnoDBテーブルについて、
 MySQL 5.7.23以降へのアップグレード後、インプレースで実行されるべきであった
 いくつかの単純なALTER TABLEステートメントはテーブルの再構築と共に実行されました。
 (Bug#29375764、Bug#94383)

・HANDLERステートメントは、カラムを生成したテーブルで必ずしも正しく動作しませんでした。
 (Bug #29300049)

・クライアント/サーバーのプロトコルのセッション追跡情報が誤って処理される可能性がありました。
 (Bug #29297652)

・PAD_CHAR_TO_FULL_LENGTH SQLモードが有効な場合、パスワードの変更に失敗し、警告やエラーは
 報告されませんでした。(Bug #29287785)

・audit_logプラグインはUNINSTALL PLUGIN audit_logステートメントをログに記録しませんでした。
 (Bug #29248047)

・audit_logのフィルタリング操作によりメモリリークが発生する可能性がありました。(Bug #29201747)

・仮想的に生成されたカラムに定義されたインデックスは、そのカラムに外部キー関係のベースカラムが
 あると、更新に失敗する可能性がありました。(Bug#29127203、Bug#93670)

・いくつかのパフォーマンススキーマテーブルを削除するための権限が正しくチェックされませんでした。
 (Bug #29010031)

・ORDER BYを含む派生テーブルを使用したクエリは、必ずしも正しく処理されませんでした。
 (Bug #28942965)

・基本カラムは、生成されたカラムによるインデックスのみのアクセスから除外されませんでした。
  (Bug #28652733)

 参照:Bug #29664369。この問題はBug #23169112のリグレッションです。

・スレッドプロセスのティックタイムが最大許容値を超えると、スレッドプールグループが
 ブロックされる可能性がありました。ティックタイムは、現在、より大きな値を許可するために
 より大きなデータ型を使用します。(Bug #28072609)

・MySQLは、OpenSSLのセッションチケットをサポートしていませんが、
 それをOpenSSLに通知するためのSSL_OP_NO_TICKETフラグを設定しませんでした。
 現在、フラグは設定されます。(Bug #27655493)

・audit_nullプラグインはnullイベントレコードを適切にチェックしませんでした。(Bug #27638290)

・UpdateXML()は特定のケースで必ずしも適切にメモリを解放しませんでした。(Bug #27312862)

・mysql.pluginシステムテーブルのnameカラムに空の値があると、サーバーが起動中に終了しました。
 (Bug #27302459)

・thread_poolプラグインが有効な場合、パフォーマンススキーマのstatus_by_threadテーブルには
 データが含まれませんでした。(Bug #25933891)

・INSTALL PLUGINステートメントが共有ライブラリ名に無効なUTF-8文字を含む場合、サーバーが
 ハングアップする(または、デバッグビルドでアサーションが発生する)原因になりました。
 (Bug #14653594、Bug #23080148、Bug #27167197)

・異なるセミジョインネストの内部テーブルは、マテリアライゼーション時にインターリーブされました。
 これにより、その内部テーブルは、異なるクエリプランを使用した場合、同じクエリに対して
 異なる結果になる可能性がありました。これが発生しないようにするために、このような
 インターリーブを防ぐためにチェックが追加されています。(Bug#92809、Bug#28835179)

全ての変更点やバグ修正については、以下のページをご覧ください。
MySQL 5.7.27リリースノート(MySQLウェブサイト):

https://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-27.html

MySQL Editions

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

MySQL Editionsの詳細