Вопрос

У меня есть семь файлов Binlog MySQL BINLOG, которые я должен использовать, чтобы получить некоторую «потерянную» информацию. Мне нужно только получить определенные операторы вставки из журнала (Ex. Где оператор запускается с «вставки в полей набора таблицы1 =»). Если я просто запустил mysqlbinlog (даже если за базу данных и с использованием --short-form), я получаю текстовый файл, который составляет несколько сотен мегабайт, что делает его практически невозможным, чтобы затем разбираться с любой другой программой.

Есть ли способ просто получить определенные операторы SQL из журнала? Мне не нужна какая-либо из вспомогательной информации (временные метки, автоинкремента #s и т. Д.). Мне просто нужен список операторов SQL, которые соответствуют определенной строке. В идеале я хотел бы иметь текстовый файл, который просто перечисляет эти операторы SQL, такие как:

INSERT INTO table SET field1='a';
INSERT INTO table SET field1='tommy';
INSERT INTO table SET field1='2';

Я мог бы получить это, запустив MySQLBINLOG к текстовому файлу, а затем расставив результаты на основе строки, но текстовый файл слишком большой. Это просто раз на любой скрипт, который я бегу и даже не делает его невозможным открывать в текстовом редакторе.

Заранее благодарны за Вашу помощь.

Это было полезно?

Решение

Я никогда не получал ответа, но я скажу вам, что я сделал, чтобы получить. 1. RAN MYSQLBINLOG в текстовыйФИЛЬ 2. Создал сценарий PHP, который использует FGES, чтобы прочитать каждую строку журнала 3. Во время обработки через каждую строку скрипт анализирует его с помощью функции Stristr 4. Если линия соответствует строке, я ищу Ибо он регистрирует линию к файлу

Требуется некоторое время для запуска MySQLBINLOG и Script PHP, но он больше не времена. Я изначально использовал FRAD в PHP, но это читает весь файл в память и вызвал сбой сценария на больших (1G) файлах журнала. Теперь требуется несколько минут (я также устанавливаю переменную max_execution_time, чтобы быть больше), но она работает как очарование. FGETS получает одну строку за раз, поэтому она не займет почти столько памяти.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top