2023.04.27

MySQL

MySQL NDB Cluster 7.6.26 GA版(リリース日:2023年4月19日)

追加・変更された機能

  • MySQL NDB ClusterJ:カラムのタイプがCHARまたはVARCHARの場合に、単一カラムのパーティションキーを使用してテーブルにアクセスする際のパフォーマンスが向上しました。(バグ #35027961)
  • このリリース以降、ndb_restoreは--timestamp-printoutsオプションを実装します。これにより、全てのエラー、情報、デバッグノードログメッセージにタイムスタンプがプレフィックスとして付けられます。(バグ #34110068)

主なバグ修正

  • Microsoft Windows:コードインスペクションで見つかった2つのメモリリークが、WindowsプラットフォームのNDBプロセスハンドルから削除されました。(バグ #34872901)
  • Microsoft Windows:Windowsプラットフォームで、データノードエンジェルプロセスは、子データノードプロセスが正常に終了したかどうかを検出しませんでした。これを解決するために、開いているプロセスハンドルを子に保持し、子の終了をプローブする時にこれを使用します。(バグ #34853213)
  • NDB Cluster API:MySQL NDB ClusterJ:MySQL ClusterJはプライマリキーのハッシュ計算にスクラッチバッファを使用しますが、これは10000バイトに制限されており、場合によっては小さすぎることが判明しました。バッファのサイズが十分でない場合は、バッファを malloc()するようにしました。
    これにより、NDB APIのNdbオブジェクトメソッド startTransaction()およびcomputeHash()の問題も修正されます。以前は、これらのメソッドのいずれかに不十分なサイズの一時バッファが渡されると、メソッドが失敗しました。このような場合、一時バッファが割り当てられます。
    (バグ #103814、バグ #32959894)
  • NDB Cluster API:NDB APIでイベント操作(NdbEventOperation)をドロップすると、このイベント操作に関連するイベントの送信を停止するようにデータノードに指示した後、保留中のバッファリングされた全てのイベントが消費され破棄される前に、ドロップされたイベント操作がアプリケーションに表示されたままになることがありました。これは、ADD COLUMNやRENAME COLUMNなどのオンラインの変更操作を、影響を受けるテーブルへの同時書き込みと共に実行する場合に、特定のケースで見られる可能性があります。
    さらに分析を行うと、Ndb::getGCIEventOperations()を使用してイベント操作を繰り返すと、ドロップされたイベントにアクセスできることがわかりました。現在、このメソッドは繰り返し呼び出された時にドロップされたイベントをスキップします。(バグ #34809944)
  • ファイル形式のバージョンとバックアップを作成したクラスターのバージョンとの間の混乱を減らすために、バックアップファイル形式のバージョンが16進表記を使用してndb_restoreによって表示されるようになりました。(バグ #35079426)
    参照:この問題はバグ #34110068 のリグレッションです。
  • 内部外部キー定義レコードが不要になった時に解放されなかった場合に発生したDBDICTカーネルブロックでのメモリリークが削除されました。これは、次のいずれかのイベントによってトリガーされる可能性がありました:
    • NDBテーブルでの外部キー制約のドロップ
    • NDBテーブルに外部キー制約を作成しようとする試みの拒否

    このようなレコードは、DISK_RECORDSメモリリソースを使用します。mysqlクライアントでSELECT node_id, used FROM ndbinfo.resources WHERE resource_name='DISK_RECORDS'を実行することにより、実行中のクラスターでこれを確認できます。このリソースはSharedGlobalMemoryを使用します。これが枯渇すると、外部キーの作成の試行が拒否されるだけでなく、結合を使用するクエリも拒否される可能性があります。これは、DBSPJブロックもQUERY_MEMORYを介して共有グローバルメモリを使用するためです。(バグ #35064142)

  • トランザクションコーディネーターがスキャンする多数のフラグメントを使用してフラグメントスキャンを開始している場合、プロセス中にリアルタイムブレーク(RTB)をとって、他の要求に対する公平なCPUアクセスを確保する場合があります。RTB継続が返される前に、要求元のAPIが切断され、スキャン状態のAPIエラー処理が発生した場合、スキャン状態が削除されたために、継続処理が続行できませんでした。
    継続プロセスの一部としてスキャン状態に適切なチェックを追加することで、これを修正します。(バグ #35037683)
  • 送信者と受信者のシグナルIDは、実際には符号なしの32ビットの数値であるにもかかわらず、符号付きの値としてトレースログに出力されました。これにより、最上位ビットが設定された時に、-MAX_32_BIT_SIGNED_INTから上に数えて、そのような数値が負として表示されるため、混乱が生じる可能性がありました。(バグ #35037396)
  • DICTブロックによって使用されるファイバーは、全てのインデックスを監視し、DBTUXインデックスフラグメントモニタリングによって要求された場合、インデックス統計の計算をトリガーします。これらの計算は、スキーマトランザクションを使用して実行されます。DICTファイバーがスキーマトランザクションの開始を要求するためのトランザクションハンドルを取得しようとして失敗した場合、ファイバーが終了したため、ノードの障害なしでインデックス統計の自動更新を実行できませんでした。(バグ #34992370)
    参照:バグ #34007422も参照してください。
  • NDBのスキーマオブジェクトは、メジャーサブバージョンとマイナーサブバージョンで構成される複合バージョン管理を使用します。スキーマオブジェクトが最初に作成されると、そのメジャーバージョンとマイナーバージョンが設定されます。既存のスキーマオブジェクトが適切に変更されると、そのマイナーサブバージョンがインクリメントされます。
    再起動時に、各データノードはリカバリの一部としてスキーマオブジェクトをチェックします。外部キーオブジェクトの場合、参照される親テーブルと子テーブル(および、テーブルのプライマリキーへではない、または、テーブルのプライマリキーからではない外部キー参照用のインデックス)のバージョンの整合性がチェックされます。このチェックのテーブルバージョンはメジャーなサブバージョンのみを比較し、テーブルを進化させますが、インデックスバージョンはマイナーなサブバージョンも比較します。これにより、インデックスが変更された時に再起動時にエラーが発生しました。
    このような場合、インデックスのメジャーサブバージョンのみを比較することでこれを修正します。(バグ #34976028)
    参照:バグ #21363253も参照してください。
  • 複数の管理サーバーでNDB Clusterを実行している場合、クラスターのシャットダウン時にndb_mgmdプロセスの終了に非常に長い時間がかかりました。(バグ #34872372)
  • スキーマ配布イベントと応答の配信を高速化するために、mysqldのNDB Clusterハンドラなどによってデータノードから新しいグローバルチェックポイント(GCP)を要求すると、要求が100回送信されました。DBDIHブロックはこれらの重複するリクエストを1つにマージしようとしましたが、場合によっては複数の即時GCPをトリガーすることができました。(バグ #34836471)
  • SIGTERMシグナルを受信した後、ndb_mgmdは終了する前に全てのスレッドがシャットダウンするのを待ちませんでした。(バグ #33522783)
    参照:バグ #32446105も参照してください。
  • コマンドラインで接続文字列を指定せずに開始すると、ndb_waiterはConnecting to mgmsrv at (null)を出力しました。このような場合、他のデフォルトホストが指定されていなければ、Connecting to management server at nodeid=0,localhost:1186が出力されます。
    --helpオプションとその他のndb_waiterプログラムの出力も改善されました。(バグ #12380163)

全ての変更点やバグ修正については、以下のページをご覧ください。
MySQL NDB Cluster 7.6.26 リリースノート(MySQLウェブサイト):

https://dev.mysql.com/doc/relnotes/mysql-cluster/7.6/en/news-7-6-26.html


MySQL Editions

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