MYSQL 5.7 リリースノート
dev.mysql.com Doc Search:
概要
このドキュメントには、MySQL 5.7からMySQL 5.7.31までの各リリースでの変更点に関するリリースノートが含まれています。別のMySQLシリーズでの変更については、そのシリーズのリリースノートを参照してください。
MySQL 5.7のその他のドキュメントについては、MySQL 5.7(MySQL 5.7の新機能)で追加された機能の概要を含むMySQL 5.7リファレンスマニュアル、およびMySQL 5.6からMySQL 5.7へのアップグレードで発生する可能性のあるアップグレードの問題に関する説明を参照してください。(MySQL 5.7での変更)。
これらのノートへの更新は、新製品の機能が追加されると行われるため、誰もが開発プロセスに従うことができます。ダウンロードページ(https://dev.mysql.com/downloads/)にない最新バージョンがここにリストされている場合、そのバージョンはまだリリースされていません。
ソースとバイナリの配布に含まれるドキュメントは、リリースビルド時にドキュメントの統合が行われるため、リリースノートエントリに関して完全に最新ではない場合があります。最新のリリースノートについては、代わりにオンラインドキュメントを参照してください。
法的情報については、法的通知を参照してください。
MySQLの使用については、MySQLフォーラムにアクセスして、他のMySQLユーザーと問題について話し合うことができます。
生成されたドキュメント:2020-05-09(リビジョン:20267)
目次
日本語訳
序文および法的通知
MySQL 5.7.30の変更(2020-04-27、一般提供)
MySQL 5.7.29の変更(2020-01-13、一般提供)
MySQL 5.7.28の変更(2019-10-14、一般提供)
MySQL 5.7.27の変更(2019-07-22、一般提供)
MySQL 5.7.26の変更(2019-04-25、一般提供)
MySQL 5.7.25の変更(2019-01-21、一般提供)
未翻訳(本家をご確認ください)
dev.mysql.com Doc Search:
MySQL 5.7.24の変更(2018-10-22、一般提供)
MySQL 5.7.23の変更(2018-07-27、一般提供)
MySQL 5.7.22の変更(2018-04-19、一般提供)
MySQL 5.7.21の変更(2018-01-15、一般提供)
MySQL 5.7.20の変更(2017-10-16、一般提供)
MySQL 5.7.19の変更(2017-07-17、一般提供)
MySQL 5.7.18の変更(2017-04-10、一般提供)
MySQL 5.7.17の変更(2016-12-12、一般提供)
MySQL 5.7.16の変更(2016-10-12、一般提供)
MySQL 5.7.15の変更(2016-09-06、一般提供)
MySQL 5.7.14の変更(2016-07-29、一般提供)
MySQL 5.7.13の変更(2016-06-02、一般提供)
MySQL 5.7.12の変更(2016-04-11、一般提供)
MySQL 5.7.11の変更(2016-02-05、一般提供)
MySQL 5.7.10の変更(2015-12-07、一般提供)
MySQL 5.7.9の変更(2015-10-21、一般提供)
MySQL 5.7.8の変更(2015-08-03、リリース候補)
MySQL 5.7.7の変更(2015-04-08、リリース候補)
MySQL 5.7.6の変更(2015-03-09、マイルストーン16)
MySQL 5.7.5の変更(2014-09-25、マイルストーン15)
MySQL 5.7.4の変更(2014-03-31、マイルストーン14)
MySQL 5.7.3での変更点(2013-12-03、マイルストーン13)
MySQL 5.7.2の変更(2013-09-21、マイルストーン12)
MySQL 5.7.1の変更(2013-04-23、マイルストーン11)
MySQL 5.7.0での変更(リリースされていない、Milestone 10)
インデックス
MYSQL 5.7 リリースノート
dev.mysql.com Doc Search:
序文および法的通知
このドキュメントには、MySQL 5.7からMySQL 5.7.31までの各リリースでの変更点に関するリリースノートが含まれています。
法的通知
Copyright©1997、2020、Oracleおよび/またはその関連会社。
このソフトウェアと関連ドキュメントは、使用と開示に関する制限を含むライセンス契約に基づいて提供され、知的財産法によって保護されています。ライセンス契約で明示的に許可されている場合、または法律で許可されている場合を除き、いかなる部分も、いかなる形式でも、使用、コピー、複製、翻訳、放送、修正、ライセンス、送信、配布、展示、実行、公開、または表示することはできません。どうにかして。このソフトウェアのリバースエンジニアリング、逆アセンブル、逆コンパイルは、相互運用性に関する法律で要求されない限り禁止されています。
ここに含まれる情報は予告なく変更される場合があり、エラーがないことを保証するものではありません。エラーを見つけた場合は、書面で報告してください。
これが米国政府または米国政府に代わってライセンスを付与する人に提供されるソフトウェアまたは関連ドキュメントである場合、次の通知が適用されます。
米国政府のエンドユーザー:Oracleプログラム(オペレーティングシステム、統合ソフトウェア、提供されたハードウェアに組み込まれ、インストールまたはアクティブ化されたプログラム、およびそのようなプログラムの変更を含む)およびOracleコンピューターのドキュメント、または米国政府のエンドユーザーが提供またはアクセスするその他のOracleデータ該当する連邦調達規則および政府機関固有の補足規則に準拠した「商用コンピュータソフトウェア」または「商用コンピュータソフトウェアのドキュメント」です。したがって、使用、複製、複製、リリース、表示、開示、変更、派生著作物の準備、および/またはi)の改造Oracleプログラム(オペレーティングシステム、統合ソフトウェア、埋め込まれた、インストールされた、またはアクティブ化されたプログラムを含む)ハードウェア、およびそのようなプログラムの変更)、ii)Oracleコンピュータのドキュメントおよび/またはiii)その他のOracleデータは、該当する契約に含まれるライセンスで指定された権利および制限の対象となります。米国政府によるOracleクラウドサービスの使用を規定する条件は、そのようなサービスに適用される契約によって定義されます。米国政府にその他の権利は付与されません。
このソフトウェアまたはハードウェアは、さまざまな情報管理アプリケーションで一般的に使用するために開発されました。人身傷害の危険をもたらす可能性のあるアプリケーションを含む、本質的に危険なアプリケーションでの使用を目的として開発または意図されていません。このソフトウェアまたはハードウェアを危険なアプリケーションで使用する場合は、安全な使用を保証するために、適切なフェイルセーフ、バックアップ、冗長性、およびその他の手段を講じる責任があります。 Oracle Corporationとその関連会社は、危険なアプリケーションでのこのソフトウェアまたはハードウェアの使用によって引き起こされたいかなる損害についても責任を負いません。
OracleおよびJavaは、Oracleおよび/またはその関連会社の登録商標です。その他の名称は、それぞれの所有者の商標である可能性があります。
IntelおよびIntel InsideはIntel Corporationの商標または登録商標です。すべてのSPARC商標はライセンスに基づいて使用され、SPARC International、Inc.の商標または登録商標です。AMD、Epyc、およびAMDロゴはAdvanced Micro Devicesの商標または登録商標です。 UNIXは、The Open Groupの登録商標です。
このソフトウェアまたはハードウェアおよびドキュメントは、第三者からのコンテンツ、製品、およびサービスへのアクセスまたは情報を提供する場合があります。オラクル社およびその関連会社は、お客様とオラクルとの間の該当する契約に別段の定めがない限り、第三者のコンテンツ、製品、およびサービスに関するあらゆる種類の保証について責任を負わず、明示的に否認します。オラクル社およびその関連会社は、お客様とオラクルとの間の該当する契約に定められている場合を除き、サードパーティのコンテンツ、製品、またはサービスへのアクセスまたは使用により発生した損失、費用、または損害について責任を負いません。
このドキュメントはGPLライセンスに基づいて配布されていません。このドキュメントの使用には、次の条件が適用されます。
このドキュメントの印刷版は、個人的な使用目的でのみ作成できます。他の形式への変換は、実際のコンテンツが何らかの方法で変更または編集されていない限り許可されます。オラクルがそれを広める方法と同様の方法で(つまり、ソフトウェアを使用してWebサイトでダウンロードするために電子的に)ドキュメントを配布する場合を除いて、このドキュメントをいかなる形式またはメディアで公開または配布しないものとします。 -ROMまたは同様の媒体。ただし、ドキュメントがソフトウェアと一緒に同じ媒体で配布されている場合。印刷されたコピーの配布またはこのドキュメントの全体または一部の別の出版物での使用など、その他の使用には、オラクルの正式な代表者からの事前の書面による同意が必要です。オラクルおよび/またはその関連会社は、この文書に対する一切の権利を留保しません。
MYSQL 5.7 リリースノート
dev.mysql.com Doc Search:
MySQL 5.7.30の変更(2020-04-27、一般提供)
JSONノート
- MySQLに含まれるrapidjsonライブラリは、2020年1月16日のGitHubスナップショットにアップグレードされました。MacOS Xでスナップショットからビルドするときに発生するコンパイラエラーの修正が追加されました。バグ#30898701)
梱包ノート
- システムのcurlライブラリにリンクするのではなくcurlを含むバイナリパッケージが、curl 7.69.0を使用するようにアップグレードされました。バグ#30866333)
- バンドルされたlibeditライブラリがバージョン3.1にアップグレードされました。
修正されたバグ
- InnoDB:クラスタ化インデックスレコードを削除済みとしてマークし、レコードの更新バージョンをクラスタ化インデックスに挿入するrow_upd_clust_rec_by_insert関数が、誤ったn_ext値(外部フィールドの総数)を下位レベルの関数に渡し、アサーションエラーが発生しました。バグ#30437378)
- InnoDB:innodb_buffer_pool_evictデバッグ変数を非圧縮に設定して実行された操作により、アサーションエラーが発生しました。バグ#30405531)
- InnoDB:列の追加操作でアサーションエラーが発生しました。失敗は、ぶら下がりポインタが原因でした。バグ#29866408)
参照:この問題は、バグ#28491099のリグレッションです。 - InnoDB:文字列値を取る特定のInnoDBシステム変数を更新すると、Valgrindテスト中に無効な読み取りエラーが発生しました。 (バグ#29717909、バグ#95215)
- InnoDB:空間インデックスのあるテーブルでのinsertステートメントは、タプルの破損が原因でレコードタイプの不一致アサーションを発生させました。バグ#29465567)
- InnoDB:元に戻すログレコードのサイズを計算する関数は、元に戻すログレコードが破損している場合、誤った長さの値を計算し、mallocが失敗する可能性がありました。誤った計算を検出するためのアサーションコードが追加されました。 (バグ#29448406、バグ#82734)
- レプリケーション:機密情報がプレーンテキストで表示されないように、SQLステートメントがバイナリログ用に書き直されている最中に、SHOW PROCESSLISTステートメントを使用してクエリを検査すると、クエリが書き込まれたときにクエリが破損する可能性がありました。バイナリログ。レプリケーションが停止します。クエリの書き換えプロセスはプライベートに保たれ、クエリスレッドは書き換えが完了したときにのみ更新されます。 (バグ#30569003、バグ#97531、バグ#30654405)
- レプリケーション:GRANTまたはREVOKEステートメントが部分的にしか実行されない場合、インシデントイベントがバイナリログに記録されます。これにより、レプリケーションスレーブのアプライアスレッドが停止し、スレーブをマスターと手動で調整できます。以前は、失敗したGRANTまたはREVOKEステートメントがセッションで実行された最初のステートメントである場合、GTIDがインシデントイベントに適用されず(キャッシュマネージャーがまだセッションに存在しないため)、レプリケーションスレーブでエラーが発生していました。また、GRANTステートメントがユーザーを作成したが、特権が誤って指定されていたために失敗した場合、インシデントイベントはログに記録されず、レプリケーションスレーブで再びエラーが発生しました。これらの問題は両方とも修正されました。 (バグ#30566518、バグ#30324661)
- レプリケーション:レプリケーションスレーブの生成された列がマスターのテーブルにない場合、生成された列にセカンダリインデックスがあり、生成された式が評価され、ストレージエンジンによって値がセカンダリインデックスに格納されます。行ベースのバイナリロギングが使用されている場合、レプリケーションスレーブは、マスターのテーブルの定義にないすべてのフィールドにデフォルト値を割り当てます。デフォルト値のない生成された列の場合、スレーブは以前にnullまたはゼロの値を列に割り当てていました。次に、この値はストレージエンジンによってセカンダリインデックスに格納され、テーブルとインデックスの両方が破損しました。この問題を修正するために、レプリケーションスレーブのテーブルで生成された列は、値がストレージエンジンに送信される前に再評価されるようになりました。バグ#30034874)
- レプリケーション:マスターからレプリケーションスレーブが計画外に切断された場合、マスターのダンプスレッドへの参照が登録済みスレーブのリストから削除されないことがあります。その場合、スレーブのリストにアクセスしたステートメントは失敗します。この問題は修正されました。バグ#29915479)
- レプリケーション:設定binlog_format = MIXED、tx_isolation = READ-COMMITTED、およびbinlog_row_image = FULLを使用すると、トランザクションストレージエンジンが関与するINSERT … SELECTクエリは、バイナリログに書き込まれる行イメージからnull値の列をすべて除外しました。これは、INSERT … SELECTステートメントを処理するときに、バイナリログ形式が選択される前に列が挿入用にマークされたために発生しました。この問題は修正されました。 (バグ#29110804、バグ#93423)
- -libs-compat RPMパッケージは、libmysqlclient.so.18内のシンボルの無制限のエクスポートに関する問題を回避するために、システムzlibでビルドされるようになりました。 (バグ#30722389、バグ#98130)
- イベントスケジューラでメモリリークが発生しました。バグ#30628268)
- 特定の状況下で、memcachedコマンドを実行すると、初期化されていないメモリバッファーが読み取られ、エラーが発生する可能性があります。バグ#30592346)
- ALTER USERを使用してアカウントのMAX_USER_CONNECTIONS値をリセットしても、現在のアカウント接続がすべて存在する場合は終了するまで有効になりませんでした。 (バグ#30578217、バグ#97735)
- 列値が非決定的関数への入力として使用される条件を含むマテリアライズドサブクエリは、不正な結果を生成しました。バグ#30368937)
- CONCAT()およびCONCAT_WS()は、部分文字列の処理が正しくないため、まれに誤った結果を生成する可能性があります。 (バグ#30350206、バグ#96950)
- イベントを削除すると、イベントのスケジュールが妨げられる可能性があります。 (バグ#30301356、バグ#96849)
- クライアントプログラムは、プラグインライブラリの外部から認証プラグインをロードできます。 (バグ#30191834、バグ#30644258)
- サーバーは、クエリの1つにORDER BYを使用するサブクエリが含まれているUNIONを正しく処理しませんでした。バグ#29952565)
- 述語に科学表記法の数値が含まれるWHERE句を含むクエリが正しく処理されませんでした。
さらに、文字列として指定された特定の整数を挿入しようとすると、文字列から整数への変換が失敗したときにサーバーが終了しました。 (バグ#29723340、バグ#30441969)
- 以前、mysqlpumpはオプションファイルから[mysql_dump]および[client]グループを読み取りました。 mysqlpumpが[mysqlpump]グループを追加で読み取るようになりました。 [mysql_dump]グループは引き続き受け入れられますが、廃止されました。 (バグ#24733245、バグ#83144)
- 他の2つのテーブルを結合した派生テーブルに結合されたテーブルを更新するマルチテーブルUPDATEステートメントは、MySQL 5.6のように適切に最適化されず、派生テーブルを作成するサブクエリでSTRAIGHT_JOINが使用されたかのように扱われていました。 (バグ#97418、バグ#30488700)
MYSQL 5.7 リリースノート
dev.mysql.com Doc Search:
MySQL 5.7.29の変更(2020-01-13、一般提供)
監査ログのメモ
- ANALYZE TABLEステートメントは、読み取り監査イベントを生成するようになりました。バグ#29625461)
梱包ノート
- システムのcurlライブラリにリンクするのではなくcurlを含むバイナリパッケージが、curl 7.66.0を使用するようにアップグレードされました。バグ#30356844)
修正されたバグ
- InnoDB:GCC 9.2.0でMySQLをコンパイルすると、os_file_get_parent_dir警告が発生しました。 (バグ#30499288、バグ#97466)
- InnoDB:新しく追加された外部に保存されたフィールドをフェッチし、悲観的な更新中または以前のバージョンのレコードに戻るときに更新するために使用される内部関数(btr_push_update_extern_fields())は不要になりました。新しく追加された外部保存フィールドは、別の関数によって更新されます。また、外部に保存されたフィールドの数を決定するために使用される方法が修正されました。バグ#30342846)
- InnoDB:空間インデックスの非リーフページをマージしようとしたときに、比較関数が2つのレコードが等しいことを検出しました。関数はこの予期しない状態を処理できなかったため、長いセマフォ待機と最終的なアサーションエラーが発生しました。バグ#30287668)
- InnoDB:異なるDATA DIRECTORY句でソーステーブルと宛先テーブルが定義されているために失敗したテーブルスペースインポート操作で、不十分な説明のスキーマ不一致エラーが報告されました。さらに、.cfgファイルが存在しない場合、同じ操作でアサーションエラーが発生します。データディレクトリの不一致が原因でインポート操作が終了する前に、より有益なエラーメッセージが両方のケースで報告されるようになりました。 (バグ#30190199、バグ#30190227、バグ#20644698、バグ#76142)
- InnoDB:変更レコードに変更ツリー構造が必要かどうかを検出するbtr_cur_will_modify_tree()関数で使用される基準が不十分でした。バグ#30113362)
- InnoDB:ALTER TABLE … DISCARD TABLESPACE操作がハング状態を引き起こした。 (バグ#29942556、バグ#30324703)
- InnoDB:セッション一時テーブルの暗黙的から明示的なセカンダリインデックスロックへの不要な変換を禁止することで、コードの回帰に対処しました。バグ#29718243)
- InnoDB:削除マークの付いたレコードのパージ中に、カーソルが破損したページに置かれたときに、テーブルスペースのインポート操作でアサーションが発生しました。破損したページに遭遇したときにアサートする代わりに、インポート操作が終了し、エラーが報告されます。 (バグ#29454828、バグ#94541)
- レプリケーション:メンバーがレプリケーショングループに参加または再参加しているときに、グループレプリケーションが分散リカバリプロセスでエラーを検出すると(参加しているメンバーが既存のオンラインメンバーから状態転送を受信している間)、自動的に新しいドナーに切り替えます。状態転送を再試行します。参加するメンバーが諦める前に再試行する回数は、group_replication_recovery_retry_countシステム変数によって設定されます。パフォーマンススキーマテーブルのreplication_applier_status_by_workerには、最後の再試行の原因となったエラーが表示されます。以前は、このエラーは、グループメンバーが(slave_parallel_workersシステム変数で設定された)並列レプリケーションアプライヤースレッドで構成されている場合にのみ表示されました。グループメンバーが単一のアプライヤースレッドで構成されている場合、内部のRESET SLAVE操作によって再試行するたびにエラーがクリアされたため、表示できませんでした。これは、単一または複数のアプライヤースレッドがあったかどうかに関係なく、SHOW SLAVE STATUSコマンドの出力にも当てはまります。分散リカバリの再試行後にRESET SLAVE操作が実行されなくなったため、最後の再試行の原因となったエラーを常に表示できます。 (バグ#30517160、バグ#30517172、バグ#97540)
- レプリケーション:障害が発生したレプリケーショングループメンバーが少数派グループに再度参加しようとして、それを許可されなかった場合、メモリリークが発生する可能性がありました。 (バグ#30162547、バグ#96471)
- レプリケーション:マスターログファイル名とマスターログ位置を指定していないCHANGE MASTER TOステートメントを使用してレプリケーションスレーブがセットアップされた場合、START SLAVEが発行される前にシャットダウンし、オプション–relay-log-recoveryで再起動しましたセット、レプリケーションは開始されませんでした。これは、リレーログの回復が試行される前にレシーバースレッドが開始されていなかったため、リレーログでマスターログファイル名とマスターログの位置を提供するログローテーションイベントが利用できなかったために発生しました。この状況では、スレーブはリレーログのリカバリをスキップして警告をログに記録してから、レプリケーションの開始に進みます。 (バグ#28996606、バグ#93397)
- レプリケーション:レプリケーションマスターとスレーブでGTIDが有効で、スレーブがMASTER_AUTO_POSITION = 1オプションを設定してマスターに接続する場合、マスターはスレーブがまだ受信、コミット、またはその両方を行っていないすべてのトランザクションをスレーブに送信する必要があります。マスターが送信する必要のあるトランザクションのいずれかがマスターのバイナリログから既にパージされている場合、マスターはエラーER_MASTER_HAS_PURGED_REQUIRED_GTIDS(1789)をスレーブに送信し、レプリケーションは開始されません。
- エラーER_MASTER_HAS_PURGED_REQUIRED_GTIDSに対して提供されるメッセージは、この状況での正しいアクションに関するアドバイスを提供するように変更されました。これは、スレーブが不足しているトランザクションを別のソースから複製するか、スレーブを別のソースから作成された新しいスレーブに置き換えるためです最近のバックアップ。メッセージは、マスターのバイナリログの有効期限を変更できることを通知します
- macOS:macOSでは、MySQLを-DWITH_SSL = systemで構成すると、mysql_config出力に静的SSLライブラリの内部CMake名が誤って含まれていました。 (バグ#30541879、バグ#97632)
- サーバーの構築に使用されるOpenSSLのバージョンと、ライブラリやプラグインなどのMySQLの他の部分に使用されるバージョンとの間に不一致がある可能性があります。これにより、LDAP認証プラグインなどの特定の機能が動作しなくなる可能性があります。これで、すべてのビルドに同じバージョンのOpenSSLが使用されます。 (バグ#30573696、バグ#30515370)
- DockerパッケージにはLDAP認証プラグインがありませんでした。バグ#30465247)
- 派生テーブルのフィールドの元のテーブル名は、常に正しく表示されるとは限りませんでした。バグ#30362898)
参照:参照:バグ#24611344。この問題は、バグ#22364401のリグレッションです。
- MySQL Installerは、Windows Server 2012でMySQL 5.7をアンインストールできませんでした。(Bug#30323924、Bug#96940)
- 複数のセッションがAUTO_INCREMENT列を持つテーブルにINSERT … ON DUPLICATE KEY UPDATEステートメントを同時に実行すると、AUTO_INCREMENT値を指定しないと、一意のインデックス違反で挿入が失敗する可能性があります。 (バグ#30194841、バグ#96578)
- lower_case_table_names = 2を使用すると、SHOW TABLESは大文字の名前のテーブルを表示できなくなる可能性があります。バグ#29957361)
- サーバーの起動時にコマンドラインでkeyring_encrypted_file_passwordを設定すると、パスワード値がシステムユーティリティに表示される可能性があります。バグ#29848634)
- LOCK TABLESステートメントが有効になっていると、ロックされたテーブルのメタデータが変更されると、セッション変数のパフォーマンススキーマまたはSHOWクエリがopening_tables状態でハングする可能性があります。 (バグ#29836204、バグ#92387)
- A AND(B OR C [OR …])という形式のWHERE条件を使用したSELECTにより、範囲が不可能になり、サーバーの予期しない終了が発生しました。バグ#29770705)
- JSON形式の監査ロギングの場合、idフィールドに65535より大きい値が含まれる可能性があります。以前は、ロギングアクティビティを行うと、ID値に許可されている16ビットを超えて、毎秒65536を超えるクエリを実行できました。バグ#29661920)
- 不完全な接続パケットは、クライアントが認証プラグイン名を適切に初期化しない原因となる可能性があります。バグ#29630767)
- libmysqlclient Cクライアントライブラリを使用したクライアントプログラムは、不正なセッショントラッキング情報を含むOKパケットを受信すると終了する可能性があります。 (バグ#29297620、バグ#29630735)
- 特定の条件下で、read_onlyまたはsuper_read_onlyシステム変数を有効にしても、SUPER権限のないユーザーが実行する同時DDLステートメントはブロックされませんでした。 (バグ#28438114、バグ#91852)
- mysqlpumpは、無効なビューが含まれているデータベースをダンプするのではなく、設計上終了しますが、無効なビューが存在していても、ダンプされるデータベースのいずれにもない場合も失敗しました。バグ#27096081)
MYSQL 5.7 リリースノート
dev.mysql.com Doc Search:
MySQL 5.7.28の変更(2019-10-14、一般提供)
設定上の注意
- OpenSSL 1.1.1を使用してMySQL 5.7をコンパイルできるようになりました。これにより、OpenSSL 1.0.2が2019年末にサポート終了ステータスに達した場合でも、OpenSSLに対するMySQL 5.7のコンパイルサポートが可能になります。
- すべてのMySQL 5.7ビルドでOpenSSLが使用されるようになりました。 MySQLは、SSLライブラリとしてのyaSSLの使用をサポートしなくなり、ソース配布にはyaSSLが含まれなくなりました。
WITH_SSL CMakeオプションは、バンドル(yaSSLを使用)を有効な値として許可しなくなり、デフォルトのオプション値がバンドルからシステムに変更されました(ホストシステムにインストールされているバージョンのOpenSSLを使用)。
sys スキーマノート
- sys.schema_unused_indexesビューは、一意のインデックスを除外するようになりました。貢献してくれたジリアン・ガンソンに感謝します。 (バグ#24798995、バグ#83257)
- sys.ps_is_consumer_enabled()関数は、引数が不明な非NULLコンシューマー名である場合にNULLを返すのではなく、エラーを生成するようになりました。バグ#24760317)
- 以前は、sysスキーマソースは別のGitリポジトリで維持されていました。 sysスキーマソースは、MySQLソースディストリビューション(scripts / sys_schemaの下)に含まれ、維持されます。
sys.versionビューは非推奨であり、将来のMySQLバージョンで削除される予定です。影響を受けるアプリケーションは、代わりに代替を使用するように調整する必要があります。たとえば、VERSION()関数を使用してMySQLサーバーのバージョンを取得します。
修正されたバグ
- InnoDB:MyISAMテーブルでのALTER TABLE … ENCRYPTION = ‘Y’操作は、ストレージエンジンが暗号化をサポートしていないことを示すエラーの発生に失敗しました。 INPLACEアルゴリズムは、.frmファイルのメタデータを更新する前に暗号化サポートをチェックしませんでした。 この問題に対処するために、暗号化サポートフラグが追加されました。 ALTER TABLE … ENCRYPTION = ‘Y’操作は、フラグをチェックし、ストレージエンジンが暗号化をサポートしていない場合はエラーを報告するようになりました。 バグ#29543447)
- InnoDB:部分的にロールバックが完了する前に、削除マーク付きの行が外部読み取りロックを取得できました。 外部読み取りロックにより、部分的なロールバック中に暗黙的ロックが明示的ロックに変換されず、アサーションエラーが発生しました。 バグ#29195848)
- InnoDB:同時実行の挿入で長時間実行されるALTER TABLE … ADD INDEX操作により、セマフォの待機が発生しました。 パッチを提供してくれたSatya Bodapatiに感謝します。 バグ#29008298)
- レプリケーション:SQLスレッドがまだ停止中である間に、START SLAVEステートメントが発行されてスレーブでSQLスレッドを開始し、同時にスレーブステータスのリクエストが行われた場合、3つのスレッドを含むデッドロックが発生する可能性がありました。 。この問題は、SQLスレッドが停止している間に、以前にロックを解放することで修正されました。 (バグ#29697588、バグ#95115)
- レプリケーション:WAIT_FOR_EXECUTED_GTID_SET()関数のロックの問題により、特定の状況でサーバーがハングすることがありました。この問題は修正されました。バグ#29550513)
- レプリケーション:使用中のGTIDを持ち、MASTER_AUTO_POSITIONがONに設定されたマルチスレッドスレーブで、スレーブが予期せず停止すると、リレーログのリカバリが試行され、リレーログが失われていると失敗し、レプリケーションを開始できませんでした。ただし、GTID自動配置を使用して、失われたトランザクションを復元できるため、この手順は不要です。リカバリ状況では、スレーブは最初にMASTER_AUTO_POSITIONがONに設定されているかどうかを最初にチェックし、設定されている場合はリレーログのリカバリをスキップします。 (バグ#28830834、バグ#92882)
- SQLスクリプトからCソースを生成すると、一部のutf8エンコード文字が行に分割されていました。パッチを提供してくれたPrzemysławSkibińskiに感謝します。 (バグ#30152555、バグ#96449)
- SHOW PROCESSLISTの出力には、完了していて処理中でなくなったステートメントが含まれる場合があります。バグ#29999818)
- Solarisの場合、mysqld.ccには、不要になったmemcntl()のプロトタイプが含まれていました。プロトタイプは削除されました。 (バグ#29953495、バグ#95971)
- Solarisの場合、GCCでコンパイルすると-DWITH_SSL = systemが機能しませんでした。 (バグ#29953460、バグ#95970)
- -DWITHOUT_SERVER = 1で構成されたMySQLビルドが失敗しました。 (バグ#29948728、バグ#95740)
- keyring_awsプラグインの場合、keyring_aws_regionシステム変数の一部の有効なリージョン値が拒否されました。バグ#29933758)
- デバッグビルドの場合、GEOMETRY列とSELECT * FROM(SELECT NULL)の結合データ型を計算するときに、UNIONクエリ中にアサーションが発生する可能性があります。 (バグ#29916900、バグ#95827)
- LDAP認証プラグインを使用した認証で、ユーザーDN部分が空で、グループマッピングが設定されている場合、認証は誤ったユーザーDNを割り当て、ユーザー検索をスキップしました。バグ#29897624)
- mysqlpumpは、MySQL 5.7より古いサーバーに対して実行するとエラーを生成しました。バグ#29889253)
- 符号なし整数型キャストによる整数オーバーフローの可能性があると、任意のサイズのメモリ割り当てが原因で、後でバッファオーバーフローが発生する可能性があります。バグ#29878914)
- MeCabプラグインの初期化中に解放されたオブジェクトを使用しようとすると、セグメンテーション違反が発生しました。バグ#29832534)
- RPMパッケージを使用してインストールされたMySQLの場合、クライアントアカウントがLDAP認証プラグインを使用して認証されると、サーバー接続をテストする初期化スクリプトが正しく動作しませんでした。バグ#29786782)
- ストレージエンジンの初期化中に不適切なロックを行うと、サーバーが終了する可能性があります。バグ#29782379)
- GTID対応サーバーでは、DROP USERとビューにアクセスする準備済みステートメントを同時に実行すると、デッドロックが発生する可能性がありました。バグ#29772622)
- VS2019は、/ ZIフラグの使用によりデバッグコンパイルが選択された状態でコンパイルエラーを生成しました。現在、代わりに/ Z7が使用されています。 (バグ#29691691、バグ#95125)
- クライアントライブラリは、サーバーから結果セットメタデータをフェッチしているときにnullポインターを逆参照する可能性があります。 (バグ#29597896、バグ#30689251)
- READ UNCOMMITTED分離レベルでは、memcachedクライアントからの高負荷時にセグメンテーション違反が発生しました。あるトランザクションによって更新されていた外部に格納されたBLOB列が、NULL値とゼロ以外のデータ長を持つものとして別のトランザクションによって読み取られました。 (バグ#29396364、バグ#93961)
- 準備済みステートメントでは、TIMESTAMPADD()関数の引数を逆にすることができます。バグ#29268394)
- MySQL Community Editionの場合、サーバーが明示的なssl_cipher順序で構成されていない限り、クライアントによって指定された暗号順序がサーバー側の順序よりも優先して使用されました。バグ#26882825)
- thread_poolプラグインを有効にすると、sys.processlistおよびsys.sessionビューに、実際のユーザー名ではなくスレッド名が表示されました。 (バグ#25906021、バグ#85976)
- sys.schema_index_statisticsビューのdelete_latency列は、SUM_TIMER_DELETE列ではなく、パフォーマンススキーマtable_io_waits_summary_by_index_usageテーブルのSUM_TIMER_INSERT列を誤って参照していました。バグ#25521928)
- sys.diagnostics()プロシージャからの出力で、user_summary_by_file_io_typeビューのレイテンシ列が、フォーマットされた値としてではなく、未加工のピコ秒で誤って表示されていました。バグ#25287996)
- MySQL Enterprise Encryption関数は、DH以外のキーにDiffie-Hellman(DH)メソッドを適用する可能性があり、予期しない結果またはサーバーの終了を引き起こします。バグ#22839007)
- SHOW PROCESSLISTおよび一部のINFORMATION_SCHEMAテーブルとパフォーマンススキーマテーブルのパスワードマスキングが不完全でした。バグ#20712046)
- -DWITH_EXAMPLE_STORAGE_ENGINE = 1 CMakeオプションは無視されましたが、無視されるべきではありませんでした。 -DWITH_EXAMPLE_STORAGE_ENGINE = 0が指定されている場合、EXAMPLEストレージエンジンはプラグインとしてビルドされます。 (バグ#70859、バグ#17772560、バグ#30133062)
参照:参照:バグ#18324650。
MYSQL 5.7 リリースノート
dev.mysql.com Doc Search:
MySQL 5.7.27の変更(2019-07-22、一般提供)
Keyring ノート
- keyring_awsプラグインは、最新のAWS SDKを使用するように更新されているため、OpenSSL 1.1で動作します。
梱包ノート
- システムのcurlライブラリにリンクするのではなく、curlを含むバイナリパッケージがcurl 7.64.0を使用するようになりました。 (バグ#29357198)
Xプラグインに関する注意
- Windowsの場合、Xプラグインは不必要または不十分な情報であるいくつかのメッセージをログに記録しました。 メッセージは適切に削除または改善されています。 (バグ#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でデッドロックが発生しました。
- 貢献してくれたArm TechnologyのYibo Caiに感謝します。 (バグ#29508001、バグ#94699)
- InnoDB:MySQLサーバーの実行中に手動でシステム時間を変更すると、ページクリーナーのスレッド遅延が発生しました。 (バグ#29138644、バグ#93708)
- InnoDB:ログの適用中、OPTIMIZE TABLE操作の後、InnoDBは仮想列インデックスの更新を確認する前に仮想列を生成しませんでした。バグ#28834208)
- InnoDB:生成された仮想BLOBカラムを含むINSERT操作の結果、セカンダリインデックスが不正な値で更新されていました。バグ#28652826)
- InnoDB:フルテキストキャッシュサイズがフルテキストキャッシュサイズの制限を超えた場合、データの同期時に取得されたフルテキストキャッシュロックは解放されませんでした。バグ#25289359)
- InnoDB:同時挿入操作の実行中に異なるauto_increment_increment値を使用するクライアントセッションは、重複キーエラーを引き起こす可能性がありました。 (バグ#15851528、バグ#67526)
参照:元に戻されたパッチ:バグ#14049391、バグ#65225。
- Partitioning:ALTER TABLE … EXCHANGE PARTITIONが失敗しました。パーティション化されたテーブルに異なる行フォーマットを使用するパーティションがある場合、パーティションとテーブル間で属性「ROW_FORMAT」が一致しません。 分割テーブル。 バグ#28687608)
- レプリケーション:グループメンバーの数と自動インクリメント間隔の不一致に対して発行されるエラーメッセージは、auto_increment_incrementシステム変数ではなく、group_replication_auto_increment_incrementシステム変数を誤って参照していました。 auto_increment_incrementの値は、グループレプリケーションの開始時にgroup_replication_auto_increment_incrementで指定された値に変更されますが、auto_increment_incrementとauto_increment_offsetにデフォルト値があり、MySQL 8.0からはマルチプライマリモードでのみ変更されます。 auto_increment_incrementの値は常にエラーメッセージに対してチェックされた値でしたが、正確なシステム変数名を指定するように修正されました。バグ#29542425)
- レプリケーション:1つのMySQLサーバーインスタンスによって生成されたイベントが別のインスタンスのバイナリログに書き込まれると、2番目のサーバーは最初のサーバーがそれ自体と同じ数のバイナリログイベントタイプをサポートすると暗黙的に想定しました。そうでない場合、イベントヘッダーは正しく処理されませんでした。この問題は修正されました。 Facebookに貢献してくれてありがとう。 (バグ#29417234、バグ#94500)
- レプリケーション:グループレプリケーションでは、メンバーを結合すると、同じバージョンのメンバーがグループ内にすでに存在していても、メンバーが最も高いバージョンのメンバーを含む他のすべてのメンバーに対してチェックを行ったため、既存のレプリケーショングループと互換性がないと誤って識別される可能性があります。参加しているメンバーも、互換性チェックに独自のバージョンを含めました。現在、参加しているメンバーは、最も低いバージョンの既存のグループメンバーと自分自身を比較するだけで、自分のバージョンはカウントしません。 (バグ#29390946、バグ#94429)
- レプリケーション:バイナリログファイルが初期化される前にFLUSH LOGSステートメントが発行された場合、ステートメントはバイナリログローテーションイベントを未初期化ファイルに書き込もうとしました。サーバーは、バイナリログファイルが利用可能であることを最初に確認します。バグ#29201665)
- レプリケーション:サーバーの再起動後にMEMORYテーブルがマスターで暗黙的に削除されると、マスターもDELETEステートメントをバイナリログに書き込み、スレーブもテーブルを空にします。この生成されたイベントには、バイナリログにコメントが含まれているため、DELETEステートメントの理由を簡単に特定できます。貢献してくれたDanienl van Eedenに感謝します。 (バグ#29157796、バグ#93771)
- レプリケーション:ステートメントベースのレプリケーションが使用されている場合、UPDATEオペレーションとCOMMITオペレーションの間に何もしないトランザクションがあった時点でサーバーのsuper_read_onlyがONに設定されていると、トランザクションはバイナリログに書き込まれ、GTIDが割り当てられました。この状況では、トランザクションがブロックされます。 MySQL 8.0以降では、トランザクションの進行中にsuper_read_onlyの値を変更することはできません。 (バグ#29009092、バグ#93440)
- レプリケーション:グループレプリケーションのグループ通信エンジン(Paxosの変形であるXCom)は、メモリ不足エラーを適切な方法で処理しませんでした。メッセージのペイロードのコピーを作成するためにメモリを割り当てることができなかった場合、エラーがログに記録されましたが、メッセージはnullペイロードで送信されました。受信メンバーのグループ通信システム(GCS)はメッセージを空として破棄し、受信メンバーのXComインスタンスはこのアクションを受け入れて再試行しなかったため、メッセージは実質的にスキップされました。これにより、受信メンバーに設定されたGTIDがグループから逸脱し、レプリケーションエラーが発生しました。メモリ不足エラーが発生した場合、XComは正常に終了するため、この状況は発生しません。バグ#28702320)
- レプリケーション:バイナリログのクエリログイベントで、DROP TABLEおよびDELETEステートメントの実行に使用されるスレッドIDが誤って識別されたか、まったく識別されませんでした。一時テーブルが関与するマルチスレッドレプリケーションスレーブでは(セッション固有であるため、正しいスレッドIDが必要です)、この省略により、mysqlbinlogを使用してポイントインタイムリカバリのバイナリログを再生するときにエラーが発生しました。スレッドIDが正しく設定されるようになりました。 (バグ#28642318、バグ#92398)
- レプリケーション:スレーブサーバーがマスターステータスと接続情報をテーブル(master_info_repository = TABLE)に記録するとき(これはMySQL 8.0のデフォルトです)、サーバーがスーパー読み取り専用モードの場合、mysql.slave_master_infoテーブルはシャットダウン時に更新されませんでした( super_read_only = ON)。現時点ではエラーログにエラーは書き込まれていませんが、マスターログファイルとマスターログの位置情報が古いため、サーバーの起動後にレプリケーションが失敗しました。シャットダウン時にマスター情報ログを更新するスレッドは、他のレプリケーションスレッドと同様に読み取り専用チェックから除外されるため、サーバーがスーパー読み取り専用モードであってもテーブルを更新できます。シャットダウン中のスレーブのエラー処理も改善され、スレーブステータスログへの書き込みに失敗すると、エラーログにエラーが記録されます。 (バグ#27675107、バグ#89987)
- ストアドプログラムのローカルオブジェクトのソート中に、過度に厳密なアサーションが発生する可能性があります。 (バグ#29759547、バグ#95062)
- RPMパッケージからインストールすると、不正な権限を持つエラーログが生成される可能性があります。バグ#29702462)
- 監査ログの暗号化を有効にすると、サーバーが終了する可能性があります。バグ#29549327)
- DebianおよびUbuntuでは、ネイティブMySQLパッケージからアップグレードした後、MySQLパッケージはmysql.serviceを有効にしませんでした。バグ#29435592)
- エラーが発生したときにサーバーが共有メモリ接続を適切に閉じなかったため、予期しないサーバー動作が発生する可能性がありました。バグ#29435426)
- MySQLインストーラーは、開発コンポーネントが選択されていない場合、OpenSSL DLLの依存関係をインストールしませんでした。 (バグ#29423421、バグ#94168、バグ#30199579、バグ#96573)
- パーサーは、特定の複数ステートメントクエリのメモリをリークする可能性があります。バグ#29419820)
- CREATE USERおよびALTER USERは、IDENTIFIED WITH auth_plugin AS ‘hash_string’構文で使用された場合、ハッシュされた認証文字列の有効性をチェックしませんでした。バグ#29395944)
- VARCHARカラムにインデックスが含まれ、MySQL 5.7.23より前に作成されたInnoDBテーブルの場合、MySQL 5.7.23以降にアップグレードした後、テーブルの再構築を使用して、本来実行する必要があるいくつかの単純なALTER TABLEステートメントが実行されました。 (バグ#29375764、バグ#94383)
- HANDLERステートメントは、列が生成されたテーブルでは常に正しく機能しませんでした。バグ#29300049)
- クライアント/サーバープロトコルのセッション追跡情報が誤って処理される可能性があります。バグ#29297652)
- PAD_CHAR_TO_FULL_LENGTH SQLモードを有効にすると、警告またはエラーが報告されずにパスワードの変更が失敗しました。バグ#29287785)
- audit_logプラグインは、UNINSTALL PLUGIN audit_logステートメントをログに記録しませんでした。バグ#29248047)
- audit_logフィルタリング操作はメモリをリークする可能性があります。バグ#29201747)
- 列に外部キー関係のベース列がある場合、仮想生成列で定義されたインデックスの更新に失敗する場合がありました。 (バグ#29127203、バグ#93670)
- 一部のパフォーマンススキーマテーブルを削除する権限が誤ってチェックされました。バグ#29010031)
- ORDER BYを含む派生テーブルを使用するクエリは、常に正しく処理されませんでした。バグ#28942965)
- 基本列は、生成された列による索引のみのアクセスから除外されませんでした。バグ#28652733)
参照:参照:バグ#29664369。この問題は、バグ#23169112のリグレッションです。
- スレッドプロセスティック時間が最大許容値を超えると、スレッドプールグループがブロックされる可能性があります。ティック時間はより大きなデータ型を使用して、より大きな値を許可するようになりました。バグ#28072609)
- MySQLはOpenSSLセッションチケットをサポートしていませんが、SSL_OP_NO_TICKETフラグを設定してOpenSSLに通知していません。フラグが設定されました。バグ#27655493)
- audit_nullプラグインは、nullイベントレコードを適切にチェックしませんでした。バグ#27638290)
- 特定の場合に、UpdateXML()が常にメモリを適切に解放するとは限りませんでした。バグ#27312862)
- mysql.pluginシステムテーブルの名前列に空の値があると、起動中にサーバーが終了しました。バグ#27302459)
- thread_poolプラグインを有効にすると、パフォーマンススキーマのstatus_by_threadテーブルにデータが含まれません。バグ#25933891)
- INSTALL PLUGINステートメントの共有ライブラリ名に無効なUTF-8文字が含まれていると、サーバーがハングしました(またはデバッグビルドでアサーションが発生しました)。 (バグ#14653594、バグ#23080148、バグ#27167197)
- 異なる準結合ネストの内部テーブルがマテリアライズ中にインターリーブされたため、異なるクエリプランを使用した場合、同じクエリに対して異なる結果になる可能性がありました。これが発生しないようにするために、このようなインターリーブを防ぐためのチェックが追加されています。 (バグ#92809、バグ#28835179)
- TIMESTAMP列でのGROUP BYを含むクエリの結果、キー(ER_DUP_ENTRY)のエントリが重複しました。この問題は、タイムゾーンの特定の設定を使用してTIMESTAMP値がテーブルに挿入され、タイムゾーン設定が変更された後にこれらの値がフェッチされたため、挿入されたTIMESTAMP値の少なくとも一部が、時間は、新しいタイムゾーンで標準から夏時間(DST)に変更されました。その間、同じTIMESTAMP値が2回存在する可能性があります。現在、サーバーがエラーDUPLICATE ENTRY FOR KEY ‘group_key’を返す場合、グループ化にTIMESTAMP列が含まれる場合、代わりにDSTを持つタイムゾーンのグループ化が時間的でないというエラーが発生します。このクエリをUTCに切り替えることを検討してください。
さらに、explicit_defaults_for_timestampをONに設定し、サーバーSQLモードの一部としてMODE_NO_ZERO_IN_DATE、MODE_NO_ZERO_DATE、またはMODE_INVALID_DATESの1つ以上を設定して、この問題を回避することをお勧めします。 (バグ#90398、バグ#27970159)
MYSQL 5.7 リリースノート
dev.mysql.com Doc Search:
MySQL 5.7.26の変更(2019-04-25、一般提供)
セキュリティノート
- MySQL Commercial ServerのリンクされたOpenSSLライブラリがバージョン1.0.2rに更新されました。 新しいOpenSSLバージョンで修正された問題は、http://www.openssl.org/news/vulnerabilities.htmlで説明されています。
この変更は、代わりにyaSSLライブラリを使用するMySQLサーバーのOracleが作成したMySQLコミュニティビルドには影響しません。 バグ#28988091)
修正されたバグ
- 重要な注意:MySQLサーバーに含まれるlibeventライブラリは、バージョン2.1.8にアップグレードされました。 (バグ#28207237、バグ#29041505、バグ#29055011)
- InnoDB:最適化されたInnoDB内部一時テーブルはインプレースUPDATE操作をサポートしていなかったため、削除マークの付いたレコードの数が継続的に増加していました。削除マークが付いたレコードが多数あると、クエリの実行時間が予想よりも長くなる可能性があります。バグ#29207450)
- InnoDB:生成された列の基本列情報は保存されませんでした。バグ#29021730)
- InnoDB:innodb_flush_method O_DIRECT_NO_FSYNC設定に関連するアサーションコードは、その設定に対する最近の変更により、無効になりました。アサーションコードが修正されました。バグ#29007731)
参照:参照:バグ#27309336。 - InnoDB:innochecksumユーティリティで発見されたメモリリークが削除されました。 (バグ#28917614、バグ#93164)
- InnoDB:仮想列にインデックスを作成しようとして失敗したDDL操作の結果、アサーションエラーが発生しました。バグ#28825718)
- InnoDB:Linux AIOハンドラー関数は、完了したI / Oイベントが成功したかどうかの確認に失敗しました。貢献してくれたWei Zhaoに感謝します。 (バグ#27850600、バグ#90402)
- InnoDB:CREATE TABLEスレッドによって呼び出された関数が、バックグラウンドスレッドによって解放された後にテーブルオブジェクトにアクセスしようとしました。
- パッチを提供してくれたYan Huangに感謝します。 (バグ#27373959、バグ#89126)
- InnoDB:INSERT … ON DUPLICATE KEY UPDATE操作を同時に実行する2つのセッションでデッドロックが発生しました。タプルの部分的なロールバック中に、別のセッションがタプルを更新する可能性があります。このバグの修正は、バグ#11758237、バグ#17604730、およびバグ#20040791の修正を元に戻します。バグ#25966845)
- InnoDB:結合されたテーブルへのアクセスに使用されるメソッドがconstの場合、InnoDBは一致する行を複数回アンロックしようとしました。バグ#20939184)
- InnoDB:インデックスの追加時に、INFORMATION_SCHEMA.TABLESのINDEX_LENGTH値が更新されなかった。バグ#19811005)
- Partitioning:ALGORITHM = INPLACEを使用してALTER TABLEステートメントによってパーティションテーブルに追加されたAUTO_INCREMENTキーは、各パーティションで再起動されました。 (バグ#92241、バグ#28573894)
- レプリケーション:WAIT_FOR_EXECUTED_GTID_SET()関数が小数部(1.5など)を含むタイムアウト値と共に使用された場合、キャストロジックのエラーにより、タイムアウトが最も近い整数秒に切り捨てられ、値が小さい場合はゼロに切り捨てられました1秒よりも大きい(たとえば、0.1)。キャストロジックが修正され、タイムアウト値が最初に指定された丸めなしで適用されるようになりました。貢献してくれたDirkjan Bussinkに感謝します。 (バグ#29324564、バグ#94247)
- レプリケーション:group_replication_exit_state_actionの値によっては、グループを終了するメンバーの動作に一貫性がありませんでした。エラーシナリオに関係なく、グループを終了するメンバーの動作を調和させるために、group_replication_exit_state_action = READ_ONLYを持つメンバーがグループを意図せずに終了すると、メンバーが開始したときに持っていたsuper_read_onlyモードが復元されます。これにより、動作がgroup_replication_exit_state_action = ABORT_SERVERのメンバーの動作と一致します。 (バグ#28971639、バグ#28526591)
- レプリケーション:テーブルを開くプロセス中にアプライヤースレッドが停止した場合、エラーは設定されなかったため、ビルドタイプに応じてセグメンテーションエラーまたはアサーションが発生する可能性がありました。この状況でエラー処理が正しくアクティブ化されるようになりました。バグ#28864557)
- レプリケーション:サーバーでGTIDが使用されていると、マスターが自動スキップ機能を使用してトランザクションをスキップするたびに、レプリケーションスレーブのマスター情報ログが同期されていました。プロセスは、スレーブに送信されてログへの強制フラッシュを引き起こしたダミーのハートビートで終了します。これにより、スレーブの書き込み負荷に累積的に大きな影響を与える可能性があります。同じ問題は、同じサーバーから発生したため無視されたイベントを持つ循環レプリケーショントポロジでも発生する可能性があり、これらのイベントも強制的にログにフラッシュしてスレーブによって処理されました。スレーブ処理コードが変更され、循環レプリケーションを介して受信されたハートビートイベントと無視されたイベントの強制フラッシュを削除するようになりました。これにより、マスター情報ログは適切な場合にのみ同期されます(たとえば、CHANGE MASTERステートメントが発行されたとき、またはバイナリログがローテーションされます)。 (バグ#28815555、バグ#85158)
- レプリケーション:シングルプライマリモード(group_replication_single_primary_mode = ON、デフォルト)で構成されたレプリケーショングループで、深刻なネットワーク遅延がグループに影響を与えた場合、プライマリとセカンダリがトランザクションで異なる決定に到達する可能性があり、メンバーのgtid_executedセットに相違が生じる。この問題は修正されました。 (バグ#28768550、バグ#28966455、バグ#92690)
- レプリケーション:バイナリログに書き込まれたGRANTステートメントが誤ってログに記録されることがあり、マスターでGRANTステートメントが正常に実行され、レプリケーションスレーブでエラーが発生する可能性がありました。 (バグ#28643405、バグ#29155451、バグ#93750)
- レプリケーション:ストレージエンジンにSTATEMENT形式でログインする機能があり、ROW形式ではない場合、binlog_formatをSTATEMENTに設定すると、安全でないSQLステートメントがログに記録され、警告メッセージがエラーログに書き込まれます。ただし、そのようなステートメントは実行されず、エラーログにエラーメッセージが書き込まれました。これは、binlog_formatがMIXEDまたはROWに設定されている場合の正しい動作です。この問題は修正され、binlog_formatがSTATEMENTに設定されている場合に、安全でないステートメントが期待どおりにログに記録されるようになりました。バグ#28429993、バグ#73936)
- レプリケーション:廃止されたgroup_replication_allow_local_disjoint_gtids_joinを使用すると、ログメッセージが追加されます。 (バグ#93348、バグ#28971624)
- レプリケーション:過負荷のサーバーで、メンバーがグループに参加したときに、そのポイントをマークするVIEW_CHANGE_LOG_EVENTイベントが正しい場所に記録されなかった可能性がありました。これにより、新しく参加するサーバーへのデータ転送でエラーが発生し、データが相違する可能性があります。これで、VIEW_CHANGE_LOG_EVENTイベントがバイナリログの正しい場所に記録されます。さらに、イベントのログ記録の遅延に関する警告がログに記録されます。 (バグ#93347、バグ#28971594)
- Microsoft Windows:named_pipe_full_access_groupシステム変数の有効性テストで、NULL値が考慮されていませんでした。バグ#29256690)
- authentication_ldap_simpleプラグインは、認証を誤って実行する可能性があります。バグ#29637712)
- Fedora 29プラットフォームでは、compat-openssl10-develビルド依存関係がopenssl-develに変更されました。バグ#29278747)
- CMakeは、MySQLで動作するには古すぎるlibtirpcライブラリを検出すると、代わりにglibcのSun RPCを使用しようとします。バグ#29240701)
- –usersオプションを使用すると、mysqlpumpはCREATE USERおよびGRANTステートメントを出力に書き込みましたが、ダンプによって作成された他のオブジェクトに適用するには遅すぎます。その結果、ダンプファイルを復元すると、ユーザーアカウントが作成され、ファイルによって作成された他のオブジェクトに適用できなくなりました。 mysqlpumpは、他のオブジェクトの前にユーザーアカウントをダンプファイルに書き込みます。バグ#29023216)
- mysql.userテーブルが破損すると、サーバーが終了する可能性があります。バグ#28986737)
- tirpcヘッダーのCMakeチェックは、より多くのLinuxプラットフォームでヘッダーを検索できるように、pkgconfigの使用にフォールバックするようになりました。これには、pkgconfigがインストールされている必要があります。 (バグ#28970313、バグ#93341、バグ#28997093)
- 準備されたステートメントの実行中に、nullポインタにアクセスする試みが発生する可能性があります。バグ#28692136)
- 接続がthread_poolプラグインによって管理されている場合、失敗した接続試行に対してAborted_connectsステータス変数が増分されませんでした。バグ#28490126)
- mysqladmin shutdownは、mysqldがシャットダウンするのを待ちませんでした。バグ#28466137、バグ#91803)
参照:この問題は、バグ#25364806のリグレッションです。
- 短絡評価を受けるクエリを実行するストアドプロシージャの繰り返し呼び出しは、常に正しく処理されるとは限りませんでした。バグ#28379655)
- キーリングの移行には、ソースキーリングへの読み取りアクセス権のみが必要ですが、ユーザーが書き込みアクセス権を持たない限り失敗します。バグ#28339014)
- キーリングの移行を実行するユーザーにキーリングファイルへの書き込みアクセス権がない場合、移行は失敗しましたが、最終的なエラーログメッセージで成功が報告されました。バグ#28330922)
- FLUSH STATUSの実行中に、パフォーマンススキーマが不必要にセッションステータスをグローバルステータスに集約し、一部のステータス変数のカウントが2倍になりました。 (バグ#28291258、バグ#91541)
- 一部のステータス変数値は、元の値に戻る前に一時的に増加する可能性があります。 (バグ#27839644、バグ#90351)
- ALTER INSTANCE ROTATE INNODB MASTER KEYを実行し、keyring_fileプラグインからkeyring_encrypted_fileプラグインにキーを移行すると、暗号化されたテーブルが使用できなくなる可能性があります。バグ#27760952)
- udf_exampleユーザー定義関数のバイナリファイルは、バイナリ配布から省略されました。 (バグ#26115002、バグ#29178542)
- システム変数skip_name_resolveを有効にしてサーバーを起動すると、localhostのホスト名部分を持つアカウントを無視することに関する誤った警告がエラーログに書き込まれる可能性があります。 (実際にはアカウントが使用され、無視されませんでした。)(バグ#23329861、バグ#81441)
- クライアント接続アクティビティと同時にプラグインをインストールおよびアンインストールすると、サーバーが終了する可能性があります。バグ#22980441)
- 複雑な結合を含む一部のクエリは、ファイルハンドルをリークしました。 (バグ#90902、バグ#28039829)
- Ubuntu 14.04およびSLES 11はEOLであり、サポートされなくなりました。
MYSQL 5.7 リリースノート
dev.mysql.com Doc Search:
MySQL 5.7.25の変更(2019-01-21、一般提供)
非推奨および削除に関する注意事項
- resolveipおよびresolve_stack_dumpユーティリティは非推奨になり、MySQL 8.0では削除されます。 nslookup、host、またはdigはresolveipの代わりに使用できます。 公式のMySQLビルドからのスタックトレースは常にシンボル化されるため、resolve_stack_dumpを使用する必要はありません。
プラグ可能な認証
- LDAPポート番号が636または3269として構成されている場合、プラグインはLDAPではなくLDAPS(LDAP over SSL)を使用するようになりました。 ポート番号は、authentication_ldap_sasl_server_portまたはauthentication_ldap_simple_server_portシステム変数を使用して設定できます。 (LDAPSはstartTLSとは異なります。)(バグ#28743563)
- 以前は、プロキシを使用したLDAP認証の場合、LDAP認証プラグインは、LDAPサーバーから返された最初のグループ名をMySQLプロキシユーザーアカウント名として使用していました。 MySQLアカウントの認証文字列は、一致するグループのリストを優先順に指定できるようになり、オプションで一致するグループ名を指定されたMySQLプロキシユーザー名にマッピングできます。 LDAPプラガブル認証を参照してください。
セキュリティノート
- MySQL Commercial ServerのリンクされたOpenSSLライブラリがバージョン1.0.2qに更新されました。 新しいOpenSSLバージョンで修正された問題は、http://www.openssl.org/news/vulnerabilities.htmlで説明されています。
この変更は、代わりにyaSSLライブラリを使用するMySQLサーバーのOracleが作成したMySQLコミュニティビルドには影響しません。 バグ#28988091)
追加または変更された機能
- Microsoft Windows:MySQLサーバーによって作成された名前付きパイプ上のクライアントに付与されたアクセス制御は、Windowsで正常に通信するために必要な最低限に設定されています。 新しいMySQLクライアントソフトウェアは、追加の構成なしで名前付きパイプ接続を開くことができます。 古いクライアントソフトウェアをすぐにアップグレードできない場合は、新しいnamed_pipe_full_access_groupサーバーシステム変数を使用して、Windowsグループに名前付きパイプ接続を開くために必要なアクセス許可を与えることができます。 フルアクセスグループのメンバーシップは、制限された一時的なものである必要があります。
修正されたバグ
- InnoDB:ダングリングポインターが原因でメモリリークが発生しました。 バグ#28693568)
- InnoDB:外部キー制約とインデックス付き仮想列があるテーブルでのON DELETE CASCADE操作により、サーバーが終了しました。 バグ#28470805)
- InnoDB:仮想列の値を含む誤って書き込まれたDMLログがアサーションを発生させました。 バグ#28448853)
- InnoDB:O_DIRECT_NO_FSYNC innodb_flush_method設定を使用すると、ファイルシステムのメタデータが非同期になるためにシステムがハングする可能性があります。 この問題がO_DIRECT_NO_FSYNCモードで発生するのを防ぐために、InnoDBは新しいファイルの作成後、ファイルサイズの増加後、およびファイルのクローズ後にfsync()を呼び出すようになりました。 fsync()システムコールは、各書き込み操作の後もスキップされます。 バグ#27309336)
- InnoDB:64ビットWindowsシステムでサイズが4GBを超えるテーブルスペースファイルに書き込もうとすると、アサーションが発生しました。 失敗はキャストの絞り込みによるものでした。 (バグ#26636815、バグ#87423)
- Partitioning:BLOBまたはTEXTカラムを含むパーティション化されたテーブルで繰り返されるALTER TABLEステートメントは、常に正しく処理されませんでした。 バグ#28491099)
- Partitioning:パーティションテーブルにDATA DIRECTORYオプションを使用した1つ以上のパーティション定義がある場合、ALTER TABLE … EXCHANGE PARTITIONは機能しませんでした。 この修正は、InnoDBストレージエンジンのみを使用してパーティション分割テーブルをサポートします。 バグ#19730200)
- レプリケーション:バイナリログのROLLBACK TO SAVEPOINTステートメントの識別子の引用符の処理を修正するパッチが、後続のMySQLバージョンに正しく適用されませんでした。バグ#28569645)
- レプリケーション:MySQL 5.7.23のパッチに続いて、LOAD DATAステートメントは、MySQL 5.7.22マスターからレプリケーションスレーブへのステートメントベースのレプリケーションを後のリリースで停止しました。この問題は修正されました。 (バグ#28541204、バグ#92132)
- レプリケーション:状況によっては、マスター情報ログがテーブル(master_info_repository = TABLE)からファイル(master_info_repository = FILE)に変更されている場合、CHANGE MASTER TOステートメントをレプリケーションスレーブで使用できませんでした。バグ#28529558)
- レプリケーション:システム変数binlog_transaction_dependency_trackingおよびbinlog_transaction_dependency_history_sizeが設定または読み取られると、アクティブなバイナリログの操作にも同じロックが必要になるため、必要なロックの種類によってデッドロックシナリオが発生する可能性がありました。トランザクションの依存関係の追跡システム変数へのアクセスには、代わりに新しいロックタイプが使用されるため、このデッドロックは発生しません。 (バグ#28511326、バグ#91941、バグ#28537209、バグ#92108)
- レプリケーション:PURGE BINARY LOGS TO ‘log_name’ステートメントは、mysqlbinlogmoveを使用して別の場所に移動されたバイナリログファイルに対して失敗しました。このようなファイルは引き続きバイナリログインデックスファイルにリストされますが、バイナリログファイルが通常格納されるディレクトリからの相対パスではなく、絶対パスを使用してリストされます。 MySQLサーバーは、移動されたバイナリログファイルを正常に検索してパージできるようになりました。バグ#28284624)
- レプリケーション:GTIDが使用されていて、super_read_only = ONが設定されているレプリケーションスレーブまたはグループレプリケーショングループメンバーの自動コミットが0に設定されている場合、完了しないトランザクションによってサーバーのシャットダウンが妨げられました。トランザクションはGTIDをmysql.gtid_executedテーブルに保存しようとしましたが、super_read_only = ONが設定されていたため、更新は失敗しました。 (autocommitを1に設定すると、トランザクションはこの状況で完了し、代わりにmysql.gtid_executedテーブルがサーバーの起動時に更新されます。)これで、このタスクのsuper_read_only設定のチェックがスキップされるため、トランザクションはGTIDをmysql.gtid_executedテーブルに保存し、super_read_onlyとautocommit設定の組み合わせに関係なく完了します。バグ#28183718)
- レプリケーション:gtid_next値が手動で設定されているときに、不明なトランザクション識別子に対してXA ROLLBACKステートメントが発行された場合、デバッグビルドでアサーションが発生しました。 XA ROLLBACKステートメントがエラーで失敗した場合、サーバーはGTID状態の更新を試みなくなりました。 (バグ#27928837、バグ#90640)
- レプリケーション:すべての既存のリレーログファイル(Relay_Log_Space)の合計サイズのSHOW SLAVE STATUSステートメントによって返される値は、リレーログファイルが使用する実際のディスク容量よりもはるかに大きくなる可能性があります。値を更新している間、I / Oスレッドは変数をロックしなかったため、SQLスレッドはI / Oスレッドが値の更新を完了する前に、リレーログファイルを自動的に削除し、削減された値を書き込むことができました。次に、I / Oスレッドは元のサイズ計算を記述し、SQLスレッドの更新を無視して、削除されたファイルのスペースを追加します。同時更新を防ぎ、正確な計算を確実にするために、Relay_Log_Space値が更新中にロックされるようになりました。 (バグ#26997096、バグ#87832)
- レプリケーション:リレーログインデックスファイルがレプリケーションスレーブのバックアッププロセスで表示するために一時的にロックされていて、MySQLサーバーがそのときにファイルにアクセスして名前変更または削除操作を試みた場合、バックアップは警告付きで完了しましたが、MySQLサーバーが予期しない停止。 MySQLサーバーは、これまたは同様のシナリオが原因でファイルが再び利用可能になる場合に備えて、ファイルアクセス操作を何度も再試行するようになりました。バグ#25839610)
- レプリケーション:sync_binlog = 1が設定されている場合、バイナリログの終了位置が更新される前にコミット中にバイナリログがローテーションされると、サーバーが新しいバイナリログファイルで古いバイナリログの終了位置を使用しようとしたため、スレーブでレプリケーションが停止しました。サーバーは、バイナリログの終了位置を更新するときに、バイナリログファイル名をアクティブなバイナリログファイルと比較するため、問題は発生しません。 (バグ#22252394、バグ#25524203、バグ#84752)
- レプリケーション:新しいメンバーをグループに追加するときに、認証情報が大きすぎて送信できない場合、すべてのグループメンバーに障害を引き起こすイベントが生成されました。この状況を回避するために、認証情報が大きすぎる場合、参加メンバーがグループを脱退するエラーが生成されます。 (バグ#93130、バグ#91870、バグ#28900691、バグ#28443958)
- レプリケーション:レプリケーションを停止すると、保留中のトランザクションがあったチャネルがグループレプリケーションでデッドロックを引き起こす可能性があります。 (バグ#92376、バグ#28636768、バグ#28365855)
- keyring_awsプラグインがmacOSの商用パッケージにありませんでした。
- このプラグインでサポートされるmacOSバージョンは、macOS 10.13および10.14です。 バグ#29051838)
- MySQL Enterprise Firewallは、audit_logプラグインがインストールされているとうまく機能しませんでした。 バグ#28930885、バグ#93184)
- サーバーは、REDOログファイルと同じ名前のデータベースの作成を許可しました。これにより、サーバーが予期しない動作をする可能性があります。 このような名前は、データベース名として許可されなくなりました。 バグ#28867993)
- glibcからSun RPCおよびXDRを別のlibtirpcライブラリに削除すると、一部のプラットフォームでlibasanに問題が発生しました。 (バグ#28785835、バグ#92762、バグ#28897799、バグ#93116)
- LDAPグループ検索フィルター値で、特殊文字はエスケープされませんでした。 ユーザーDNの特殊文字は、次のように16進数でエスケープされます。(Bug #28743525)
* => \2a
( => \28
) => \29
\ => \5c
\0 => \00
- 同じユーザーレベルのロックを保持している同時接続が原因で失敗した、タイムアウトがゼロのGET_LOCK()呼び出しが原因でメモリリークが発生しました。バグ#28714367)
- エラーが発生した場合、mysqlpumpは割り当てられたすべてのリソースを解放しなかったため、メモリリークが発生しました。 (バグ#28538971、バグ#92131)
- デバッグビルドの場合、CREATE USERステートメントをロールバックしようとすると、サーバーが終了する可能性があります。バグ#28536312)
- 非推奨のシステム変数の取り扱いを誤ると、パフォーマンススキーマのvariables_by_threadテーブルに対するクエリからの出力が正しくなくなる可能性があります。 (バグ#28515475、バグ#92049)
- サブクエリにUNIONが含まれている場合、サブクエリ列の数のカウントが正しく計算されませんでした。バグ#28499924)
- GTID対応サーバーでは、INFORMATION_SCHEMA.COLUMNSテーブルの同時ステートメントがデッドロックする可能性があります。 (バグ#28293047、バグ#91548)
- memcmp()関数を使用してログファイル名を文字列として比較すると、初期化されていないメモリの読み取りエラーが発生しました。比較でstrncmp()関数が使用されるようになりました。 Zsolt ParragiとLaurynas Biveinisの貢献に感謝します。 (バグ#28178776、バグ#90238)
- 2番目の列に対してLIKE句を使用した内部結合を実行すると、オプティマイザは複合インデックスの2番目の列をスキップしました。バグ#28086754)
- CREATE TABLE … SELECTは、デフォルト値なしで作成する必要があるときに、日付のデフォルト値が「ゼロ」の日付列を作成する可能性があります。バグ#28022129)
- INサブクエリ述語のセミジョインへの変換は、非常に多数のテーブルで正しく処理されませんでした。バグ#28004674)
- サーバーがSIGHUPシグナルを誤って処理すると、サーバーが終了する可能性があります。 (バグ#27966483、バグ#90742)
- 1つの文字列比較オペランドの文字セットが他のオペランドの文字セットのスーパーセットである場合、「小さい」文字セットのオペランドを「大きい」文字セットに変換することで許可されるべきいくつかの比較が許可されませんでした。 utf8mb4とutf32は、他のエンコーディングのスーパーセットと見なされます。 (バグ#27897053、バグ#25642319、バグ#85224)
- アカウント管理ステートメントによる不適切なメモリ処理は、サーバーの誤動作を引き起こす可能性があります。バグ#27820277)
- 多数のプレースホルダーを使用して複数行の挿入を行う準備済みステートメントを実行すると、過剰なメモリが消費され、実行が遅くなる可能性があります。バグ#27703912)
- パーサーは、トリガー定義で無効なSETステートメント構文を受け入れましたが、これによりサーバーが終了する可能性があります。バグ#27595603)
- keyring_encrypted_fileプラグインキーリングファイルが無効な場合、サーバーは起動に失敗しました。バグ#27588064)
- キーリングの移行は、それぞれkeyring_okvおよびkeyring_encrypted_fileのソースおよび宛先キーリングプラグインで失敗しました。バグ#27493970)
- CURSOR_TYPE_READ_ONLYフラグが設定されたプロシージャコールで準備済みステートメントを実行すると、プロシージャが空の結果セットを返すSELECTを実行すると、クライアントライブラリがハングしました。 (バグ#27443252、バグ#89214)
- パーサーはいくつかのメモリ不足チェックを誤って実行しました。バグ#25633994)
- binlog_formatがROWまたはMIXEDの場合、一時テーブルに対する操作はログに記録されません。以前は、このルールの例外は、セッションの終了時に接続が終了したときに、セッションで開かれた一時テーブルに対してDROP TEMPORARY TABLE IF EXISTSステートメントがログに記録されていました。行ベースのレプリケーションでは、この動作によりバイナリログへの不要な書き込みが発生し、GTIDのトランザクションシーケンス番号が追加されました(これらが有効になっている場合)。
現在、セッションで一時テーブルが作成されると、バイナリログ形式が追跡されます。 DROP TEMPORARY TABLE IF EXISTSステートメントがログに記録されるのは、一時テーブルの作成時にステートメントベースのフォーマットが有効だったため、セッションの最後にのみ記録されたため、CREATE TEMPORARY TABLEステートメントが記録されました。テーブルの作成時に行ベースまたは混合形式のバイナリロギングが使用されていた場合、DROP TEMPORARY TABLE IF EXISTSステートメントはログに記録されません。
パッチを提供してくれたLaurynas Biveinisに感謝します。 (バグ#24670909、バグ#83003、バグ#28606948)
- IGNOREを使用するDMLステートメントは、生成された列を持つテーブルで常に正しく処理されませんでした。 バグ#22990029)
- ダイナミックレンジとインデックスマージを使用するクエリは、予想よりも多くのメモリを使用する可能性があります。 (バグ#89953、バグ#27659490)