コンパイル関連
- 内部スクリプト storage/ndb/compile-clusterを使用してNDBなしでソースをビルドする機能は、ndbclusterプラグインをデフォルトビルドの一部にするNDB 8.0.31で行われた作業によって悪影響を受けました。(バグ #117215、バグ #37484376)
追加または変更された機能
- Ndb_schema_participant_countステータス変数を追加しました。この変数は、現在NDB Clusterのスキーマ変更ディストリビューションに参加しているMySQLサーバの数を示します。(バグ #37529202)
バグ修正
- NDBレプリケーション:ログに記録されたクエリで高精度機能を使用していないにもかかわらず、バイナリログに書き込まれたタイムスタンプに小数部(マイクロ秒)が含まれていました。この問題は、小数部が使用されたことを示す状態がリセットされなかったために発生しました。
特定のクエリ実行後にそのクエリにおけるマイクロ秒の使用を示すインジケータが常にリセットされるようにすることで、この問題を修正しました。これにより、実行されたクエリでマイクロ秒が使用されていなかった時に、後続のクエリでマイクロ秒を含むタイムスタンプがバイナリログに書き込まれる可能性が回避されます。(バグ #37112446) - ndbinfo情報データベース:ndbinfoテーブルに対する特定のクエリが正しく処理されませんでした。(バグ #37372650)
- NDBクライアントプログラム:ndb_mgmクライアントでnode_id RESTART -nを実行した直後など、データノードが起動していない状態では、クライアントでALL REPORT BACKUPSTATUSを発行すると、その後クラスターが予期せずシャットダウンすることになります。 (バグ #37535513)
- MySQL NDB ClusterJ: ClusterJのログファイルは、クラスタ接続に対して設定され要求されたノードIDのみを報告しました(多くの場合、これは0でした)。この修正により、接続が確立された後、ClusterJは実際に割り当てられたノードIDをログに報告するようになりました。(バグ #37556172)
- MySQL NDB ClusterJ: ガベージコレクションの遅延を引き起こす可能性のあるNdbRecordSmartValueHandlerImplからの潜在的な循環参照が削除されました。(バグ #37361267)
- MySQL NDB ClusterJ: 接続プロパティ com.mysql.clusterj.byte.buffer.pool.sizesを”512, 51200”に設定すると、java.nio.ByteBufferによって致命的な例外でClusterJアプリケーションが失敗しました。(バグ #37188154)
- MySQL NDB ClusterJ: ClusterJのデバッグビルドを使用してテストスイート内のテストを実行すると、"1 thread(s) did not exit."というエラーで終了しました。(バグ#36383937)
- MySQL NDB ClusterJ: Java 10でClusterJアプリケーションを実行すると、java.internal.ref.CleanerクラスがJava 10で使用できないため、java.lang.ClassNotFoundExceptionが発生しました。この修正により、リソースのクリーンアップには、代わりにjava.lang.ref.Cleanerクラスが使用されるようになりました。(バグ#29931569)
- 1つ以上のデータノードでAPIノード障害が検出されます。APIノード障害を検出したデータノードは、他の全てのデータノードに障害を通知し、最終的に各データノードでAPIノード障害処理をトリガーします。
各データノードは、APIノード障害を個別に処理します。全ての内部ブロックのクリーンアップが完了すると、APIノード障害は処理済みとみなされ、そして、一定時間の遅延の後、QMGRブロックは、障害が発生したAPIノードのノードIDを新しい接続に使用できるようにします。
QMGRは、APIノード障害の処理を監視し、完了していないAPIノード障害の処理について定期的に(約30秒ごとに)警告ログを生成します。これらのログは、どのブロックがまだ障害処理を完了していないかを示します。
この機能強化により、特にDBTCブロックに関する処理停止のログ記録が改善されます。DBTCブロックは、APIノードのトランザクションをロールバックまたはコミットして完了させ、関連するCOMMITマーカーとACKマーカーを解放する必要があります。さらに、APIノード障害の処理の待機時間を、ApiFailureHandlingTimeoutデータノード設定パラメータで設定できるようになりました。この秒数が経過すると、処理はデータノードの再起動にエスカレートされます。(バグ #37524092)
参考:バグ #37469364も参照してください。 - データノードがシャットダウン中にハングする理由としては、ノード上の I/O の問題(この場合、スレッドのシャットダウンはエラーおよびトレースファイルの操作中にハングします)、または、シャットダウンロジックのエラー(この場合、スレッドのシャットダウンによってUnixシグナルが発生し、デッドロックが発生します)などが挙げられます。このような問題が発生すると、ユーザーは、最後に処理されたシグナルを参照するウォッチドッグの警告をログに記録することがあります。これは、実際にはシャットダウンを引き起こした(別の)前原因があった場合には、誤解を招く可能性があります。
このような問題が発生した場合に原因を特定しやすくするために、以下の改善を行いました:- 新しいウォッチドッグ状態 shutting downを追加しました。これは、エラー処理プロセスの十分早い段階で設定され、シャットダウンストールの全てのウォッチドッグログで、遅延が実行の問題ではなくシャットダウン遅延 (正しく) に起因するものになります。
- また、ウォッチドッグメカニズムを変更してシャットダウン状態を認識し、停止する可能性が低いより直接的なパスを使用して、必要に応じてデータノード プロセスを強制的に停止するようにしました。
(バグ #37518267)
- NDBテーブルをバックアップからリストアする際、インデックスがまだ利用できない場合でも、mysqldがテーブルを開くことができるようになりました。(バグ #37516858)
- 計画外のノードシャットダウンの処理時に実行されるシグナルダンプコードが、存在しない可能性のあるセクションIDを推測的に読み取る際に予期せず終了することがありました。(バグ #37512526)
- LQH_TRANSCONFシグナルプリンタが入力長を正しく検証しなかったため、ノードプロセスが終了する可能性がありました。(バグ #37512477)
- データノードの初期再起動後にNDBバックアップからストアドグラントをリストア (ndb_restore --include-stored-grantsを使用) した際に、ndb_sql_metadataテーブルが作成もリストアもされませんでした。(バグ #37492169)
- PURGE BINARY LOGSがパージの完了を待機し終えたことを示す情報がクラスタログに書き込まれていませんでした。(バグ #37489870)
- NDB ClusterをWITHOUT_SERVERを使用してコンパイルした際に、WITH_NDB_TLS_SEARCH_PATHが設定されませんでした。(バグ #37398657)
- 現在、ndb_metadata_checkが有効な場合、スキーマとテーブルの両方が同じ間隔で同期されます。(バグ #37382551)
- この修正により、以下の2つの問題が解決されます:
- イベントストリームのバッファ不足エラーによって生じたギャップが原因で再送信を開始できなかった場合、バケットのイベントデータの転送が開始されませんでした。これは、再送信コードを終了する前に引き継ぎプロセスが開始されていることを確認することで修正されました。
- 再送信中に発生したバッファ不足エラーが処理されませんでした。この場合、このようなエラーが発生した際に再送信を中断するようになりました。
(バグ #37349305)
- まれに、release()とget()が同時に呼び出されると、ndb_schema_objectのインスタンスが二重に解放されることがありました。(バグ #35793818)
- バッファ不足解放 (OOBR) プロセスに過剰な時間がかかった場合、全てのバッファが解放される前にリセットが早期に実行され、これにより、新しいページの同時取得、新しいバッファ不足処理の開始、または再送信の開始が妨げられました。
全てのバケットのOOBRプロセスが完了した後にのみ、イベントバッファリングの再開が行われるようにすることでこの問題を解決します。(Bug #20648778)
全ての変更点やバグ修正については、以下のページをご覧ください。
MySQL NDB Cluster 8.4.5 リリースノート(MySQLウェブサイト):
https://dev.mysql.com/doc/relnotes/mysql-cluster/8.4/en/news-8-4-5.html
MySQL Editions
MySQLのサブスクリプションは、24時間365日体制でお客様をサポートいたします。さらに MySQL Enterprise Edition では、データベース管理者支援ツール MySQL Enterprise Monitor やバックアップツール MySQL Enterprise Backup をご利用いただけます。