2021.08.10

MySQL

MySQL Community Server 5.7.35 GA版(リリース日:2021年7月20日)

主な変更点

■ 監査ログ関連

● MySQL Enterprise Auditの場合、新しいaudit_log_format_unix_timestampシステム変数を使用すると、各監査レコードに時間フィールドを含めることができます。フィールド値は、監査イベントが生成された日時を示すUNIXタイムスタンプ値を表す整数です。時間フィールドは、JSON形式のログファイルでのみサポートされます。

■ 非推奨と削除関連

● TLSv1およびTLSv1.1接続プロトコルは非推奨になり、それらのサポートは今後のMySQLバージョンで削除される可能性があります(背景については、IETFメモ Deprecating TLSv1.0 and TLSv1.1を参照してください)。より安全なTLSv1.2およびTLSv1.3プロトコルを使用して接続を確立することをお勧めします。TLSv1.3では、MySQLサーバーとクライアントアプリケーションの両方がOpenSSL 1.1.1以降でコンパイルされている必要があります。

 サーバー側では、この非推奨で次の影響があります:

  ・tls_versionシステム変数に非推奨のTLSプロトコルを含む値が割り当てられている場合、
   サーバーは非推奨のプロトコルごとに警告をエラーログに書き込みます。

  ・クライアントが非推奨のTLSプロトコルを使用して正常に接続する場合、サーバーは
   エラーログに警告を書き込みます。

 クライアント側では、非推奨は目に見える影響を及ぼしません。非推奨のTLSプロトコルを許可するように設定されている場合、クライアントは警告を発行しません。これには次が含まれます:

  ・MySQLサーバーへの接続にTLSプロトコルを指定するための--tls-versionオプションを
   サポートするクライアントプログラム。

  ・レプリカがソースサーバーへの接続用のTLSプロトコルを指定できるようにする
   ステートメント。(CHANGE MASTER TOにはMASTER_TLS_VERSIONオプションがあります。)

 (バグ #32565996)

■ パッケージ関連

● システムcurlライブラリにリンクするのではなくcurlを含むバイナリパッケージが、curl 7.77.0を使用するようにアップグレードされました。(バグ #33077562)

● バンドルされているlz4ライブラリは、バージョン 1.9.3にアップグレードされました。(バグ #29747853)

■ 主なバグ修正

● InnoDB:UNDOテーブルスペースの切り捨て操作が開始された後、UNDOログページとロールバックセグメントページを含むユーザースレッドとパージスレッドの間のデッドロックが発生しました。デッドロックにより、セマフォの待機時間が長くなり、最終的にエラーが発生しました。(バグ #32800020)

● InnoDB:整数アンダーフローの問題がInnoDB mecachedプラグインソースで解決されました。(バグ #32620378、バグ #32620398)

● InnoDB:767バイトを超えるキープレフィックス長のインデックスが、REDUNDANT行フォーマットで定義されたテーブルで許可され、その行フォーマットのインデックスキープレフィックス長の制限を超えました。インデックスを追加したALTER TABLE操作は、テーブルの実際の行フォーマットではなく、innodb_default_row_format変数によって定義された行フォーマットのインデックスキープレフィックス長を検証しました。この修正により、インデックスキープレフィックス長が正しい行フォーマットで検証されるようになります。(バグ #32507117、バグ #102597)

● InnoDB:オンラインバッファープールのサイズ変更操作により、前のバッファープールページハッシュが解放され、前のページハッシュを必要とする同時バッファプールルックアップと競合しました。(バグ #32460315)

● InnoDB:バッファプールフラッシュリストの末尾にある多数のシステム一時テーブルページによって、パフォーマンスが低下しました。フラッシュリストスキャンがシステム一時テーブルページをトラバースしている間、flush_list_mutexは保持されました。フラッシュリストスキャンで、システム一時テーブルページが除外されるようになりました。(バグ #31060470、バグ #98974)

● InnoDB:多数の同時更新操作がありinnodb_thread_concurrency設定が低いステートメントベースのレプリケーションを使用するシステムでバイナリログローテーションデッドロックが発生しました。(バグ #30215068、バグ #96374)

● レプリケーション:システム変数replication_optimize_for_static_plugin_configが設定されている場合、サーバーのシャットダウン時にグループレプリケーションと半同期レプリケーションのプラグインを正常にアンインストールできませんでした。(バグ #32798287)

● レプリケーション:START GROUP_REPLICATIONステートメントとSTOP GROUP_REPLICATIONステートメントがグループのビュー変更が行われているのと同時に発行された場合、デッドロックが発生する可能性がありました。(バグ #32738137、バグ #32836868)

● レプリケーション:グループメンバーのレプリケーションチャネルがトランザクションをコミットしようとした時にSTOP GROUP_REPLICATIONステートメントが発行された場合、デッドロックが発生する可能性がありました。サーバーは、ロックとコミットが完了するのを待ち、デッドロックが引き起こされるのではなく、関連するロックを取得できない場合は、トランザクションをすぐにロールバックするようになりました。(バグ #32633176)

● レプリケーション:マルチスレッドレプリカでは、トランザクションを再試行する時に、アクティブなイベントへの参照が正しく管理されないことがありました。(バグ #32590974)

● レプリケーション:レプリカサーバーは、GTIDに関連付けられたトランザクションを適用してコミットする前に、GTIDのトランザクションID部分をチェックして検証するようになりました。(バグ #32103192)

● レプリケーション:トランザクションの依存関係の計算に使用される書き込みセットハッシュから一意のセカンダリキーが省略された場合、マルチスレッドレプリカでレプリケーションが停止する可能性があり、それはマルチスレッドレプリカでトランザクションを実行する時にエラーにつながりました。一意の2次キーが、読み取りセットと書き込みセットに含まれていない場合でも、書き込みセットハッシュには常に含まれるようになりました。(バグ #31636339)

● JSON:JSONパラメータを期待してストアドプロシージャにNULLを渡すと、デバッグビルドでアサーションエラーが発生しました。(バグ #23209914)

● XAトランザクションが拒否された直後またはデッドロックが原因でロールバックを強制された直後にDMLステートメントが実行された場合、レプリケーションが失敗する可能性がありました。(バグ #32707060)

● mysql_change_user() C API関数がCOM_CHANGE_USERパケットを適切に解析しなかったため、mysql_change_user()呼び出しの前に提供された可能性のあるオプションのクエリ属性の処理がサイレントに失敗する可能性がありました。(バグ #32391415、バグ #102266)

● 暗黙的なトランザクションの開始時にプリペアドステートメントを再準備すると、ER_GTID_NEXT_TYPE_UNDEFINED_GROUPエラーが発生する可能性がありました。(バグ #32326510、バグ #102031)

● 全文検索インデックスを使用してテーブルに大量のデータをロードすると、メモリ不足エラーが発生しました。全文検索補助テーブルにデータを挿入する時に、全文検索キャッシュに割り当てられた全てのメモリが考慮されたわけではありませんでした。(バグ #31576731)

● インデックスがオンラインでビルドされた時に、仮想列上のセカンダリインデックスが破損しました。

 UPDATEステートメントの場合、これを次のように修正します。インデックスレコードの仮想列値がNULLに設定されている場合、クラスターインデックスレコードからこの値を生成します。(バグ #30556595)

● Boolean型のシステム変数に負の値を割り当てることができました。(バグ #11758439、バグ #50643)

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

MySQL Editions

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

MySQL Editionsの詳細