私はバイナリログを持っていますので、現在ログインしているすべてのユーザに対して1秒ごとにテーブルを更新するコードが不適切であるためにリストアすることができます。プロセスはこれらの行のすべてを復元し、スクリプトを必要以上に長くする。MySQLバイナリログから特定のクエリを削除する方法
すべてのバイナリログからこの特定のクエリを削除するために、このファイルを更新する最も簡単な方法は何ですか?私はテストしたこのPHPスクリプトを持っていますが、小さなファイルで動作しましたが、ファイルサイズになるとpreg_replace
にはいくつかの制限があるようです(あるいはPHP全体として)。正規表現は、そこに小さなファイルで素晴らしい仕事ができるように見えた
file_put_contents("/logs/restore.sql",preg_replace("/use(?:.|\n)+?update `notifi(?:.|\n)+?COMMIT\/\*\!\*\/;/mui",'',file_get_contents("/logs/restorex.sql")));
が、それは私が(PHPは、私の主な言語である)他の言語と同様によくないよということだけだ。
は、ここに私のPHPのラインです私は何を使うべきか、あるいはRegexを何か他のものに実装する方法を知っている。
** grep **はより速くなります - _-v_フラグを使用して、識別したコンテンツのない行だけを残したいことを示します。 – user2182349
あなたはそれで私を助けることができると思いますか?私はbashのnoobのようなものだと私は見つけることができる例でどこを開始するか分からない –
テストデータの小さなビットを投稿できますか?おそらく、あなたが一致させたくない2つの行とそうするべき行? – user2182349