2018.09.28

MySQL

MySQL 8.0.12 GA版(リリース日:2018年7月27日)

主な変更点

■ 監査ログ

・新しいMySQLでは、MySQL Enterprise Auditで使用されるaudit_log_userテーブルのUSERカラムと
 HOSTカラムに、mysql.userシステムテーブルのUserカラムとHostカラムの定義に対応する定義が
 追加されました。すでにインストールされているMySQL Enterprise Auditをアップグレードする
 場合は、次のようにテーブル定義を変更することをお勧めします。
  ALTER TABLE mysql.audit_log_user
   DROP FOREIGN KEY audit_log_user_ibfk_1;
  ALTER TABLE mysql.audit_log_filter
    CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_ci;
  ALTER TABLE mysql.audit_log_user
    CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_ci;
  ALTER TABLE mysql.audit_log_user
    MODIFY COLUMN USER VARCHAR(32);
  ALTER TABLE mysql.audit_log_user
    ADD FOREIGN KEY (FILTERNAME) REFERENCES mysql.audit_log_filter(NAME);
 (Bug #23706056)

■ コンパイル

・Microsoft Windows:OpenSSL 1.1では、Windowsのライブラリ名が変更されました。CMakeの設定も
 これに合わせて変更しました。また、Windowsで、-DWITHOUT_SERVER = 1を使用して32ビットの
 クライアントバイナリをビルドすることも可能になりました。(Bug#28170711、Bug#91223)

・サーバービルド用のBoostライブラリの最小バージョンは現在1.67.0です。(Bug#27866110)

■ 設定

・これらのパフォーマンススキーマのシステム変数に関して、最大値が256から1024に大きくなりました。
  performance_schema_max_cond_classes
  performance_schema_max_file_classes
  performance_schema_max_mutex_classes
  performance_schema_max_rwlock_classes
  performance_schema_max_socket_classes
  performance_schema_max_stage_classes
  performance_schema_max_thread_classes

 次のパフォーマンススキーマのシステム変数に関して、デフォルト値が250から300に大きくなりました。 
  performance_schema_max_mutex_classes

 (Bug #27647918)

・Linux上のRelWithDebInfoビルドの場合、REPRODUCIBLE_BUILDはデフォルトでONになりました。
 (Bug #27483447)

・slave_pending_jobs_size_maxシステム変数のデフォルト値が16Mから128Mに大きくなりました。
 マルチスレッドスレーブ(slave_parallel_workers > 0)では、この値はまだ適用されていない
 イベントを保持するスレーブワーカーキューに使用可能な最大メモリ量を設定します。マルチスレッド
 スレーブを展開するために必要なリソースを計算するときは、潜在的に大きなメモリ使用量を考慮する
 必要があります。マスターとシングルスレッドスレーブはこの設定の影響を受けません。
 新しいデフォルトは、max_allowed_packetシステム変数(現在は64M)で指定される最近増加した
 デフォルト値の2倍です。slave_pending_jobs_size_maxの値はソフトリミットなので、その値よりも
 大きなイベント(1つ以上のパケットで構成される)をキューに入れて処理することができます。
 しかし、すべてのスレーブワーカーが空のキューを持って処理されるまで、大きなトランザクションは
 保持されます。その後のすべてのトランザクションは、大きなトランザクションが完了するまで、
 保持されます。すべてのスレーブワーカーのキューをクリアするための遅延と、後続のトランザクションの
 キューイング待ちは、レプリケーションスレーブの遅延とスレーブワーカーの並列処理の低下を引き起こす
 可能性があります。したがって、slave_pending_jobs_size_maxの値は、予想されるほとんどの
 イベントサイズに対応できるように十分に高く設定する必要があります。

■ データディクショナリ

・以下のデータディクショナリの機能拡張が導入されました。
  * グローバルリードロックを防止するための内部メソッドが追加されました。このメソッドは、
   データディクショナリオブジェクトの格納、更新または削除の前に呼び出されます。
  * データディクショナリオブジェクトの格納、更新または削除時にグローバルリードロックを
   防止するために、アサーションコードがデータディクショナリAPIに追加されました。
  * ストレージエンジンによって排他的なメタデータロックが取得された時に、バックアップロック
   およびグローバルリードロックに対して保護が暗黙的に取得されるようになりました。
  * コストモデルエントリを解放する前に、コストモデルのキャッシュの有効性の確認が実行
   されるようになりました。
  * トランザクションのコミットとロールバック、およびトランザクショナルメタデータロックの
   解放用に、データディクショナリAPI関数が追加されました。
 (Bug #27937059)

■ 関数

・OVER句が存在する場合、BIT_AND()、BIT_OR()、およびBIT_XOR()の集約関数をウィンドウ関数
 として使用できるようになりました。

■ ロギング

・以前は、dragnet.log_error_filter_rulesシステム変数への割り当てが成功すると、ノートと
 ゼロ以外の警告カウントが発生しました。正常な操作のための診断の生成を避けるために、
 このノートはもう生成されません。代わりに、dragnet.Statusステータス変数を参照して、
 dragnet.log_error_filter_rulesへの最新の割り当て結果を確認することができます。
 (Bug#27910708、Bug#90571)

・以前は、log_error_servicesシステム変数にリストされているログコンポーネントはセミコロンで
 区切られる必要がありました。現在コンポーネントはカンマで区切ることができます。
 既定の設定では、セミコロンとカンマ区切りの両方を使用できません。
 (Bug#27788925、Bug#90268)

■ MySQL Enterprise

・MySQL EnterpriseのFirewallのfirewall_whitelistテーブルには、現在、IDという名前の
 プライマリーキーカラムがあります。(Bug #27164826)

■ オプティマイザ

・filesortアルゴリズム(インデックスを使用できない場合にORDER BY句を満たすために
 オプティマイザによって使用される)は、メモリ効率が向上しました。主な変更は、
 sort_buffer_sizeバイトの固定された数を事前に割り当てるのではなく、オプティマイザが
 sort_buffer_sizeシステム変数で指定されたサイズまで必要に応じて徐々に増やしながら
 メモリバッファを割り当てるようになったことです。これにより、ユーザーは、sort_buffer_sizeを
 より大きな値に設定して、小さなソートに対する過度のメモリ使用を心配することなく、
 大きなソートを高速化できます。(この利点は、マルチスレッドのmallocが弱いWindowsでの複数の
 並行ソートでは生じません)。
 さらに、filesortは、最悪のシナリオに関しては悲観的ではありません。以前は、マージ操作
 またはソートキーの生成が失敗する可能性がある場合、filesortは起動せずにエラーを生成
 しました。現在は、最悪の場合は実際には起こりそうにないので、filesortは予想される失敗では
 なく実際の失敗に対してのみエラーを生成します。

・以前は、拡張EXPLAIN出力はSELECTステートメントでのみ生成されました。INSERT、REPLACE、
 UPDATE、および、DELETEステートメントの拡張出力も同様に生成されるようになりました。
 (拡張出力を表示するためには、EXPLAINの後にSHOW WARNINGSを使用します。)

■ パッケージング

・Linuxの場合、一般的なバイナリディストリビューション圧縮アルゴリズムはGzipからXZに変更
 されました。そして、ファイルの拡張子は、.tar.gzから.tar.xzに変更されました。
 (Bug #28450941, Bug #91889)

・DockerはデフォルトでNUMA関連の操作を無効にします。そのため、Dockerイメージに含まれる
 mysqldはNUMAサポートを無効にし、エラーログにはNUMA警告が表示されなくなりました。
 (Bug#28081363)

・RPM .specファイルはyaSSLの削除を反映するために更新されました。OpenSSLはすべてのビルドの
 デフォルトSSLライブラリです。(Bug#28025427)

・一般的なLinuxの.tar.gzディストリビューションでは、mysqlxtestクライアントが
 サーバーパッケージからテストパッケージに移動されました。(Bug#27744137)

・Oracle Linux 7にMySQL ServerのARM 64ビット(aarch64)バイナリをインストールするための
 RPMパッケージは、MySQL Yum Repositoryにあり、直接ダウンロード可能です。
 このARMリリースの既知の制限事項:このパッケージをインストールするためには、Oracle Linux7
 ソフトウェアコレクションリポジトリ(ol7_software_collections)を有効にする必要があります。
 また、libstdc ++ 7のパスも調整する必要があります。

■ プラグイン

・以前は、RewriterクエリリライトプラグインはSELECTステートメントに対してのみ書き換えを
 許可していました。現在は、書き換え可能なステートメントにINSERT、REPLACE、UPDATE、
 および、DELETEも含まれます。

■ セキュリティ

・リンクされたMySQL Server用のOpenSSLライブラリは、バージョン1.0.2oにアップグレード
 されました。新しいOpenSSLバージョンで修正された問題は、以下で説明されています。
 http://www.openssl.org/news/vulnerabilities.html

■ 空間データサポート

・互換性のない変更:新しい空間関数ST_Longitude()およびST_Latitude()は、それぞれ、
 Point引数の経度または緯度を返します。2番目の引数ありで呼び出された場合、これらの関数は
 引数を使用して、それぞれ、Point引数の経度または緯度を設定します。
 さらに、ST_X()およびST_Y()関数は、その空間参照システム定義(SRS)に従ってPoint引数を
 解釈するようになりました。
  * ST_X()はSRS定義で最初に表示される軸の座標値を返し、ST_Y()はSRS定義で
   2番目に表示される軸の座標値を返します。
  * 地理的SRSを持つPoint引数の経度または緯度を設定するためにST_X()および
   ST_Y()を使用する場合は、経度または緯度の値がSRSの適切な範囲になければ
   ならないか、エラーが発生します。
  注意:空間データにST_X()およびST_Y()によって異なる解釈が行われるジオメトリ値が
       含まれている場合、これらの関数を使用する既存のクエリは、以前のMySQLバージョンと
       比較して異なる結果を返します。
 (Bug #27125600, Bug #88503)

・空間計算のための空間参照システムデータを含むEPSGデータセットは、バージョン9.2から
 9.3にアップグレードされました。(Bug #27977721)

・以前は、パーサーはインデックス仕様のUSING RTREEを認識しましたが、これはいずれの
 ストレージエンジンでも指定できませんでした。現在、USING RTREEは空間インデックス仕様で
 許可されています。(Bug #27836608)

・ジオメトリカラムのインデックスは、現在、空間インデックスでなければなりません。そのため、
 SPATIALキーワードはオプションですが、空間カラムにインデックスを作成するために暗黙的に
 使用されます。ジオメトリカラムの空間インデックスは、プライマリキーまたは一意インデックスに
 許可されていません。また、ASCとDESCは、空間インデックスに許可されていません。
 (Bug #21087676)

■ SQL構文

・重要な変更:MySQLでは、WITH ROLLUP修飾子を持つクエリでDISTINCTを使用できるように
 なりました。(Bug #87450, Bug #26640100)

・重要な変更:MySQLでは、SELECTステートメントのグループ化関数と共にORDER BYを使用できる
 ようになりました。(Bug #86312, Bug #27063525)

・重要な変更:MySQLでは、WITH ROLLUP修飾子を持つクエリでORDER BYを使用できるように
 なりました。(Bug #86311, Bug #26073513)

・GROUP BY句の明示的なASCまたはDESC修飾子は現在廃止され、将来のMySQLバージョンでは削除される
 予定です。

■ Xプラグイン

・MySQL 8.0.11サーバーからXプラグインクライアントに返された認証エラーは、致命的とマークされ、
 クライアントにさまざまな方法を使用した認証試行の自動連続試行をやめさせるようになりました。
 Xプラグインは、一連の認証試行が進行している間、致命的な認証エラー、および、その後の書き込み
 タイムアウトエラーのような予期されるエラーを無視するようになりました。試行した認証方法が
 どれも成功しなかった場合、Xプラグインはサーバーから受信した最も関連性の高いエラーメッセージ
 を選択して返します。必ずしも最後に受信したメッセージではありません。(Bug #28135006)

・Xプラグインの自動認証シーケンスの間、事前に設定された順序で異なる認証方法を使用して接続が
 試行されます。Xプラグインは、シーケンスの開始前に接続がSSLを使用しているかどうかチェックし、
 接続が暗号化されていない場合はPLAIN認証方式を使用した接続を試みません。追加検証のために、
 チェックとエラーが追加され、接続が暗号化されていないときに試行された場合、PLAIN認証方式が
 許可されないようになりました。(Bug #27691189)

・認証に失敗した場合、Xプラグインは常にエラー状況のカスタムXプロトコルエラーメッセージと
 ともにエラーコードER_ACCESS_DENIEDを返します。認証失敗に関してMySQLサーバーから
 受け取ったエラーコードは、代わりにクライアントに標準のMySQLエラーメッセージとともに
 渡されます。(Bug #27675699)

・Xプラグインの自動認証シーケンスの間、事前に設定された順序で異なる認証方法を使用して接続が
 試行され、失敗した接続試行ごとに返されるエラーに重大度FATALがマークされました。現在、
 エラーは、他の認証方法が試行されている間はERRORとマークされ、接続切断をもたらす最後の
 エラーのみがFATALとマークされます。(Bug #27636947)

・Xプラグインのコードは、異なるプリプロセッサ定義で2回コンパイルされていました。
 (Bug #27267054)

・Xプラグインによる認証の問題の処理には、いくつかの改良が加えられました。 
  * 事前に設定された順序で異なる認証方法を使用して接続が試行されるXプラグインの自動認証
   シーケンスは、エラー返答が接続が切断されたこと、または、読み取りまたは書き込みが
   タイムアウトしたことを示す場合に、停止されるようになりました。 
  * また、致命的なエラーが発生した場合に自動認証シーケンスは停止されるようになりました。 
  * 中止された認証シーケンスに関して、最後に発生したエラーだけでなく、最後の重大なエラーが
   報告されるようになりました。 
  * セキュアでない接続でcaching_sha2_password認証プラグインによる認証を試みると、
   より具体的なエラーコードとメッセージが報告されるようになりました。
 (Bug #27257774)

・状況によっては、XプラグインがロードされたMySQLサーバーは、失敗した起動によってまたは
 RESTARTコマンドによって開始されたシャットダウンプロセス中に、予期せず停止することが
 ありました。この問題は修正されました。(Bug #25474793, Bug #27259783)

■ 追加・変更された機能

・重要な変更;レプリケーション:group_replication_exit_state_actionオプションを使用して、
 サーバーインスタンスが無意識にグループを離れた時、例えばネットワーク接続が不安定なために
 グループから放出された場合のグループレプリケーションの動作を設定します。
 group_replication_exit_state_actionがABORT_SERVER(デフォルト値)に設定されると、
 インスタンスは自動的にシャットダウンし、group_replication_exit_state_actionが
 READ_ONLYに設定されると、インスタンスはスーパーリードオンリーモードに切り替わり、
 グループレプリケーションのERROR状態になります。

・InnoDB:InnoDBは、次のALTER TABLE操作に対してALGORITHM = INSTANTをサポートするように
 なりました。
  * カラムの追加。この機能は“Instant ADD COLUMN”と呼ばれます。
  * 仮想カラムの追加または削除。
  * カラムのデフォルト値の追加または削除。
  * ENUMまたはSETカラムの定義の変更。
  * インデックスのタイプの変更。
  * テーブルの名前の変更。
 ALGORITHM = INSTANTをサポートする操作は、データディクショナリのメタデータのみを
 変更します。排他的なメタデータロックは操作の準備および実行フェーズではテーブルで行われず、
 その操作は瞬時に行われ、テーブルデータに影響はありません。明示的に指定されていない場合、
 ALGORITHM = INSTANTはそれをサポートする操作によってデフォルトで使用されます。
 ALGORITHM = INSTANTが指定されていてもサポートされていない場合、その操作はエラーで
 直ちに失敗します。(Bug #28100103, Bug #91074)

・InnoDB:ラージオブジェクト(LOB)データに対する小さな更新では、UNDOロギングがサポートされ、
 100バイト以下のLOB更新のパフォーマンスが向上しました。以前、LOB更新は最低でも1つのLOBページの
 サイズでした。これは、数バイトのみ変更する更新には最適ではありません。この改善は、LOBデータの
 部分的なフェッチと更新のためにMySQL8.0.4で追加されたサポートに基づいています。

・レプリケーション:シェルパイプを使用して、圧縮されたバイナリログファイルのアーカイブを
 ストリーム入力としてmysqlbinlogに提供できるようになりました。以前は、mysqlbinlogに渡す前に
 ファイルを別々に解凍しなければなりませんでした。
 この例では、binlog-files_1.gzには処理用の複数のバイナリログファイルが含まれています。
 パイプラインはbinlog-files_1.gzの内容を抽出し、バイナリログファイルを標準入力として
 mysqlbinlogにパイプし、実行のためにmysqlbinlogの出力をmysqlクライアントにパイプします。
  gzip -cd binlog-files_1.gz | ./mysqlbinlog - | ./mysql -uroot -p
 (Bug #27445278, Bug #89423)参照:Bug #27836543

・レプリケーション: XComのメモリ使用量に関する情報がパフォーマンススキーマテーブルに
 追加されました。setup_instrumentsテーブルにはXComキャッシュに対応するエントリがあり、
 memory_summary_global_by_event_nameテーブルにはXComキャッシュのメモリ使用状況統計が
 含まれています。

・Microsoft Windows: Windowsでは、 RESTARTを実装するために使用されるフォークは、
 --gdbオプションを使用して抑制できました。しかし、これは副作用であり、デバッグ環境を
 設定するために行われた他のオプションの動作に加えて実行されました。非デバッグ設定では、
 新しい--no-monitorオプションが、モニタプロセスのフォークを抑制するという唯一の目的の
 ために使用できます。--gdbまたは--no-monitorのいずれかで開始されたサーバーの場合、
 RESTARTを実行すると、サーバーは再起動せずに単に終了します。(Bug#27801043)

・DROP TABLEとDROP DATABASEによる外部キー関係のチェックが改善されました。親テーブルと
 子テーブルは、同じDROP TABLEステートメントによって削除される限りは、任意の順序で削除
 できます。また、子テーブルを削除せずに親テーブルを削除しようとする試行に関して、
 エラー報告が改善されました。(Bug#27821060)

・ロールのサポートが追加されると、ADMINキーワードは予約語のキーワードになりました。
 ADMINは再び予約語ではないキーワードになりました。(Bug#27814204)

・クライアントがサーバーをシャットダウンすると、サーバーはエラーログにこの操作を実行したのが
 どのユーザーかを示すメッセージを書き込みます。(Bug#26246628、Bug#86635)

・以前は、--ssl-mode = VERIFY_IDENTITYオプションに関して、クライアントは、接続に使用した
 ホスト名が証明書のCommon Name値と一致していたが、Subject Alternative Name値と一致して
 いないかどうかを調べました。現在、クライアントがOpenSSL 1.0.2以降を使用している場合、
 クライアントはホスト名がサーバー証明書のSubject Alternative Name値またはCommon Name値と
 一致するかどうかを確認します。(Bug#16211011、Bug#68052、Bug#27511233、Bug#89578)

■ バグ修正

・重要な変更;JSON:JSON_TABLE()関数は、自動的にbase-64の値を解読し、それらをカラム仕様に
 よって与えられるキャラクターセットを使用して印刷するようになりました。
 (Bug #90157, Bug #27729112)参照:Bug #89847, Bug #27613276。

・InnoDB:8.0.12でINFORMATION_SCHEMA.INNODB_TABLESテーブルと
 INFORMATION_SCHEMA.INNODB_COLUMNSテーブルに追加された新しいカラムが、
 8.0.12にアップグレードすると表示されなかった。(Bug #28065244)

・InnoDB:ラージオブジェクト(LOB)インデックスエントリに格納されたLOBバージョン番号は、
 1で初期化されずに0で初期化されないままだった。(Bug #28046298)

・InnoDB:生成されたカラムを持つテーブルにカラムを追加すると、無効なアサーションが発生した。
 (Bug #28040201)

・InnoDB:チェックポイント操作中に解放されたメモリにアクセスしようとすると、サーバーが
 終了した。(Bug #28039477)

・InnoDB:通常のMySQLビルドで無意識に公開された実験的なシステム変数でサーバーを起動すると、
 アサーションの失敗が発生した。(Bug #27899424、Bug #90526、Bug #27898396、Bug #90523、
 Bug #27898344、Bug #90522)

・InnoDB:無効なシステム変数設定がアサーションを発生させた。 (Bug #27898284)

・InnoDB:破棄されたfile-per-tableテーブルスペースから共有テーするスペースにテーブルを
 移動しようとすると、アサーションが発生した。その操作は、代わりにエラーを生成するように
 なりました。(Bug #27861972)

・InnoDB:ラージオブジェクト(LOB)のページ割り当てに関連する潜在的な不具合が十分に
 処理されなかった。(Bug #27852003)

・InnoDB:ngramの全文検索パーサーでは、カンマとピリオド文字を単語としてトークン化でき、
 これにより、boolean型と自然言語モードの検索結果の間に不一致が生じました。
 カンマとピリオド文字は、もうトークン化されなくなりました。(Bug #27847697)

・InnoDB:チェックサムの不一致や他の問題が、テーブルスペースのヘッダーページの同時修正に
 よって引き起こされ、部分的に初期化されたページにロックを設定しようとした。(Bug #27823064)

・InnoDB:fsync()操作によって返されたI/Oエラーは、困難なエラーとして扱われるように
 なりました。(Bug #27805553, Bug #90296)

・InnoDB:単一スレッドでは、2つのミニトランザクションがラージオブジェクト値(LOB)の最初の
 ページをラッチし、さらに他のスレッドがページを割り当てようとし、デッドロックを引き起こした。
 (Bug #27777959)

・InnoDB:MySQL 8.0.12へのアップグレード後、FTS_DOC_IDカラムを含むテーブルカラムが
 INFORMATION_SCHEMA.INNODB_COLUMNSテーブルからなくなった。(Bug #27774145)

・InnoDB:オプティマイザが仮想カラムに定義されたプレフィックスインデックスを選択すると、
 無効なアサーションが発生しました。(Bug #27755892)

・InnoDB:不適切なメタデータのロック保護の下で、トランケートされているテーブルの
 メモリ内テーブルオブジェクトを開くことができました。TRUNCATE PARTITION操作中に
 AUTOINCカウンタ値を保持する新しい方法が実装されました。(Bug #27754995)

・InnoDB:ダーティページを含むがREDOログレコードを含まないミニトランザクションコミット中に
 アサーションが発生しました。ミニトランザクションは、最近クローズされたバッファ内の
 スペースを待たずに、その後無効な現在のLSN値でページをマークしました。無効なLSN値が
 フラッシュリストに追加されてから、遅延されたミニトランザクションは、より古いLSN値を持つ
 ダーティページを追加し、フラッシュリストの順序を破棄しました。
 innodb_log_checkpoint_fuzzy_nowデバッグオプションが追加されました。このオプションを
 有効にすると、InnoDBはファジーチェックポイントを書き出します。
 また、LSN値を追跡するために新しい内部REDOログモジュールカウンタが追加されました。
 log_lsn_buf_dirty_pages_addedカウンタは、ダーティページが追加されたLSN値を追跡し、
 log_lsn_buf_pool_oldest_lwmカウンタは、バッファプール内の最も古い変更されたブロックの
 低レベルのウォーターマークのLSNを追跡します。(Bug #27664539)

・InnoDB:Variance-Aware Transaction Schedulingアルゴリズム(VATS)は、別の
 トランザクションを待っているトランザクションの数を追跡します。デッドロックの場合、
 待機中のトランザクションの数の近似値を求める方法は、膨らんだ値を生成しました。
 (Bug #27646322)

・InnoDB:犠牲になるトランザクションロックを保持しながらInnoDBチケットを取得しようとすると、
 ロック順違反が発生しました。(Bug#27626681)

・InnoDB:長さがゼロのBLOB値を読み取ろうとすると、リカバリー中にアサーションの失敗が
 発生しました。BLOB値はまだ完全には追加されていませんでした。(Bug#27617389)

・InnoDB:既にメモリ内にあったテーブルのテーブルロックを取得すると、競合状態が発生しました。
 (Bug#27586419、Bug#27577704)

・InnoDB:サーバーを再起動した後、暗号化されたテーブルを作成しようとすると、
 ストレージエンジンから一般的なエラーが返されました。(Bug#27577339)

・InnoDB:Variance-Aware Transaction Scheduling(VATS)を空間インデックスと共に
 使用すると、トランザクションが永久に待機させられました。(Bug#27572937)

・InnoDB:マルチバイト文字を含むテーブルスペース名の誤った構文解析は、DROP DATABASE操作の
 失敗を引き起こしました。(Bug#27566937)

・InnoDB:データディクショナリがパーティション分割されたテーブルを開こうとした時、
 一時テーブルの識別のために行われたチェックはエラーを引き起こしました。(Bug#27565997)

・InnoDB:テーブルスペースのインポート操作中に報告されたスキーマの不一致エラーは、
 不一致テーブルフラグを読み取り可能な形式で印刷することに失敗しました。(Bug#27542720)

・InnoDB:DDL操作は、FULLTEXTインデックスの最適化操作が完了するまで待機できませんでした。
 (Bug#27326796)

・InnoDB:読み取り専用トランザクションの不要なチェックがtrx_set_rw_mode()関数から
 削除されました。(Bug#27211287、Bug#88739)

・InnoDB:外部キー制約を追加するDDL操作で、親テーブルに属する古いメモリオブジェクトに
 アクセスした時に、アサーションが発生しました。(Bug#27208858)

・InnoDB:memcached get操作の開始後、失敗のアサーションが発生しました。(Bug#26876594)

・InnoDB:外部キーチェック中に遭遇した壊れたインデックスIDが、アサーションを発生させました。
 (Bug#26654685)

・InnoDB:一般的なテーブルスペースに存在するテーブルに対するDROP TABLE操作は、その操作の
 DDL後の段階でインデックスのステータスをチェックする時に、アサーションを発生させました。
 (Bug#26523254)

・InnoDB:DDL操作中の内部デッドロックが発生した結果、セマフォ待機時間が長くなり、
 その後サーバーが終了しました。(Bug#26225783)

・InnoDB:無効なロックのアップグレードが原因で、DDL操作が深刻なエラーに遭遇しました。
 (Bug#26225783)

・InnoDB:Windowsの64ビットシステムでは、無効なバッファプール設定値により、起動時にサーバーが
 終了しました。(Bug#26100239、Bug#86370)

・InnoDB:mutex型定義に関連するデバッグコードブロックが削除されました。コードブロックの
 非デバッグバージョンとの違いはなくなりました。(Bug#24952279、Bug#83529)

・InnoDB:回復中のサーバー障害は、ログ解析バッファのオーバーフローのために発生しました。
 スペースはログ解析バッファに動的に割り当てられ、必要に応じてinnodb_log_buffer_sizeで
 指定されたサイズに達するまでインクリメントされます。(Bug#24734190)

・InnoDB:テーブルロックキューに対する犠牲の大きいループを避けることにより、同じテーブルの
 同時更新に対して、テーブルロックが最適化されました。(Bug#18955152、Bug#72948)

・パッケージング:Windowsでは、mysqld.exe --helpコマンドを実行すると、不要な予期しない
 詳細情報がシステム出力に表示されました。この修正が取り除きます。(Bug#27894020)

・パーティショニング:ALTER TABLE ... TRUNCATE PARTITIONステートメントのロールバックが
 正しく処理されませんでした。(Bug#27603025)

・パーティショニング:パーティション分割されたテーブルの場合、テーブルの再構築または
 サーバーの再起動後に、パーティションの更新時間が正しくない可能性があった。(Bug#27073100)

・レプリケーション:gtid_purged変数には、サーバーによってログからパージされた
 バイナリログイベントが含まれています。Group Replicationプラグインを実行する時、
 この変数は決して変更するべきではありませんでしたが可能でした。現在、Group Replicationが
 実行されている時は、変数を変更できません。(Bug#27724561)

・レプリケーション:バイナリロギングを無効にするためにサーバー起動時に--skip-log-binオプションが
 指定された場合に、expire_logs_daysとbinlog_expire_logs_secondsの両方が0以外の値に
 設定された場合、警告メッセージは出されませんでした。--skip-log-binオプションは、
 どのバイナリログファイルも期限切れになっていないことを意味していたので、これらの
 バイナリログ有効期限設定(expire_logs_days値が無視される)の結果は実用的な効果は
 ありませんでした。ただし、現在警告メッセージが発行されるため、サーバーのバイナリログが
 有効になる前にその状況を修正できます。(Bug#27699608)

・レプリケーション:PIT_TRANSACTIONS_NEGATIVE_CERTIFIED、PIT_TRANSACTIONS_ROWS_VALIDATING
 およびPIT_TRANSACTIONS_LOCAL_ROLLBACKのメンバーメッセージが正しくデコードされませんでした。
 (Bug#27692831)

・レプリケーション:例えばグループに参加しているメンバのgroup_replication_group_nameが
 シードのgroup_replication_group_nameと一致しない場合など、メンバがグループに
 参加できなかった時に生成されるログメッセージが改善されました。これは、現在ログメッセージに
 記述されます。(Bug#27628695)

・レプリケーション:SYSTEM_VARIABLES_ADMIN権限とPERSIST_RO_VARIABLES_ADMIN権限が、
 mysql.sessionの予約済みユーザーアカウントに追加されました。(Bug#27621869)

・レプリケーション:ER_GRP_RPL_SQL_SERVICE_FAILED_TO_RUN_SQL_QUERYエラーが正しく
 記録されませんでした。(Bug#27590534)

・レプリケーション:MySQLサーバーがクラッシュリカバリモードで起動され、
 innodb_force_recovery設定が4以上で、InnoDBが読み取り専用モードに設定されている場合、
 半同期レプリケーションマスタープラグインは初期化しないでください。MySQL 8.0のプラグインの
 初期化順序が変更されたため、サーバーは、プラグインが登録された場合、プラグインは初期化も
 されていたと見なし、誤ってそれを初期化しないでおこうとしました。
 クラッシュリカバリモードでのこのプラグインの処理が修正され、プラグインが初期化されて
 いない時に非初期化関数は実行されません。(Bug#27481872)

・レプリケーション:レプリケーションフィルタまたはバイナリログフィルタを使用すると、それらが
 XAトランザクションで更新されたテーブルに適用された時に問題が発生する可能性があります。
 テーブルをフィルタリングすると、レプリケーションスレーブ上でXAトランザクションが空になる
 可能性があり、空のXAトランザクションはサポートされません。また、MySQL 8.0のデフォルトに
 なったレプリケーションスレーブの設定master_info_repository = TABLEおよび
 relay_log_info_repository = TABLEでは、データエンジントランザクションの内部状態は、
 フィルタリングされたXAトランザクションに続いて変更され、
 レプリケーショントランザクションコンテキストの状態と矛盾する可能性があります。これらの
 問題のため、レプリケーションフィルタまたはバイナリログフィルタをXAトランザクションと
 組み合わせて使用することはサポートされていません。この修正により、新しいエラー
 ER_XA_REPLICATION_FILTERSが追加され、このエラーは、結果としてトランザクションが
 空であるかどうかに関わらず、XAトランザクションがレプリケーションフィルタの影響を受けるたびに、
 ログに記録されます。トランザクションが空でない場合、レプリケーションスレーブは実行し続ける
 ことができますが、潜在的な問題を避けるために、XAトランザクションと共に
 レプリケーションフィルタを使用することを中止する手順を実行すべきです。
 トランザクションが空の場合、レプリケーションスレーブは停止します。その場合、
 レプリケーションスレーブは、レプリケーションプロセスの一貫性が損なわれる可能性のある未定義の
 状態の可能性があります。特に、スレーブのスレーブ上のgtid_executed設定は、マスター上の設定と
 矛盾している可能性があります。この状況を解決するためには、マスターを分離し、すべての
 レプリケーションを停止し、その後、レプリケーショントポロジ全体でGTIDの一貫性を確認します。
 エラーメッセージを生成したXAトランザクションを元に戻してから、レプリケーションを再開します。
 (Bug#27442477)

・レプリケーション:128KBを超えるバイナリログイベントを読み込みためにmysqlbinlogを
 使用すると、実際のサイズの代わりに128KBがサイズとして返されたため、読み込みに失敗しました。
 この問題は修正されました。(Bug#27417084、Bug#89326)

・レプリケーション:バイナリログトランザクションキャッシュサイズ(binlog_cache_size)より
 大きいトランザクションが処理中に一時ファイルにフラッシュされ、そのフラッシュが
 一時ディレクトリの空き不足のため失敗した場合、フラッシュエラーは正しく処理されませんでした。
 メッセージはエラーログに全く書き込まれず、バイナリログキャッシュはトランザクションが
 ロールバックされた後クリアされませんでした。現在、この状況では、サーバーは
 binlog_error_action設定に基づき適切な動作をし(サーバーをシャットダウンまたはログを停止)、
 エラーログにメッセージを書き込みます。トランザクションがロールバックされると、サーバーは
 フラッシュエラーをチェックし、何かが発生した場合はバイナリログキャッシュをクリアします。
 (Bug#27399620、Bug#89272)

・レプリケーション:GTIDがレプリケーションに使用される場合、スレーブ上でフィルター処理された
 複製トランザクションは永続化されます。バイナリロギングがスレーブで有効になっている場合、
 フィルター処理されたトランザクションはバイナリログにGtid_log_eventとして書き込まれ、
 その後BEGIN文とCOMMIT文だけを含む空のトランザクションが書き込まれます。バイナリロギングが
 無効の場合、フィルター処理されたトランザクションのGTIDがmysql.gtid_executedテーブルに
 書き込まれます。このプロセスは、実行されたGTIDのセットにギャップがないこと、および、
 スレーブがマスターに再接続した場合にフィルター処理されたトランザクションが再び回収されない
 ことを保証します。以前、このプロセスは、CREATE DATABASE、ALTER DATABASE、および、
 DROP DATABASEのステートメントのために実行されていませんでしたが、現在は他と同様に
 これらのステートメントのために実行されています。(Bug#27308751、Bug#88891)

・レプリケーション:マルチスレッドスレーブにおいて、スレーブでSTOP SLAVE文が実行され、
 その後にSTART SLAVE文が実行されると、エラーログは、後に続く初期化でスレーブSQLスレッドに
 ついて報告された位置と比較して、スレッドのバイナリログ内の別の位置を終了時に報告する可能性
 がありました。マルチスレッドスレーブの場合、終了時にSQLスレッドについて報告される位置は、
 レプリケーションストリームが一貫していてギャップがないところまでの低水準点です。
 その位置の前に出現したトランザクションはコミットされたことが保証されますが、その位置の
 後のトランザクションはコミットされた可能性もコミットされなかった可能性もあります。
 しかし、この低水準点は、ワーカースレッドを停止するプロセスが実際に実行される前に報告され、
 その後、低水準点はそのプロセス中のチェックポイントルーチンによって更新されました。
 ログメッセージのタイミングが変更され、最終的な低水準点が終了時のSQLスレッドに関する位置
 として報告されるようになりました。(Bug#27300658)

・レプリケーション:例えば大部分を失った後に、グループのブロックを解除するために
 group_replication_force_membersを使用すると、時々エラー1231で失敗することがありました。
 (Bug#26394418)

・レプリケーション:分散されたリカバリー処理中のような特定の状況では、認証情報の
 ガベッジコレクションは必要以上にデータが除去され、その結果競合は検出されませんでした。
 ガベッジコレクションの手順は、この場合を考慮に入れて、改善されました。
 (Bug#89938、Bug#27652526)

・レプリケーション:group_replication_applierチャネルのアプライヤスレッドがエラーに遭遇した
 場合、エラーメッセージのmaster_log_nameおよびend_log_posは正しくありませんでした。
 Group Replicationでは、トランザクションのイベントは、トランザクションが始められたメンバの
 バイナリログに書き込まれる前に複製されます。その結果、それらのイベントの最終的な
 master_log_nameとend_log_posは、group_replication_applierチャネルのアプライヤスレッドに
 よってレプリカに適用された時点では、不明です。混乱を避けるために、
 group_replication_applierチャネルによって発生したこのようなエラーメッセージには、
 バイナリログ名とバイナリログの位置は含まれません。(Bug#89146、Bug#27368735)

・Microsoft Windows:Windows上のデバッグビルドでは、空の定義文字列を持つ
 CREATE SPATIAL REFERENCE SYSTEMがアサーションを発生させる可能性がありました。
 (Bug#27672683)

・ALTER TABLEのCONVERT TO CHARACTER SET charset_name句は、charset_nameがDEFAULTの場合、
 構文エラーを生成しました。(Bug#27760787、Bug#90222)

・ibd2sdiは、ゼロ除算操作を実行することが原因で終了することがありました。
 (Bug#27692051、Bug#90071)

・systemdまたはmysqld_safeによって開始されたサーバーの再起動の失敗がエラーログに
 書き込まれませんでした。(Bug#27675050、Bug#90012)

・mysql_secure_installationは、現在、廃止予定のvalidate_passwordプラグインではなく、
 validate_passwordコンポーネントをロードするようになりました。(Bug#27619667)

・SET PERSIST_ONLY var_name = DEFAULTは、デフォルト値ではなく、現在のグローバル値を
 保持しました。(Bug#27489026)

・MySQLがLINK_RANDOMIZE CMakeオプションを有効に設定されている場合、
 --gc-sectionsコンパイラオプションは現在無効になっています。その組み合わせによって
 セグメント化の障害が引き起こされます。(Bug#27484106)

・16進数の値Hの場合、WHERE(-1)-Hを含むSELECTはアサーションを発生させます。
 (Bug#27452082)

・--hex-blobオプションを指定せずにmysqldumpまたはmysqlpumpを使用してバイナリデータを
 ダンプする場合、ダンプファイルをリロードすると、誤った警告が生成されることがありました
 (警告に関係なく値は正しく挿入されました)。このような値は、警告を止めるために、
 _binaryイントロデューサの前に書き込まれるようになりました。(Bug#22601255、Bug#80150)

MySQL 8.0.12リリースノート(MySQLウェブサイト): http://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-12.html

MySQL Editions

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

MySQL Editionsの詳細