2020.06.12

MySQL

MySQL NDB Cluster 7.5.18 GA版(リリース日:2020年4月28日)

主な変更点

■ 追加・変更された機能

● NDBクライアントプログラム:ndb_blob_toolユーティリティに2つのオプションが追加され、インラインパーツが存在する欠落しているBLOBパーツを検出し、これらを正しい長さのプレースホルダーBLOBパーツ(スペース文字で構成)に置き換えることができます。欠落しているBLOBパーツがあるかどうかを確認するためには、ndb_blob_tool --check-missingオプションを使用します。欠落しているblobパーツをプレースホルダーで置き換えるためには、本リリースで追加されたプログラムの--add-missingオプションを使用します。 (Bug #28583971)

● NDBクライアントプログラム:NDBTライブラリのndb_waiterおよびndb_show_tablesユーティリティプログラムから依存関係を削除しました。NDB開発でテスト用に使用されるこのライブラリは、通常使用には必要ありません。この変更によるユーザーへの目に見える影響は、これらのプログラムがNDBT_ProgramExit - 実行の完了後のステータスを出力しないことです。この動作に依存するアプリケーションは、本リリースにアップグレードする時に、この変更を反映するように更新する必要があります。

● MySQL NDB ClusterJ:ClusterJによって使用されるいくつかのJava APIが、最近のJavaバージョンで非推奨になりました。これらの調整がClusterJに対して行われました。

  ・全てのClass.newInstance()呼び出しをClass.getDeclaredConstructor().newInstance()呼び出しに置き換えました。また、必要に応じて例外処理とテストケースを更新しました。
  ・Stringまたはプリミティブ型からオブジェクトをインスタンス化するNumberクラスのコンストラクタが全て非推奨になりました。そのような全ての非推奨のインスタンス化呼び出しを、対応するvalueOf()メソッド呼び出しに置き換えました。
  ・Proxy.getProxyClass()を非推奨にしました。DomainTypeHandlerImplクラスは、Proxy.newProxyInstance()メソッドを使用して新しいインスタンスを直接作成するようになりました。Proxyクラスとそのコンストラクタへの全ての参照がDomainTypeHandlerImplクラスから削除されます。SessionFactoryImplクラスは、Proxyクラスを使用するのではなく、プロキシオブジェクトの基礎となるインターフェイスを使用してドメインクラスを識別します。DomainTypeHandlerFactoryTestも更新されました。
  ・finalize()メソッドは、非推奨になりました。このパッチは、オーバーライドするfinalize()メソッドを変更しませんが、それらに対する警告を抑制します。この非推奨は、今後のパッチで個別に処理されます。
  ・CMakeの設定を更新し、ClusterJのコンパイル時に非推奨の警告をエラーとして扱うようにしました。

 (Bug #29931625)

● MySQL NDB ClusterJ:ClusterJがMySQL NDB Cluster 8.0に対してサポートする最小Javaバージョンは、Java 8になりました。 (Bug #29931625)

● MySQL NDB ClusterJ:未使用のantlr3プラグインがClusterJ pomファイルから削除されました。 (Bug #29931625)

● mysqldに--ndb-log-fail-terminateオプションを追加しました。これを使用すると、全ての行イベントを記録できない場合、SQLノードが終了します。 (Bug #21911930)

 参照:Bug #30383919。

■ バグ修正

● MySQL NDB ClusterJ:Date値がNDBクラスタから読み取られた時、ClusterJが誤った年の値を行から抽出することがありました。これは、UtilityクラスがDate値をアンパックする時に、年に関する必要以上のビットを誤って抽出したためです。このパッチはClusterJに必要なビットのみを抽出させます。 (Bug #30600320)

● MySQL NDB ClusterJ:クラスタのNdbOperation::AbortOptionタイプがAO_IgnoreOnErrorの値を持つ場合、読み取りエラーが発生すると、行が見つからなかったためにClusterJはそれを受け取り、例外の代わりにnullを返しました。これは、AO_IgnoreOnErrorを使用すると、execute()メソッドが各トランザクションの後に常に成功コードを返し、ClusterJが個々の操作のいずれかでエラーをチェックすることになっているためです。ただし、この場合、読み取り操作はClusterJによってチェックされませんでした。このパッチでは、クエリの実行後に読み取り操作のエラーがチェックされるため、読み取りエラーが報告されます。 (Bug #30076276)

● 署名付きの自動インクリメント列を復元する時、ndb_restoreはデータに含まれる最大値を決定する時に誤って負の値を処理しました。 (Bug #30928710)

● ノードID割り当てリクエストがNotMaster一時エラーで失敗した場合、ノードID割り当てはエラーの原因に関係なく常にすぐに再試行され、非常に高い率で再試行が実行されました。その影響は、ノードnnnのAllocノードIDの過剰な数の失敗したログメッセージ(1秒あたり約15,000メッセージ)として観察できます。 (Bug #30293495)

● NDBテーブルに明示的なプライマリキーがない場合、NdbReceiverBufferが小さすぎるサイズで割り当てられる可能性がありました。これは、データノードからNDBに送信される属性ビットマップに常にプライマリキーが含まれていることが原因です。このような場合に、非表示のプライマリキーに必要な追加のスペースが考慮されるようになりました。 (Bug #30183466)

MySQL NDB Cluster 7.5.18リリースノート(MySQLウェブサイト): https://dev.mysql.com/doc/relnotes/mysql-cluster/7.5/en/news-7-5-18.html

MySQL Editions

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

MySQL Editionsの詳細