2020.01.27

MySQL

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

主な変更点

■ バグ修正

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

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

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

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

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

 参照:Bug #30152258。

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

● 完了したローカルチェックポイントのクラスターログで誤ったバイト数が報告されました。 (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。

● ノードがシャットダウンする時は常に、最大グローバルチェックポイント(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.5.17リリースノート(MySQLウェブサイト): https://dev.mysql.com/doc/relnotes/mysql-cluster/7.5/en/news-7-5-17.html

MySQL Editions

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

MySQL Editionsの詳細