Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从MySQL二进制日志中删除特定查询_Php_Mysql_Regex_Bash_Binary Log - Fatal编程技术网

Php 如何从MySQL二进制日志中删除特定查询

Php 如何从MySQL二进制日志中删除特定查询,php,mysql,regex,bash,binary-log,Php,Mysql,Regex,Bash,Binary Log,因此,我有一个二进制日志,它需要花费很长时间才能恢复到,因为一些编写得很糟糕的代码每秒左右为当前登录的每个用户更新一个表。当然,恢复过程是恢复这些行中的每一行,并使脚本花费的时间超过需要的时间 更新此文件以从所有二进制日志中删除特定查询的最快方法是什么?我有一个我测试过的PHP脚本,它在一个较小的文件上工作,但是当涉及到文件大小时,preg_replace似乎有一些限制(或者可能只是整个PHP) 以下是我的PHP行: file_put_contents("/logs/restore.sql",p

因此,我有一个二进制日志,它需要花费很长时间才能恢复到,因为一些编写得很糟糕的代码每秒左右为当前登录的每个用户更新一个表。当然,恢复过程是恢复这些行中的每一行,并使脚本花费的时间超过需要的时间

更新此文件以从所有二进制日志中删除特定查询的最快方法是什么?我有一个我测试过的PHP脚本,它在一个较小的文件上工作,但是当涉及到文件大小时,
preg_replace
似乎有一些限制(或者可能只是整个PHP)

以下是我的PHP行:

file_put_contents("/logs/restore.sql",preg_replace("/use(?:.|\n)+?update `notifi(?:.|\n)+?COMMIT\/\*\!\*\/;/mui",'',file_get_contents("/logs/restorex.sql")));

那里的正则表达式似乎可以很好地处理较小的文件,只是我不太擅长任何其他语言(PHP是我的主要语言),不知道我应该使用什么,或者如何将正则表达式实现到其他东西中。

如果您愿意丢弃该表中的所有数据

 ALTER TABLE notifications ENGINE=BLACKHOLE;

然后,查询将快速通过,因为它们什么也不做。

如果您愿意丢弃该表中的所有数据

 ALTER TABLE notifications ENGINE=BLACKHOLE;

然后,查询会快速通过,因为它们什么也不做。

grep会更快-使用-v标志表示您只想保留那些没有标识内容的行。您认为您可以帮我吗?我有点像个傻瓜,我不知道从哪里开始我能找到的例子你能发布一点测试数据吗?也许两行你不想匹配,一行应该匹配?这里,我有一个文件的实际摘录,其中有一些正在工作的正则表达式调整了
mysqlbinlog
的输出,这不是一个容易完成的任务。grep会更快-使用-v标志表示您只想保留那些没有标识内容的行。您能帮我吗?我有点像个傻瓜,我不知道从哪里开始我能找到的例子你能发布一点测试数据吗?也许你不想匹配的两行和应该匹配的一行?在这里,我有一个文件的实际摘录,其中一些正在工作的正则表达式调整了
mysqlbinlog
的输出,这不是一个可以轻易完成的任务。这是难以置信的,我甚至认为这样的事情不会存在。我一定会记下这一点,下次我必须从Binlogs恢复。这太不可思议了,我甚至没想到会存在这样的东西。我一定会记下这一点,以便下次从Binlog恢复时使用