2024.05.10

MySQL

MySQL NDB Cluster 8.0.37 GA(リリース日:2024年4月30日)

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

  • 重要な変更: データノードファイルまたはディレクトリの削除がファイルが存在しない(ENOENT) エラーで失敗した場合、これは削除が成功したものとして扱われます。
  • パッケージ: Fedora 40およびUbuntu 24.04のサポートを追加しました。
  • ndbinfo情報データベース: transporter_detailsテーブルをndbinfo情報データベースに追加しました。このテーブルはトランスポーターテーブルに似ていますが、全体としてではなく個々のトランスポーターに関する情報を提供します。
    (バグ #113163、バグ #36031560)
  • NDBクライアントプログラム: 出力の冗長レベルを制御するために、--verboseオプションをndb_waiterテストプログラムに追加しました。 (バグ #34547034)
  • 開始時間と完了時間、パージを開始したインジェクターであるかどうかなど、バイナリログのパージに関連するロギングが改善されました。 (バグ #36176983)

バグ修正

  • NDBクライアントプログラム: ndb_redo_log_readerは、暗号化されたファイルからデータを読み取ることができませんでした。 (バグ #36313482)
  • NDBクライアントプログラム: 次のコマンドラインオプションは、ndb_redo_log_readerユーティリティプログラムでは正しく機能しませんでした:
    • --mbyte
    • --page
    • --pageindex

    (バグ #36313427)

  • NDBクライアントプログラム: ndb_redo_log_readerは、Record type = 0 not implementedの場合、未使用のページ、全てゼロバイト、または、部分的にしか使用されていないページ(通常はページ ヘッダーのみで構成されるページ)に到達すると、終了しました。 (バグ #36313259)
  • NDBクライアントプログラム: --bind-addressオプションを指定してndb_mgmdを呼び出すと、場合によってはプログラムが予期せず終了することがありました。 (バグ #36263410)
  • NDBクライアントプログラム: NDBプログラムの出力から不要なテキスト NDBT_ProgramExit ...を削除するためにNDB 8.0.18および8.0.20で開始された作業は、このリリースで完了しました。このメッセージは、そのようなプログラムのリリースバイナリには表示されなくなります。 (バグ #36169823)
    参照: バグ #27096741も参照してください。
  • NDBクライアントプログラム: ファイル CommandInterpreter.cppのclang形式に80文字という厳密な制限を使用すると、NDB管理クライアントの対話型ヘルプ テキストの書式設定が崩れました。 (バグ #36034395)
  • 進行中のトランザクションでテーブルの検出を拒否した時に生成された暗黙的なロールバックによって、トランザクション全体がロールバックされました。これは、トランザクションがアクティブな間にテーブル定義が変更された場合に発生する可能性がありました。また、このような時には、テーブルが既にデータディクショナリに存在するかどうかも確認しました。これは、同じトランザクション内の同じテーブルからの後続の読み取りによって(誤って)検出が許可されてしまうことも意味していました。
    現在、このような場合、特定のテーブルがデータディクショナリに既に存在するかどうかの確認をスキップします; 代わりに、トランザクションの進行中に変更されたテーブルの検出を常に拒否し、ユーザーにエラーを返すようになりました。 (バグ #36191370)
  • --disable-indexesおよび--restore-privilege-tablesを指定したndb_restoreを使用してバックアップが復元されると、プライマリキーの順序付きインデックスがmysql.ndb_sql_metadataテーブルで失われ、--rebuild-indexesを使用しても再構築できませんでした。 (バグ #36157626)
  • SSL対応のNdbSocketからのSSL_pending()データが適切にチェックされませんでした。 (バグ #36076879)
  • 場合によっては、ndbmtdに停止信号を送信しようとすると、ndb_mgmdがハングすることがありました。 (バグ #36066725)
  • NDBの準備がまだ整っていないか、まだ開始されていない時に、変更を適用するためにレプリカを開始すると、役に立たないエラーメッセージ(Fatal error: Failed to run 'applier_start' hook)が表示されました。これは、レプリカが開始され、アプライヤー開始フックがNDBの準備ができるまで--ndb-wait-setupで指定された秒数を待機した時に発生しました; それまでに準備ができない場合、開始フックは失敗を報告します。現在、このような場合、代わりに処理を続行させ、NDBからエラーが返されるようにします。これにより、真の原因がより適切に示されます。 (バグ #36054134)
  • 全てのデータノードに到達できない場合、mysqldプロセスがシャットダウンするのに予想よりも長い時間がかかりました。 (バグ #36052113)
  • 特定のケースで、TRPMANブロックが独自の受信スレッド外のトランスポーター上で動作する可能性がありました。 (バグ #36028782)
  • レプリカは、Table definition changedエラーの処理中に行の変更を適用できませんでした。現在、そのようなエラーは一時的なエラーとして処理され、複数回再試行できるようになりました。 (バグ #35826145)
  • システム再起動実行の不完全な試行を繰り返すと、場合によっては、クラスタがバックアップから復元しないと回復できない状態になってしまうことがありました。 (バグ #35801548)
  • NDB APIによって使用されるイベントバッファーは、空きメモリの内部プールを維持して、ランタイムおよびオペレーティングシステムとの対話を軽減しながら、不要になったメモリを他の用途に返すことができるようにします。この空きメモリは、割り当てられたメモリの合計から差し引かれ、バッファ制限やその他の目的でレポートおよび使用されるメモリが決定されます。これは32ビット値を使用して表されていたため、4GBを超えると値がラップされ、空きメモリの量が減少したように見えました。これは、ランタイムおよびOSへのイベントバッファメモリの解放、空きメモリのレポート、および、メモリ制限の処理に悪影響を及ぼす可能性がありました。
    これは、プールされた空きメモリの量を表すために64ビット値を使用することで修正されます。 (バグ #35483764)
    参考: バグ #35655162、バグ #35663761も参照してください。
  • START REPLICA、STOP REPLICA、RESET REPLICAステートメントがmysqld.logに書き込まれるようになりました。 (バグ #35207235)
  • mt.cppでのNDBトランスポーターの処理は、同じノードグループ内のノード間で信号を運ぶ隣接トランスポーターと他の全てのトランスポーターを区別しました。これにより、トランスポーターが隣接ノードとそうではないノードを接続すると、複数のトランスポーターで問題が発生することがありました。 (バグ #33800633)
  • 復元操作中のデータノードの一時的な切断によって生成される不要な警告を削除しました。 (バグ #33144487)
  • 場合によっては、明示的なプライマリキーを持たないNDBテーブルに対してオンラインのインデックス追加操作を実行しようとすると、結果として表示されるエラーメッセージでは問題の性質が明確にされませんでした。 (バグ #30766579)
    参考: バグ #36382071も参照してください。
  • APIノードは、データノードからのハートビートの欠落による切断に関連する情報をログに記録しませんでした。 (バグ #29623286)

全ての変更点やバグ修正については、以下のページをご覧ください。
MySQL NDB Cluster 8.0.37 リリースノート(MySQLウェブサイト):
https://dev.mysql.com/doc/relnotes/mysql-cluster/8.0/en/news-8-0-37.html


MySQL Editions

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