0

所以我有一个二进制日志,由于一些编写不佳的代码每秒左右为当前登录的每个用户更新一个表,所以我有一个需要永远恢复的二进制日志。当然,恢复过程正在恢复这些行中的每一行并制作脚本花费比它需要的时间更长的时间。

更新此文件以从我的所有二进制日志中删除该特定查询的最快方法是什么?我有这个我测试过的 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 是我的主要语言)都不了解我应该使用什么,或者如何将正则表达式实现为某种东西别的。

4

1 回答 1

2

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

 ALTER TABLE notifications ENGINE=BLACKHOLE;

然后查询会迅速消失,因为它们什么都不做。

于 2016-07-10T16:15:26.113 回答