2019.05.21

MySQL

MySQL NDB Cluster 7.4.24 GA版(リリース日:2019年4月26日)

主な変更点

■ 追加・変更された機能

・CMake3を使ったビルドは、現在、NDBソースディストリビューションに含まれている
 compile-clusterスクリプトによってサポートされています。

■ バグ修正

・DBSPJブロックで実行されているプッシュされたJOINがクエリ実行中に相関IDを保存する必要が
 ある場合、これらの特定の相関IDは結果セットに最新のバッチを生成する時にのみ必要とされますが、
 これらのためのメモリはクエリ実行全体の存続期間に対して割り当てられました。後続のバッチは、
 追加の相関IDが保管され割り当てられることを必要とし、したがって、クエリが完了するのに十分に
 長い時間がかかった場合、これはクエリメモリの枯渇につながりました(エラー20008)。
 現在、このような場合、メモリは現在の結果バッチの存続期間に対してのみ割り当てられ、
 解放されてバッチの完了後に再利用できるようになります。(Bug #29336777)

 参照:Bug #26995027。

・ndb_restoreの実行中に1つ以上のデータノードが予期せずシャットダウンすることがありました。
 これは、元のバックアップが作成されたクラスタと異なる数のデータノードを持つクラスタに
 復元する時に最も頻繁に発生しましたが、必ずしも限定されていません。

 この問題の根本的な原因は、スキーマトランザクションの実行の一部としてDBDICTカーネルブロックに
 よって使用され、NDBイベントの設定およびサブスクリプション処理に使用されるプロトコルと
 共有されるブロックインスタンスごとのプールから取得されたSafeCounterオブジェクトのプールの 
 枯渇です。イベントの設定とサブスクリプション処理の並行処理は、SafeCounterプールを使い果たす
 可能性があるということです。イベントおよびサブスクリプション処理はプールの枯渇に対処できます
 が、スキーマトランザクション処理はできませんでした。その結果、復元中にノードがシャットダウン
 される可能性がありました。

 この問題は、DBDICTスキーマトランザクションに、同時NDBイベントアクティビティによって
 使い尽くされることができない予約済みSafeCounterの分離プールを提供することによって
 解決されます。(Bug #28595915)

・1つ以上のステージングテーブルが使用されている場合、ndb_restoreはオートインクリメント値を
 正しく復元しませんでした。この修正の一環として、そのような場合、SYSTAB_0バックアップログの
 適用もブロックします。このログの内容はテーブルIDに基づいて直接適用され続け、関連のない
 テーブルのSYSTAB_0に格納されたオートインクリメント値を上書きする可能性がありました。
 (Bug #27917769、Bug #27831990)

 参照:Bug #27832033。

・ndb_restoreはアトミックではないオートインクリメント値を復元するメカニズムを採用していたため、
 ndb_restoreの複数のインスタンスが並行して使用された場合に誤ったオートインクリメント値が
 復元されるという結果をもたらす可能性がありました。(Bug #27832033)

 参照:Bug #27917769、Bug #27831990。

・ON DELETE CASCADEを使用している他のNDBテーブルの外部キーと、1つ以上のTEXTまたはBLOBカラムの
 両方を持つNDBテーブルでメモリリークが発生しました。(Bug #27484882)

・デバッグモードでREDOログを実行すると、データノードが行の割り当てを解除する時に失敗する
 可能性がありました。(Bug #93273、Bug #28955797)

MySQL NDB Cluster 7.4.24リリースノート(MySQLウェブサイト):

https://dev.mysql.com/doc/relnotes/mysql-cluster/7.4/en/news-7-4-24.html

MySQL Editions

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

MySQL Editionsの詳細