Вопрос: Восстановить базу данных MySQL с помощью файла bin-log


Вот CATASTROPHE:

Мы работаем в нашей компании с веб-приложением для управления тестированием: TestLink, Одна команда работала над ним уже более 1 месяца. Вчера другая команда тоже хотела начать использовать testLink, поэтому меня попросили установить ее для них.

Установка была выполнена на том же сервере, на котором запускался первый TestLink, я использую WampServer.2.0 в котором я запускаю testLink, поэтому я начал его снова устанавливать, к сожалению, на том же WampServer. Я немного устал, и я не упомянул в установке, что я предоставлял второй TestLink тот же имя базы данных как первый .. установка удался ... но WAIT !! все данные в первой базе данных были LOST !! перезаписывается пустой и новой базой данных ..! Я чувствовал, что кто-то определенно собирается убить меня!

Так что я начинаю поиск в Интернете, но так как резервная копия базы данных не была сделана с момента установки первого TestLink .. я действительно чувствовал, что у меня нет решения. Я попробовал запустить программное обеспечение для резервного копирования перезаписанных и случайно удаленных файлов, что не помогло .. курс...

я нашел в этот блог рассказ о MySQL двоичные журналы, но похоже, что для восстановления потерянных данных необходимо иметь хотя бы одну резервную копию. В конфигурации моего my.ini файл, log-bin=mysql-bin строка раскоментирована, и я могу найти файлы в mysql \ data \, которые выглядят следующим образом: MySQL-bin.00000x

Я побежал mysqlbinlog команда на одном из них: mysqlbinlog --start-datetime="2011-04-01 00:00:00" mysql-bin.000006, что сделало мой экран похожим на матрицу, я могу распознавать строки, которые выглядят как команды TestLink, команда, кажется, успешно завершена .. но нет .. таблицы в базе данных остаются неизменными, пустыми ...

Я что-то упускаю? есть ли свет надежды?

Пожалуйста помоги..


6
2018-04-02 14:22


Источник


К сожалению, вы начинаете чувствовать, насколько важна резервная копия, когда вам это нужно ... - Petar Minchev


Ответы:


Bin-log будет записывать все запросы с момента его запуска, поэтому у вас есть в основном три варианта:

  1. Бин-журнал был включен с самого начала и записывал все запросы в базе данных. В этом случае вы можете просто восстановить всю базу данных из журнала bin.
  2. У вас есть старая резервная копия, сделанная когда-то после включения журнала bin. В этом случае вы можете восстановить резервную копию и начать с места в журнале bin, в котором была сделана резервная копия (инкрементное резервное копирование).
  3. Журнал bin не содержит всех запросов из источника базы данных, и у вас нет резервной копии. В этом случае вы (в конечном итоге) сможете восстановить все данные, содержащиеся в журнале bin, но любые данные, которые не присутствуют, потеряны навсегда. Вы можете попытаться вручную восстановить любые отсутствующие данные, но в зависимости от вашей структуры / размера данных это может быть просто невозможно.

Из его звуков у вас нет резервных копий, которые оставляют опции 1 и 3. Проверьте первый файл журнала bin и посмотрите, какая самая ранняя запись в нем, чтобы посмотреть, какое дело относится к вам. Если вы ищете конкретное использование mysqlbinlog, см. официальная документация что очень хорошо объясняет ситуацию.

Если вы когда-нибудь восстановитесь, следующая вещь, которую вы должны / должны сделать, - это выполнить регулярное расписание резервного копирования базы данных, включая копии вне сайта.


5
2018-04-02 15:53





Я, наконец, избавился от проблемы и минимизировал ущерб, используя файлы bin-log, как сказал uesp. Я использовал mysqlbinlog binlog_file | mysql -u root -p для восстановления 75% данных, содержащихся в БД, плюс его структура. Остальные 25% были написаны вручную, нам потребовалось около полудня, чтобы вернуть все.

Да, это был плохой опыт, но обогащающий, я настраивал автоматическое резервное копирование каждый день в 03:00, сжимая .sql дамп, прикрепляя его к электронному письму и отправляя его другим машинам, в случае, если главный ожог :)

Спасибо всем за вашу помощь, официальная документация MySQL также была действительно полезна!

Хорошего дня!


1
2018-04-12 08:54



Было бы хорошо, если бы вы отметили ответ uesp как лучший ответ, для него и для людей, которые приходят, чтобы прочитать это. - dxvargas