大きすぎるMySQLバイナリログを適用する

大きすぎるMySQLバイナリログを適用する

MySQL クラッシュを回復しようとしています。月曜日時点のデータとそれ以降のバイナリログがあり、その組み合わせで完全なデータ セットになるため、バイナリログを適用したいと考えています。問題は、バイナリログが 1 つのパケットとして読み込まれることです。私のバイナリログの一部は最大 2.4G と大きすぎますが、MySQL ではmax_allowed_packet=1G(1073741824) しか許可されません。それらをチャンク化したり、分割したりする方法はありますか?

split編集:分割された各ファイルの 2 番目以降のファイルで「bad magic number」エラーを出す Linux コマンドを試してみました。これを読んで納得しました。mysqlbinlog --start-position 4 --stop-position 200000003 $1 > $1.binout増分のあるループを使用できるように使用してみましたが、境界で終了しません。

WARNING: The range of printed events ends with a row event or a table map event that does not have the STMT_END_F flag set. This might be because the last statement was not fully written to the log, or because you are using a --stop-position or --stop-datetime that refers to an event in the middle of a statement. The event(s) from the partial statement have not been written to output.

次のループを増分するときに、実際の開始位置を特定する方法はありますか? 例は 199994536 で終了しました。結果の binlog の最後の位置を検出する方法はありますか?

関連情報