主なバグ修正
- MySQL NDB ClusterJ: GCC 12.2を使用するUbuntu 22.10でClusterJをビルドできませんでした。(バグ #34666985)
- 一部のコンテキストでは、データノードプロセスが他のプロセスによってSIGCHLDを送信される場合があります。以前は、データノードプロセスは、このシグナルをエラーとして扱うシグナルハンドラをバインドしていました。これにより、Kubernetes環境のフォアグラウンドで実行する場合(そしておそらく他の条件下でも同様に)、プロセスが予期せずシャットダウンする可能性がありました。これは、データノードプロセスが子プロセス自体を起動しないという事実にもかかわらず発生したため、このような場合にアクションを実行する必要はありません。
これを修正するために、ハンドラはSIG_IGNを使用するように変更されました。これにより、子プロセスがクリーンアップされるはずです。注意
mysqldおよびndb_mgmdプロセスは、SIGCHLDのハンドラをバインドしません。(バグ #34826194)
- 管理クライアントでDROP NODEGROUPを実行した後、明示的なパーティション数を指定するかMAX_ROWSを使用して、NDBテーブルを作成または変更しようとすると、NDBからのGot error 771 'Given NODEGROUP doesn't exist in this cluster'で拒否されました。(バグ #34649576)
- 複数の管理ノードを持つクラスターでは、1つの管理ノードが接続され、後で切断されると、残りの管理ノードはこのノードを認識せず、停止したノードが再接続された時に強制的にシャットダウンされました。これは、クラスターにまだライブデータノードがある場合にいつも発生しました。
調査の結果、ノードの切断処理はConfigManagerのNF_COMPLETEREPパスで行われたが、予期されたNF_COMPLETEREPシグナルが実際に到着しなかったことが判明しました。NF_COMPLETEREPを待つのではなく、NODE_FAILREPシグナルが到着した時に管理ノードの切断を処理することで、これを解決します。(バグ #34582919) - クラスターに新しいデータノードを追加した後にALTER TABLE ... REORGANIZE PARTITIONを使用してテーブルを再編成すると、一意のハッシュインデックスが適切に再分散されませんでした。(バグ #30049013)
- 2つのデータノードを持つクラスタのローリング再起動中に、そのうちの1つが起動を拒否し、REDOログフラグメントファイルのサイズが設定されたサイズと一致しないことと、ノードの初期起動が必要であることを報告しました。fsync()によって返された未処理のエラーに対処し、書き込みを再試行することによって、修正されました。(バグ #28674694)
- 部分的なローカルチェックポイントの場合、各フラグメントLCPは、LCPの開始時のフラグメントの正確な状態と、現在のLCPの開始と前のLCPの開始との間のフラグメントの正確な差を判別できる必要があります。これは、行ヘッダー情報とページヘッダー情報を使用して追跡されます。物理ページが削除された場合、これは論理ページマップ情報でも追跡されます。
現在のLCPに含まれるページは、LCPスキャンがそれに到達する前に、フラグメントに対する何らかの操作のコミットまたはロールバックにより解放され、ページで最後に使用されたストレージも解放されます。
解放されたページがスキャンで見つからなかったため、現在のLCPの観点からページが既に処理されていることを示すために、その解放自体がマッピングされた先のページマップエントリのLCP_SCANNED_BITを設定し、LCP中にエントリにマップされたページのその後の割り当てと解放は無視されます。LCPの開始時のエントリの状態も、ページマップエントリに割り当てられているように設定されました。
これらの設定は、次のLCPが準備された時にのみクリアされます。クリアランスの前にページマップエントリに関連付けられたページの解放は、ビットが設定されていないという要件に違反します。(誤った)要件を削除することで、この問題を解決します。(バグ #23539857) - ノードが既にシャットダウンしている時にスレッド活性ウォッチドッグがトリガーされると、データノードが過度に厳密なアサーションにヒットする可能性がありました。このような場合、このアサーションを緩和することで問題を修正します。(バグ #22159697)
- インデックス統計を更新するためにインデックスがスキャンされる度に発生していた長いメッセージバッファメモリのリークを削除しました。(バグ #108043、バグ #34568135)
- Suma.cppの初期化されていない変数を修正しました。(バグ #106081、バグ #33764143)
全ての変更点やバグ修正については、以下のページをご覧ください。
MySQL NDB Cluster 7.6.25リリースノート(MySQLウェブサイト):
https://dev.mysql.com/doc/relnotes/mysql-cluster/7.6/en/news-7-6-25.html
MySQL Editions
MySQLのサブスクリプションは、24時間365日体制でお客様をサポートいたします。さらに MySQL Enterprise Edition では、データベース管理者支援ツール MySQL Enterprise Monitor やバックアップツール MySQL Enterprise Backup をご利用いただけます。