2020.01.27

MySQL

MySQL NDB Cluster 7.6.13 GA版(リリース日:2020年1月14日)

主な変更点

■ 追加・変更された機能

● 重要な変更:ndb_restoreユーティリティに実装された2つの新しいオプションを使用して、バックアップをスライスに分割し、これらのスライスを並行して復元できるようになりました。これにより、ndb_restoreの複数のインスタンスを使用して、ほぼ同じサイズのバックアップのサブセットを並行して復元できるようになりました。これは、バックアップからMySQL Clusterを復元するのに必要な時間を短縮するのに役立ちます。

 --num-slicesオプションは、バックアップが分割されるスライス数を決定します。--slice-idは、ndb_restoreによって復元されるスライスのID(スライスの数よりも0~1少ない)を提供します。

 最大1024スライスがサポートされます。

 (Bug #30383937)

■ バグ修正

● 互換性のない変更:RedoOverCommitCounterデータノード設定パラメータの最小値が0から1に増やされました。RedoOverCommitLimitデータノード設定パラメータの最小値も0から1に増やされました。

 アップグレードする前に、クラスターのグローバル設定ファイルを確認し、これらのパラメータに設定された値に必要な調整を行う必要があります。 (Bug #29752703)

● Microsoft Windows;NDBディスクデータ:Windowsでは、ディスクデータテーブルの使用時にマスター以外のデータノードを再起動すると、TSMANでの障害につながりました。 (Bug #97436, Bug #30484272)

● 部分的なローカルチェックポイントの実装時に導入された誤ったndbrequire()は、START_LCP_REQの受信時にm_participatingLQHがクリアされる必要があると想定しましたが、これは、START_LCP_REQを送信した後、START_LCP_CONF信号を処理する前にマスターに障害が発生した場合、必ずしも当てはまりません。 (Bug #30523457)

● マスターノードがLCP_COMPLETE_REP信号の送信中に停止し、それがすべてのノードではなく一部のノードに送信された場合、ローカルチェックポイントがハングすることがありました。 (Bug #30520818)

● DUMP 9988とDUMP 9989コマンドが追加されました。 (Bug #30520103)

● ndb_restore --rebuild-indexesを--rewrite-databaseと--exclude-missing-tablesオプションと共に実行しても、ターゲットデータベースのどのテーブルにもインデックスが作成されませんでした。 (Bug #30411122)

● ディスクページバッファからページを取得中にトランザクションが中止され、ディスクシステムが過負荷になった場合、トランザクションは無期限にハングしました。これにより、再起動がハングし、ノード障害処理が失敗する可能性もありました。 (Bug #30397083, Bug #30360681)

 参照:Bug #30152258。

● エクステントページを同期する時、エクステント同期ページに書き込まれた最後のページのFSWRITECONF信号を受信する時にLCPを処理するCONTINUEB信号がまだ未処理の場合、現在のローカルチェックポイント(LCP)が無期限に停止する可能性がありました。別のページがそのデータページから書き込まれた場合、LCPは再起動されることも可能でした。また、この問題により、PREP_LCPページが本来書き込まれるべきではない時に書き込まれる可能性もありました。 (Bug #30397083)

● エラーAnother node failed during system restart...によるデータノード障害が、部分的な再起動中に発生しました。 (Bug #30368622)

● 部分的なローカルチェックポイントの一部としてログファイルグループをドロップし、その結果、次の処理のためにこのブロックによってロックされているページをドロップしている間に、SYNC_EXTENT_PAGES_REQ信号がPGMANによって受信された場合、LCPは、ページが既に削除された後にそのページにアクセスしようとしたため、終了しました。 (Bug #30305315)

● 完了したローカルチェックポイントのクラスターログで誤ったバイト数が報告されました。 (Bug #30274618)

 参照:Bug #29942998。

● バックアップが完了した時にクラスターログに書き込まれたサマリーイベントのデータバイト数が32ビットに切り捨てられました。そのため、ログレコードの数と、このイベントのログに出力されるデータレコードの数との間に大きな不一致がありました。 (Bug #29942998)

● ノードあたり10のスレッドがある2ノードクラスターで2つのLDMスレッドを使用すると、各ノードのLDMスレッドの1つがゼロフラグメントのプライマリであるなど、パーティションの不均衡が発生する可能性がありました。1つのLDMのデータファイルには12バイトのデータファイルヘッダーしか含まれていなかったため、このクラスターからマルチスレッドバックアップを復元しようとして失敗し、ndb_restoreは読み取ることができませんでした。空のノードをオンラインで追加した直後にバックアップを取る場合など、他のケースでも同じ問題が発生する可能性がありました。

 これは、サイズが512バイト未満で、バックアップがSTOPPING状態のEOFバックアップデータファイル書き込みに対してODirectが有効になっている時に発生したことがわかりました。これは通常、中断されたバックアップに対してのみ発生しますが、LDMにフラグメントがなかった場合の正常なバックアップに対しても発生する可能性がありました。バックアップにそれを中止させる原因となるエラーが実際に含まれている場合にのみ書き込みがスキップされるように、追加のチェックを導入して問題を修正しました。 (Bug #29892660)

 参照:Bug #30371389。

● ndb_mgmdとndbinfoの実装の一部として使用されるSignalSenderクラスが、不要なSUB_GCP_COMPLETE_REP信号とAPI_REGCONF信号を過剰にバッファし、メモリを不必要に消費する場合がありました。 (Bug #29520353)

 参照:Bug #20075747, Bug #29474136。

● BackupLogBufferSize設定パラメーターの設定が守られませんでした。 (Bug #29415012)

● ノードがシャットダウンする時は常に、最大グローバルチェックポイント(GCP)コミットラグとGCPセーブタイムアウトが再計算され、データノードの数の変化が考慮されます。これにより、閾値が以前の値を下回った時に、実行可能なノードが意図せずにシャットダウンする可能性がありました。 (Bug #27664092)

 参照:Bug #26364729。

● 子の行を挿入するトランザクションは、その子の親の行を削除するトランザクションと同時に実行できます。この場合、親がない子の行という結果が生じないように、トランザクションの1つを中止する必要があります。

 子の行への挿入をコミットする前に、親の行の読み取りがトリガーされ、親が存在することを確認します。同様に、親の行で削除をコミットする前に、子の行が存在しないことを確認ために読み取りまたはスキャンが実行されます。挿入トランザクションと削除トランザクションが同時に実行された場合は、それらの準備操作とコミット操作は、両方のトランザクションがコミットされるように相互作用する可能性がありました。これは、トリガーされた読み取りがLM_CommittedReadロックを使用して実行されたために発生しました。このロックはこのようなエラーシナリオを防ぐほど強力ではありません。

 この問題は、トリガーされた読み取りの両方により強力なLM_SimpleReadロックモードを使用することで修正されています。LM_CommittedReadロックではなくLM_SimpleReadを使用すると、子の行への挿入と親の行からの削除を同時に行うトランザクションに関連するあらゆる可能性のあるシナリオで、少なくとも1つのトランザクションが中止されます。 (Bug #22180583)

● 同じSQLノードでSELECTとALTER TABLEステートメントを同時に実行すると、それらはロックが解放されるのを待機している時に互いにブロックすることがありました。 (Bug #17812505, Bug #30383887)

MySQL NDB Cluster 7.6.13リリースノート(MySQLウェブサイト): https://dev.mysql.com/doc/relnotes/mysql-cluster/7.6/en/news-7-6-13.html

MySQL Editions

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

MySQL Editionsの詳細