2025.07.31

MySQL

MySQL 8.0.43 GAリリース(リリース日:2025年7月22日)

コンパイル関連

  • macOS: -DWITH_KERBEROSを使用してMacOSでサーバーをコンパイルできるようになりました。
  • バンドルされているlibcurlライブラリをバージョン 8.14.1にアップグレードしました。(バグ #38042758)
  • MySQL ServerがCMake 4をサポートするようになりました。これにより、3.10より前のバージョンのサポートが廃止される予定の将来のCMakeバージョンとの互換性を確保します。(バグ #38027636)
  • 同梱のICUライブラリがバージョン 77-1にアップグレードされました。(バグ #37870791)
  • 同梱のzstdライブラリがバージョン 1.5.7にアップグレードされました。(バグ #37869972)
  • GCC 15でのビルド時にclang::musttailを無効化しました。(バグ #37776018)
  • Clang 18で非推奨となり、Clang 19で削除された std::char_traits<unsigned char>の代替として使用するために、標準準拠のmy_char_traits<unsigned char>を実装しました。(バグ #37273525、バグ #37785339)
  • リンカーは、正しいライブラリ (ext::icu) が既に他の場所でリンクされているにもかかわらず、空のCmake 変数 ${ICU_LIBRARIES}を使用しようとしました。(バグ #36524167)
  • Fedora 38でコンパイルする際、egrepの代わりにgrep -Eが使用されるようになりました。(バグ #36507549)
  • macOSでのコンパイルではopenssl@1.1が明示的に検索されましたが、現在はopenssl@3を使用できるように、代わりに汎用のopensslシンボリックリンクが検索されるようになりました。(バグ #35468370)

InnoDB関連

  • テーブルのインポートに関する問題を修正しました。(バグ #37621360)

インストール関連

  • MySQLをインストールするためのDebianパッケージが、root以外のユーザーでも実行できるようになりました。これにより、rootなしでのインストールが必要なDebianまたはUbuntuシステムでの問題を回避できます。(バグ #37765153)

追加または変更された機能

  • 重要な変更: ほとんどのmysqlクライアントコマンドを有効または無効にする、mysqlクライアント --commandsオプションが追加されました。
    このオプションはデフォルトで有効になっています。無効にするためには、クライアントを--commands=OFFまたは--skip-commandsで起動してください。
    このオプションの影響を受ける全てのコマンドの完全なリストと追加情報については、mysql Client Optionsを参照してください。(WL #16949)
    参考: バグ #36416568、バグ #38066040も参照してください。
  • グループレプリケーション: アプライアスレッドがエラーによって停止されたのではなく、SQL KILLを使用して終了されたことを区別するために、エラー ER_GRP_RPL_APPLIER_THD_KILLEDを追加しました。 (バグ #37764717)
  • システムのcurlライブラリにリンクするのではなく、curlを含むバイナリパッケージは、curl 8.14.1を使用するようにアップグレードされました。(バグ #37389565)

バグ修正

  • 重要事項; グループレプリケーション: グループ通信システム(GCS)は、メンバー間のグループレプリケーション通信を処理し、グループメンバーシップと全グループメンバー間の通信を追跡します。メンバーシップの追跡には、メンバーシップの現在と過去の2回の反復が含まれます。メンバーが離脱すると、グループ内の残りのメンバーは離脱したメンバーの記録を保持しますが、そのメンバーが戻るまでそのメンバーとの通信を停止します。例:グループにメンバーM1、M2、M3が含まれています。M3がグループを離脱します。M1とM2はM3との通信を停止します。新しいメンバー(M4)が参加すると、このメンバーはグループのメンバーシップの過去の反復を学習し、以前の反復のサーバー(この場合はM3)を含むすべてのサーバーとの通信を試みます。
    以前のサーバーの一部が消えて戻ってこなかった場合、新しいメンバーは消えたサーバーに継続的に接続しようとしました。状況によっては、これらの継続的な接続試行によってネットワーク遅延が発生し、グループメンバーの通信に影響する可能性があります。
    この問題を回避するために、グループメンバーシップの反復に属するサーバーへの接続は5分後に停止されるようになりました。これは、グループ通信に継続的な影響を与えることなく、有効な接続を再確立するのに十分な時間です。(バグ #37704514)
  • NDB Cluster: NDB 8.0からNDB 8.4へのアップグレード後、クラスタ内の全てのデータノードが予期せず同時に再起動しました。これは、トランザクションコーディネータにスキャン状態がないために発生し、プロトコルタイムアウトが発生しました。その結果としてプロトコル状態の不整合が発生し、データノードが予期せずシャットダウンしました。この問題は、予期しないSCAN_NEXTREQシグナルの既存の処理を拡張し、スキャンが既にステートレスである場合もカバーすることによって修正されました。(バグ #37994985)
    参考: この問題は、バグ #37022901のリグレッションです。
  • NDB Cluster: 同時実行のALTER TABLEステートメントにより、クライアントが競合する行ロックを保持し、付随するget_commit_count()呼び出しを停止している場合、ロック待機タイムアウトで失敗するまでに最大で100 * TransactionDeadlockDetectionTimeoutの遅延が発生する可能性がありました。ロックの問題をより早く特定できるように、再試行メカニズムが調整されました。(バグ #37955025)
  • InnoDB: プライマリキーを再構築すると、サーバーは重複が存在している時に問題に遭遇することがあり、サーバーが予期せず停止する可能性がありました。
    (バグ#37822992)
  • InnoDB: インデックスの一部である列のドロップに関連する問題を修正しました。(バグ#37726881)
  • InnoDB: DELETE操作に関連する問題を修正しました。(バグ#37478594)
  • InnoDB: VARCHAR列にセカンダリインデックスを作成すると、設定されているよりも多くのメモリが割り当てられる可能性がありました。割り当てられる量は innodb_ddl_buffer_sizeの値に直接関連しており、ERROR 1136 (21S01): Column count doesn't match value count at row 1のようなエラーが発生しました。(バグ #37233273)
  • InnoDB: 空間データ型の列のインデックス付けに関連する問題を修正しました。(バグ#36682518)
  • InnoDB: MySQL Enterprise Backupの増分バックアップが失敗した後にredoログコンシューマーが遅れると、長いセマフォ待機クラッシュが発生し、redoログライタースレッドが先に進めなくなる可能性がありました。次のようなエラーメッセージが返されました:
    [Warning] [MY-013934] [InnoDB] Redo log writer is waiting for MEB redo
    log consumer which is currently reading LSN=23335640211468 preventing
    reclamation of subsequent portion of the redo log. Consider
    increasing innodb_redo_log_capacity.

    (バグ#36330455)

  • InnoDB: テーブルの範囲クエリに関する問題を修正しました。(バグ#31360522)
    参考: バグ#38063122。
  • パーティショニング: パーティションIDがINT_MAXを超えると、重複エントリーエラーによりパーティションの切り捨てが拒否され、新しいパーティションテーブルの作成が妨げられました。この問題を軽減するために、Table_partition_values_pkクラスのコンストラクターは、オブジェクトIDにintではなくulonglongを使用するようになりました。(バグ#35912852)
  • レプリケーション: チェーンでレプリケーションを使用する場合、CREATE TABLE ... AS SELECTによってバイナリログに不整合なエントリが生成されることがあり、下流サーバーでレプリケーションが中断される可能性がありました。この問題に関連するエラーメッセージには、ログにSTART TRANSACTIONステートメントが欠落していることが原因で発生するエラーが含まれていました。(バグ#37986380)
  • レプリケーション: 準同期レプリケーション中に、バイナリログサフィックスの長さが6桁 (.999999)を超え、次のログ ファイルが (例えば) mysql-bin.1000000になった場合、レプリケーションプロトコルが予期せず準同期から非同期に変更されました。
    (バグ #115861、バグ #113813、バグ #37024069、バグ #36246779)
  • グループレプリケーション: 不安定なネットワーク環境において、group_replication_paxos_single_leader=ONに設定されたグループレプリケーションInnoDB Clusterで、長時間実行トランザクションが複数発生し、waiting for handler commit状態のままスタックしました。その結果、group_replication_set_as_primary() は強制的に待機状態になり、他の受信クエリがブロックされ、クラスターが書き込み不能になりました。
    waiting for handler commitでスタックした長時間実行トランザクションを含む問題は、次のように発生しました。断続的なネットワークパーティション中に、メンバーシップ情報が古かったり不正確だったりしたために、セカンダリノードがリーダーの役割を誤って引き受けました。その結果、synode番号の割り当てで競合が発生し、プライマリノードから発生したトランザクションが不完全なままになりました。
    この問題を修正するために、セカンダリノードが常に最新かつ正確な状態を反映してから、Paxosにviewメッセージをプッシュします。これにより、メンバーシップ情報が古くなったり矛盾したりしても、リーダーシップやsynode番号の割り当てで競合が発生しなくなります。(バグ#37764970)
    参考: バグ#117424、バグ#37237959、バグ#37645674。
  • NDB Cluster API: イベント定義からVARCHAR列を除くと、Invalid schema object versionエラーが発生しました。(バグ#37766391)
    参考: バグ#31848270。
  • ストアドルーチンを呼び出す一部のトリガーが、必ずしも正しく実行されませんでした。(バグ #37915445)
  • サブクエリを含むCTEを使用するビューは、必ずしも正しく処理されませんでした。(バグ #37832605)
  • WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS() が正しく実行されないことがありました。(バグ #37829550)
    参考:バグ #38063175も参照してください。
  • Fedora 24では、MariaDBが既にシステムにインストールされている場合、パッケージの競合によりOracle MySQL RPMをインストールできませんでした。この修正により、競合が適切に処理されなくなり、MySQL Serverを正常にインストールできるようになります。(バグ #37798784)
  • シャットダウン中にクライアント接続が正しく終了しないことがある問題に対する以前の修正が改善されました。(バグ #37755594)
    参照:この問題は、バグ #35854919のリグレッションです。
  • Fedora 42 RPMインストールパッケージは、Fedora 42以降で統合された/usr/binディレクトリと/usr/sbinディレクトリに対応するように調整されました。(バグ #37737658)
  • InnoDBを使用した全文検索のパフォーマンス、特にフレーズ検索のパフォーマンスが向上しました。doc_idマッチングの効率も向上しました。(バグ #37682648)
  • keyring_okvプラグイン (Using the keyring_okv KMIP Pluginを参照) がインストールされているものの正しく設定されていない場合、performance_schema.keyring_keysテーブルに対するクエリで問題が発生しました。(バグ #37655299)
  • バグ #30875669の修正は、バグがクローズされた時点ではmysqlクライアントのコードに実際には含まれていませんでした。現在、変更は実装されています。(バグ #37572191)
    参照:バグ #30875669も参照してください。
  • 複数のSQLステートメントを含む1つ以上の単一行を持つ初期化ファイルで、初期化中にエラーが発生することがありました。(バグ #37559598)
  • CREATE TABLEステートメントとDROP TABLEステートメントの一部のシーケンスが正しく処理されませんでした。(バグ #37534068)
    参考: この問題は、バグ #35721121のリグレッションです。
  • UPDATE ... SET ... が正常にロールバックされない場合がありました。(バグ #37489167)
  • CREATE TABLEステートメントの複数のDEFAULT列式が正しく処理されない場合がありました。(バグ #37436220)
  • 集計を実行する相関サブクエリを含むクエリが、実行中に重複キーエラーで(誤って)拒否されることがありました。
    この問題は、JOIN::cleanup() 実行時に元の参照スライス(set_ref_item_slice(REF_SLICE_SAVED_BASE)の復元が不要であると想定して削除された以前の修正によって発生しました。その結果、以前の実行からの一時テーブルフィールド参照がクリアされず、一時テーブルに重複キーを挿入しようとするとCan't write; duplicate key in tableというエラーが発生しました。
    クリーンアップ中に元の参照スライスを復元し、古い参照が確実に破棄されるようにすることで、この問題を修正しました。 (バグ #37415167)
    参考: バグ #32141711も参照してください。この問題は、バグ #35856247のリグレッションです。
  • コメント内の引用符で囲まれていないセミコロン(;)は、許可されていないにもかかわらず、必ずしもエラーとしてフラグ付けされないことがありました。(バグ #37117875)
    参考: バグ #38063286も参照してください。
  • サブクエリを含むネストされた集計関数を使用するクエリは、必ずしも適切に処理されるとは限りませんでした。(バグ #36421727)
  • サブクエリを派生テーブルに変換しようとすると、特定のケースが考慮されないことがありました。(バグ #36421710)
    参考: この問題は、バグ #36921175のリグレッションです。
  • optimizer_switchをsubquery_to_derived=onに設定すると、ROLLUPを含む一部のクエリが適切に処理されませんでした。(バグ #36314993)
  • max_join_sizeを設定すると、一部のネストされたクエリが適切に処理されなくなりました。(バグ #35625769)
  • ストアドプログラム内で作成されたイベントが、必ずしも正しく処理されない場合がありました。(バグ #35395333、バグ #36402968、バグ #37918920)
    参考:この問題は、バグ #17809、バグ #11745618のリグレッションです。
  • スカラーサブクエリを、サブクエリがSELECTリストにありかつ含まれているクエリが暗黙的にグループ化されている派生テーブルとの結合に変換することは許可されるはずですが、subquery_to_derivedオプティマイザースイッチが有効になっていると拒否されました。(バグ #35150438)
  • include/assert_grep.inc のエラーにより、そのエラーを含むファイルから誤った結果が返される可能性がありました。
    (バグ #116239、バグ #37105430、バグ #37675340)
  • サーバーがautocommit=OFFで実行された場合、クエリ書き換えプラグイン (Rewriter Query Rewrite Pluginを参照) が正常に動作しませんでした。 (バグ #115437、バグ #36784795)
  • sql/range_optimizer/rowid_ordered_retrieval_plan.cc内のコメントを改善しました。
    (バグ #107972、バグ #34422274)

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


MySQL Editions

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