Восстановление базы данных. Восстановление отдельных страниц в базе данных

Читайте, как восстановить утерянную или удалённую базу MySQL . Как восстановить повреждённые таблицы базы MySQL с помощью myisamchk. База данных MySQL по умолчанию устанавливается на компьютере в папку не диске С:

C:\Program Files\MySQL\MySQL Server 5.7

Но, данные таблиц хранятся в файлах в другой папке на диске С компьютера, это:

Расположение данных файлов указано в меню Server Status приложения MySQL Workbench, в разделе Server Directories.

Для случая с необходимостью восстановления таблиц базы данных будет интересна именно папка с данными конкретной базы данных и файлы, которые в ней размещены.

Содержание:

Файлы базы данных MySQL

MySQL совместима с большим количеством форматов файлов, как например: .sql, .arm, .cnf, .dbs, .ddl, .frm, .ibd, .ism, .mrg, .myd, .myi, .mysql, .opt, .phl, .sal, .sqr, .tmd, .arz, .ibz, .ibc, .qbquery, .rul. Но данная статья не об этом. Сегодня нам интересны именно те файлы, в которых хранятся данные и таблицы базы, восстановив которые пользователь будет иметь возможность вернуть важную информацию и избежать её возможной утери в будущем.

Данные каждой базы данных хранятся в папке с её названием, и в зависимости от типа таблицы хранятся в файлах с такими расширениями:

  • db.opt – файл в котором хранятся характеристики базы данных, указанные при её создании;
  • .frm – файл структуры таблиц;
  • .myd – файл, в котором хранятся данные MyISAM таблиц;
  • .myi – файл, в котором хранятся индексы MyISAM таблиц;
  • .ibd – файл, в котором хранятся данные и индексы InnoDB таблиц.

Как восстановить базу данных MySQL

Восстановление базы данных MySQL это технически не сложный процесс, но он зависит от множества условий. Для пользователей MySQL Workbench предусмотрена функция Экспорта и Импорта/Восстановления данных баз данных.


Кроме этого, возможно создание резервной копии и восстановление базы данных MySQL с помощью mysqldump (которую мы детально описали в одной из наших статей).


Но эти функции больше относятся к созданию резервных копий данных MySQL с помощью встроенных инструментов. Более продвинутым пользователям или тем, которые не воспользовались вовремя функцией резервирования данных базы MySQL, будет также интересен способ создания копий и восстановления данных баз вручную, методом подстановки описанных выше файлов структуры и данных таблиц:

  • Создание копии данных таблиц базы MySQL возможно путём копирования файлов структуры и данных (*.opt, *.frm, *.myd, *.myi для MyIsam; *.opt, *.frm, *.ibd для InnoDB) и сохранения их в другой папке.
  • Восстановление данных таблиц базы MySQL возможно путём подстановки скопированных раннее файлов структуры и данных в папки уже существующих баз (в нашем случае это две базы: my_db и my_db2).

Восстановление утерянной или удалённой базы MySQL

Так, если по какой-то причине вы удалили базу данных MySQL, переустановили Windows или отформатировали жесткий диск, то восстановить её можно описанным выше способом, путём подставки скопированных раннее файлов базы данных в папку с названием базы:

C:\ProgramData\MySQL\MySQL Server 5.7\Data

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

Для этого:


Восстановление повреждённых таблиц базы MySQL с помощью myisamchk

MyISAM таблицы базы данных MySQL могут быть повреждены в результате неожиданного прерывания процесса записи или отключения компьютера, сбоев и отказов в работе аппаратного или программного обеспечения, а также в случае попытки отладки с помощью myisamchk используемой сервером таблицы.

В результате повреждения из таблицы могут исчезнуть или неправильно отображаться данные, но чаще всего в результате повреждения таблицы пользователи сталкиваются с ошибкой: «Incorrect key file for table: ‘название_таблицы’. Try to repair it»

Для восстановления повреждённых MyISAM таблиц можно использовать команду myisamchk .

Myisamchk работает путём отладки и создания копии.myd файла, с дальнейшей заменой им повреждённого файла. Поэтому, прежде чем использовать данную команду, лучше предварительно создать резервную копию файла таблицы, которую необходимо восстановить.

Так, чтобы восстановить повреждённую таблицу, используйте команду:

myisamchk -r -q ИМЯ_ТАБЛИЦЫ

где, -r -q – это режим быстрого восстановления. В данном случае будет исправлен индексный файл без изменения файла данных. Если в файле данных содержится все необходимое, а удаленные связи указывают на правильные позиции в файле данных, то в результате данной команды таблица будет исправлена.

Если предыдущая команда не даст необходимого результата, то сделайте резервную копию файла данных и выполните команду:

myisamchk -r ИМЯ_ТАБЛИЦЫ

где, -r – это просто режим восстановления. В таком случае из файла данных будут удалены некорректные и утерянные записи, и индексный файл будет создан заново (как описано выше).

Обратите внимание . Если отладку и восстановление таблицы планируется выполнять из командной строки, то предварительно необходимо остановить сервер. Следует отметить, что при выполнении mysqladmin shutdown с удаленного сервера mysqld все еще будет некоторое время работать после завершения mysqladmin, пока не будут остановлены все запросы и сброшены на диск все ключи.

Поделюсь опытом как восстановить базу данных (БД) сайта из бэкапа через phpMyAdmin на вашем хостинге.

Данная вещь может ни разу вам не пригодиться, но на всякий случай должны понимать как действовать в критической ситуации. Как говорится: "Готовь сани летом...".

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

Как восстановить базу данных из бэкапа

На данный момент у вас уже есть бэкап БД на компьютере. Остается его залить в текущую БД с подменой, чтобы сайт снова начал работать, либо вступили в силу изменения, которые вы делали на локалке или другом сайте. Для этого необходимо попасть в phpMyAdmin у вас на хостинге. Покажу на примере своего (на других будет похоже в функциональной части).

Сам phpMyAdmin выглядеть у вас будет аналогично, быть может с небольшими отличиями.

  • Перехожу в соотв. раздел - правый верхний угол предыдущей картинки MYSQL
  • Напротив нужной БД (если у вас не одна, а несколько) нажимаю на надпись phpMyAdmin (картинка ниже)

Перед вами откроется вот такая страница, где необходимо кликнуть по названию своей БД:

Теперь у вас появится возможность восстановить сайт из бэкапа. Кликаете на "Импорт " в верхней панели:

По-умолчанию все сайты на WordPress идут в кодировке UTF-8, поэтому данную настройку трогать не нужно. Если же у вас сайт в другой кодировке, то подберите подходящую из выпадающего списка. Остальные оставляем как есть на странице.

После нажатия ОК запустится процесс восстановления сайта. Это можете занять несколько секунд или минут, в зависимости от размера БД.

Если в процессе возникнут проблемы с восстановлением, то в верхней части страницы появится соответствующая надпись с описанием ошибки. Здесь вам уже придется обратиться за помощью к хостеру, т.к. ошибки возникают чаще всего из-за настроек сервера (сюда не относится ситуация, когда у вас поврежден сам бэкап БД).

Из своей практики скажу, что чаще всего ошибка при восстановлении БД бывает из-за размера самого БД, когда сервер не может корректно обработать бэкап. В этом случае 2 пути выхода:

  • Распаковать архив с БД, чтобы получился просто файл.sql, либо наоборот запаковать (по ситуации).
  • Обратиться за помощью к тех.поддержке хостера.

В одной из следующих статей расскажу как действовать, если у вашего хостера нет в функционале доступа к phpMyAdmin для обычного пользователя. С подобной ситуацией мне довелось столкнуться несколько раз. Решается все довольно просто.

У разработчиков и администраторов Microsoft SQL Server достаточно часто возникает необходимость восстановить базу данных из архива (backup), например, для создания копии базы, которая будет использоваться для тестирования приложения, или например, Вы переустановили операционную систему и Вам нужно восстановить базу данных, именно этим мы сегодня и займемся.

В данной статье мы будем рассматривать восстановление базы данных на примере СУБД Microsoft SQL Server 2000 . Для того чтобы восстановить базу данных нужно, соответственно иметь архив этой базы данных. Он создается с расширением *.dat . Всем рекомендую создавать архивы своих баз данных, причем ежедневные, если что случится, у Вас всегда будет архив для восстановления.

Описание процесса восстановления базы данных из Backup

Начнем, открывайте Enterprise Manager выбирайте базу данных, которую Вы хотите восстановить или если Вы только что установили СУБД, и там нет еще баз данных, то просто создайте базу данных и восстанавливайте ее из архива. Открывайте меню «Tools->Restore Database » и у Вас откроется вот такое окошко:

Выбираем «From device » и жмем «Select Devices ».

{loadposition banner3

Жмите OK и в окне «Choose Restore Database » также нажмите OK. А в главном окне «Restore Database » пока не спешите нажимать OK, перейдите на вкладку «Options » и поставьте галочку как на картинке.

Также здесь задайте путь для файлов базы данных, так как он может быть неправильный, и Вы можете переписать, например, существующую базу данных, если Вы создаете копию базы, а если Вы только что все установили (СУБД), то можно и не менять.

Все, после этого можете нажимать OK. Через некоторое время база восстановится, и Вы ее можете использовать.

Кстати, если кому интересен язык T-SQL (это расширение языка SQL в Microsoft SQL Server ), то могу порекомендовать книгу «Путь программиста T-SQL. Самоучитель по языку Transact-SQL », после прочтения которой Вы легко сможете программировать на T-SQL.

Вам необходимо научиться восстанавливать данные из резервной копии. Восстановление может понадобиться в случае сбоя в работе оборудования или при необходимости создания на другом сервере абсолютно идентичной копии существующей базы данных.

Запомните, если Вы восстанавливаете базу, используя Simple Recovery Model, Вам нужно будет восстановить только последнюю полную копию. Если же Вы используете Full или Bulk Recovery Model , Вы должны восстановить полную копию, затем последнюю дифференциальную копию и все копии журналов транзакций. Изучим подробнее процессы восстановления.

Восстановление базы данных из полной копии.

Независимо от модели восстановления, первым шагом всегда является восстановление последней полной резервной копии. Для восстановления БД в Enterprise Manager, следует выделить базу данных, дважды щелкнуть по ней правой кнопкой мыши и выбрать в контекстном меню “All Tasks > Restore Database”, после этого откроется диалоговое окно, показанное на Рисунке A.

Рисунок А.

Диалоговое окно Restore Database позволяет просматривать все последние резервные копии в хронологическом порядке. Там же Вы можете выбрать базу данных, которую нужно восстановить. На вкладке Options показанной на Рисунке B, Вы можете выбрать сделующие опции:

  • Eject tapes after restoring each backup (выгружать ленту после каждого восстановления)
  • Prompt befor restoring each backup (выдавать дополнительное предупреждение перед началом восстановления каждой копии)
  • Force restore over existing database (осуществлять восстановление поверх существующей базы данных), эта опция эквивалентна Move в T-SQL.

Рисунок B.

В нижней части окна находятся три переключателя, которые позволяют определить состояние базы после восстановления копии:

  • Leave Database Operational. No Additional Transaction Logs Can Be Restored.
    • Если Вы выбрали это значение, то после загрузки резервной копии будет инициирован процесс восстановления, что приведет к откату всех незавершенных транзакций. Станет невозможной загрузка дополнительных копий журнала транзакций. Пользователи получат возможность нормально работать с базой данных.
  • Leave Database Nonoperational But Able To Restore Additional Transaction Logs.
    • По окончании загрузки копии база данных будет оставаться временно недоступной. Будет необходимо загрузить дополнительные копии, после чего инициировать процесс восстановления.
  • Leave Database Read-Only And Able To Restore Additional Transaction Logs.
    • База данных становится доступной только для чтения. Вы можете загрузить дополнительные резервные копии журнала транзакций. Эта опция используется для создания резервного сервера (Standby Server)

Для восстановления базы данных и журналов транзакций осталось просто нажать кнопку OK.

Восстановление базы данных с помощью T-SQL.

Восстановление базы данных можно выполнить и с помощью T-SQL, который предлагает больше опций чем Enterprise Manager. Синтакс использования T-SQL команды следующий:

    RESTORE DATABASE { database_name | @ database_name_var }
    [ FROM < backup_device > [ , ...n ] ]
    [ WITH
    [ RESTRICTED_USER ]
    [ [ , ] FILE = { file_number | @ file_number } ]
    [ [ , ] PASSWORD= { password | @ password_variable } ]
    [ [ , ] MEDIANAME= { media_name | @ media_name_variable } ]
    [ [ , ] MEDIAPASSWORD= { mediapassword | @ mediapassword_variable } ]
    [ [ , ] MOVE " logical_file_name " TO " operating_system_file_name " ]
    [ , ...n ]
    [ [ , ] KEEP_REPLICATION ]
    [ [ , ] { NORECOVERY | RECOVERY | STANDBY = undo_file_name } ]
    [ [ , ] { NOREWIND | REWIND } ]
    [ [ , ] { NOUNLOAD | UNLOAD } ]
    [ [ , ] REPLACE ]
    [ [ , ] RESTART ]
    [ [ , ] STATS [ = percentage ] ]

Для детального изучения каждой опции следует прочитать описание в SQL Server 2000 Books Online .

На Рисунке C показано восстановление базы данных Pubs из полной копии с устройства резервного копирования.

Рисунок С.

Восстановление базы данных из дифференциальной копии.

Если Вы используете Full или Bulk Recovery Model, Вы должны выполнить сначала восстановление полной резервной копии, затем последней дифференциальной копии и всех журналов транзакций. Для выполнения восстановления базы данных, используя дифференциальную копию, в Enterprise Manager необходимо выделить базу данных, дважды щелкнуть по ней правой кнопкой мыши и выбрать в контекстном меню “All Tasks > Restore Database”, выбрать восстановления полной и дифференциальной копии базы данных, а затем нажать OK. (исунок D)

Рисунок D.

Синтаксис команды Restore для выполнения восстановления с использованием дифференциальных копий, показан на Рисунке Е.

Рисунок Е.

Восстановление журнала транзакций.

Перед началом восстановления журнала транзакций, Вы должны восстановить полную и последнюю дифференциальную копию базы. Затем Вы можете восстанавливать журналы транзакций в соответсвующем порядке. Если Вы используете Enterprise Manager, нужно выделить базу данных, дважды щелкнуть по ней правой кнопкой мыши и выбрать в контекстном меню “All Tasks > Restore Database”, выбрать все нужные копии и, если есть необходимость, опцию Point in Time Restore (восстановление на определенный момент времени) (Рисунок F).

Рисунок F.

Синтаксис команды Restore для восстановления журнала транзакций, показан на РисункеG.

Рисунок G.

Подведем итоги. Резервное копирование и восстановление базы данных – это одна из основных, наиболее важных задач администратора баз данных. В любой момент времени Вы должны быть уверены в своей способности восстановить базу данных SQL Server 2000 согласно Вашему плану аварийного восстановления. Если же у Вас нет плана аварийного восстановления, я рекомендую начать работать над ним. В случае, если что-то произойдет и данные будут потеряны, следующей потерей для Вас может стать потеря места работы.

От автора: добрый день, уважаемые. У вас что-то случилось? Опять «выкинули» не ту базу данных? Ну, это не смертельно, если знать все про восстановление MySQL. Сейчас мы расскажем вам все тонкости данного ритуала. Для этого нужен бубен, козявка из носа белохвостого тюленя… Это шутка! А все серьезное по этой теме будет изложено дальше.

Горе поправимо, если удалили базу

Без баз данных и систем управления ими (СУБД) в интернете никуда. Большая часть современных CMS и «самописных» движков, на которых развернуты сайты, используют MySQL. Поэтому ее можно смело назвать «всея интернетной» системой управления базами данных.

В этой статье мы рассмотрим все основные способы восстановления утраченной информации. По мере написания материала будем «набирать обороты», и начнем с самых простых методов, ближе к концу коснемся более сложных. Каждый из рассмотренных методов постараемся иллюстрировать практическими примерами. Что касается синтаксиса запросов, то мы не будем подробно останавливаться на описании параметров каждой команды. Благо, в интернете этой справочной информации «с лихвой».

Быстрый способ восстановления

Чаще всего работа с БД в интернете происходит через phpMyAdmin, который является веб-интерфейсом для данной СУБД. Чтобы восстановить базу MySQL вручную:

Зайдите в phpMyAdmin и выберете нужную БД.

Перейдите по вкладке «Импорт», которая расположена в главном верхнем меню.

В разделе «Импортируемый файл» выберете источник резервной копии нужной базы.

Нажатие на кнопку «Ok».

После этого вместо текущей версии БД будет загружена ранее сохраненная. Стоит отметить, что данный веб-интерфейс не подходит для бэкапа больших массивов данных, поскольку максимальный поддерживаемый размер загружаемой базы составляет всего 2 Мб.

В phpMyAdmin не реализована функция автоматического создания резервных копий, а лишь вручную. Весь процесс резервирования происходит через вкладку «Экспорт». Здесь вы можете задать формат копии, способ вывода и экспорта.

Работа через MySQLdump

MySQLdump представляет собой веб-приложение, работающее на стороне сервера. Оно предназначено для восстановления баз MySQL из резервных копий, созданных с помощью приложения. Чтобы сильно «не зарываться», мы продемонстрируем создание простого бэкапа и восстановление из него БД. В качестве площадки для эксперимента используем самый популярный локальный сервер Рунета Denwer.

Для начала нужно скачать MySQLdump и поместить его по следующему адресу: F:\Webserver\usr\local\mysql-5.5\bin

MySQLdump является консольным приложением, поэтому вся последующая работа с ним будет происходить через командную строку (cmd.exe). Теперь поэтапно:

Запускаем Denwer.

Через командную строку заходим на виртуальный диск (в примере – это диск Z).

Заходим в папку, где «лежит» MySQLdump.

После этого запускаем утилиту на выполнение. Перед тем, как восстановить БД MySQL, в качестве примера создадим в папке bin резервную копию базы my_db1, и назовем бэкап «db1». Для этого мы используем команду mysqldump.

Теперь восстановим из созданной копии (db1) другую базу данных. Для этого используем команду mysql.

Код примеров использования обеих команд:

C:\Users\домашний>Z: Z:\>cd usr\local\mysql-5.5\bin Z:\usr\local\mysql-5.5\bin>mysqldump -uroot my_db1>db1.sql Z:\usr\local\mysql-5.5\bin>mysql -uroot db2

C : \ Users \ домашний> Z :

Z : \ > cd usr \ local \ mysql - 5.5 \ bin

Z : \ usr \ local \ mysql - 5.5 \ bin > mysqldump - uroot my_db1 > db1 . sql

Z : \ usr \ local \ mysql - 5.5 \ bin > mysql - uroot db2 < db1 . sql

Если немного присмотреться к коду, то можно заметить, что обе команды имеют общий синтаксис. Единственное, что их различает – это названия источников данных и копий. А также знак направления движения данных («<», «>»).

uroot – это имя пользователя. Оно указывается сразу после параметра u (без пробела). Кроме этого синтаксис команд включает еще несколько параметров. Среди них: пароль, адрес удаленного хоста. С помощью команды mysqldump можно экспортировать БД в различные форматы, сжимать данные. Также это проверенный способ, как можно восстановить таблицу MySQL.

Утилита MySQLdump (с помощью одноименной команды) позволяет экспортировать базы в простом текстовом формате (.txt). А так как текст обладает высокой степенью сжатия, то это эффективный способ уменьшения объемов бэкапов, в ситуации, когда наблюдается «дефицит» серверного пространства.

Что можно сделать еще

Кроме рассмотренных двух основных методов для восстановления данных MySQL можно использовать еще несколько консольных утилит:

MySQL-консоль

Mysqlbinlog – для формирования бэкапов программа импортирует данные из серверных журналов бинарных логов. В них записываются все пользовательские и системные запросы (в бинарном коде), после выполнения которых были изменены данные баз.

Также для популярных CMS разработано множество специализированных плагинов. Например, для WordPress:

Keep Backup Daily.

UpdraftPlus Backup and Restoration.

Perfect Dashboard.

Как видите, восстановление MySQL не является такой уж невыполнимой задачей. Все утраченные БД и таблицы можно «вернуть» на место. При этом используются как «ручные» средства, так и специализированные расширения для CMS. Вам осталось выбрать лишь самое подходящее решение. Для более глубокого ознакомления с работой базы данных MySQL, рекомендую пройти Вам наш .



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: