web-dev-qa-db-ja.com

やり直しログMysqlクラスター

Mysqlクラスタには、REDOログファイル用のD8 D9 D10D11という4つのディレクトリがあります。ただし、テーブルに挿入するときは、1つのREDOディレクトリのみが使用されます。次のコマンドを実行して、やり直し情報「all dump 2398」を取得すると、次のようになります。

REDO部分:0 HEAD:ファイル:0 mbyte:0 TAIL:ファイル:0 mbyte:0合計:12空き:12(mb)REDO部分:1 HEAD:ファイル:0 mbyte:0 TAIL:ファイル:0 mbyte:0合計:12空き:12(mb)REDO部分:2 HEAD:ファイル:1 mバイト:0 TAIL:ファイル:2 mbyte:2合計:12空き:6(mb)REDO部分:3 HEAD:ファイル:0 mbyte:0 TAIL :ファイル:0メガバイト:0合計:12空き:12(mb)

REDO部分を使用しません:0 REDO部分:1 REDO部分:4。 REDO部分のみを使用します:3残りのREDOファイルを使用しているにもかかわらず、「エラー1297(HY000):一時エラー410'REDOログファイルがオーバーロードされました(TimeBetweenLocalCheckpointsを減らすかNoOfFragmentLogFilesを増やします)」が表示されます。 4つのREDOファイルのうち1つしか使用しないのに、なぜ4倍のスペースを割り当てる必要があるのでしょうか。

1
Anshul

各データノードのREDOログには、いくつかの「パーツ」があります。現在、デフォルトでは4つです。各REDOログパーツはミニREDOログのようなもので、「Redoログ」に定義された容量の1/Num_partsがあります。この設計により、REDOログを書き込む際のファイルシステムと下位層の並列処理が向上しますが、合理的にするにはパーツ間のバランスが必要です。

テーブルが作成されると、テーブルフラグメントが各データノードに作成されます。各フラグメントには、フラグメント上のすべてのアクティビティをログに記録するために使用されるREDOログ部分が割り当てられます。挿入、更新、削除。

特定のデータノードにフラグメントが1つしかないテーブルでは、REDOログパーツが1つだけ使用され、これまでに示したように、REDOログパーツの使用に不均衡が見られます。

テーブルのデータノードに複数のフラグメントが格納されている場合、それらは異なるREDOログ部分を使用し、異なる部分の使用はバランスが取れています。

複数のテーブルがある場合、他のテーブルのフラグメントは異なるREDOログ部分を使用し、異なる部分の使用は統計的にバランスが取れています。

したがって、より多くのフラグメントを含む単一のテーブルを作成してみて(MAX_ROWSを増やすか、CREATETABLEステートメントでPARTITIONS = Xを指定して)、REDOログ部分の使用がよりバランスが取れているかどうかを確認してください。

4
Frazer Clement