Итак, у меня есть двоичный журнал, который восстанавливаются навсегда из-за какого-то плохо написанного кода, который обновляет таблицу каждую секунду или около того для каждого пользователя, который в данный момент вошел в систему. Конечно, процесс восстановления восстанавливает каждую из этих строк и делает скрипт займет больше времени, чем нужно.
Какой самый быстрый способ обновить этот файл, чтобы удалить этот конкретный запрос из всех моих двоичных журналов? У меня есть этот 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")));
Кажется, что Regex прекрасно работает с меньшим файлом, просто я не так хорошо разбираюсь в других языках (PHP — мой основной язык), чтобы знать, что я должен использовать, или как внедрить это Regex в нечто остальное.
Если вы готовы выбросить все данные в этой таблице,
ALTER TABLE notifications ENGINE=BLACKHOLE;
Тогда запросы проносятся мимо, потому что они ничего не делают.
Других решений пока нет …