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

Восстановление базы данных

Через ПУ

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

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

2. Удалите базу данных в разделе «Базы данных MySQL».

3. Создайте точно такую же базу данных, с таким же именем и паролем.

4. Перейдите в раздел «Резервные копии» панели управления аккаунтом.

5. Выберите вкладку «Базы данных».

6. Выберите из списка доступную дату с сохраненной резервной копией.

7. Напротив «Восстановить» напротив нужной базы.

8. Подтвердите восстановление, нажав на кнопку «ОК».

Через phpMyAdmin

1. Откройте раздел «Базы данных MySQL» панели управления аккаунтом.

2. Перейдите по ссылке «phpMyAdmin» рядом с именем базы данных, в которую следует загрузить дамп. При переходе понадобится ввести пароль базы данных.

3. В открывшейся панели перейдите в раздел «Импорт», расположенный в верхнем меню.

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

5. После нажатия кнопки «Вперед» таблицы будут загружены в базу данных.

Восстановление отдельных таблиц БД через phpMyAdmin

1. Откройте раздел «Базы данных MySQL» панели управления аккаунтом.

2. Перейдите по ссылке «phpMyAdmin» рядом с именем нужной базы данных.

3. В открывшейся панели отметьте таблицы, которые необходимо восстановить.

4. Перейдите в самый низ страницы и нажмите на выпадающее меню «С отмеченными».

5. Выберите вариант «Восстановить таблицу».

При подключении по SSH

Подключитесь к серверу хостинга по SSH и используйте одну из команд ниже.

Для восстановления базы данных из дампа (при условии, что дамп не был сжат и имеет расширение .sql) в SSH-клиенте необходимо выполнить команду:

Для дампа с расширением .sql.zip необходимо выполнить команду:

Для дампа с расширением .sql.gz:

Для дампа с расширением .sql.bz2:

Возможные ошибки

Процесс прерывается из-за ограничений на хостинге

ERROR #1273: Unknown collation

При импорте может наблюдаться подобная ошибка:

В этом случае, оставив исходный файл без изменений, создайте копию дампа, заменив в ней строки, отвечающие за Collation и кодировку:

После чего осуществите импорт измененного дампа стандартным способом.

ERROR #1062: Duplicate entry

Может встречаться ошибка:

В этом случае, оставив исходный файл без изменений, создайте копию дампа и внесите в него изменения командой:

После импортируйте измененный дамп как обычно.

Источник

Восстановление базы MySQL: подробное руководство

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

Форматы таблиц

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

Не так просто с, казалось бы, удобным форматом InnoDB. Обеспечивающий хорошее быстродействие, самостоятельно восстанавливающийся и не боящийся сбоев электропитания (вероятно, поэтому и стал популярен у нас), InnoDB потребует для принудительного восстановления кое-каких усилий.

Общая схема восстановления

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

Предварительно нужно остановить все сервисы, чтобы максимально разгрузить базу.

Опция innodb_force_recovery прописывается в файле конфигурации MySQL; расположение зависит от того, какая операционная система используется. Путь может иметь вид:

Уточним, что речь идет о пути по умолчанию – в любом случае поиск файла конфигурации много времени занять не должен.

Важно! Для опции innodb_force_recovery можно прописать несколько значений. В варианте «по умолчанию» она выглядит так: innodb_force_recovery = 0. Любое число вместо нуля (от 1 до 6) позволяет провести восстановление не только собственно таблиц базы данных, но и процессов, которые не были завершены из-за аварийного завершения работы.

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

В файле my.cnf innodb_force_recovery прописывается в раздел [mysqld]. Включение опции потребует перезапуска сервера базы данных MySQL.

Начинать восстановление с помощью этой опции можно лишь при наличии как минимум копий:

Работа с опцией innodb_force_recovery

Основное правило работы по восстановлению с использованием innodb_force_recovery – последовательное изменение значений от 1 до 6:

Выставлять значения от 4 до 6 не рекомендуется, особенно если у вас нет большого опыта в работе с БД MySQL: риск потерять данные многократно возрастает. Однако опция innodb_force_recovery = 4/5/6 дает возможность с использованием простых функций делать выборку из таблиц, выявляя поврежденные.

Снижение вероятности повреждения БД

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

Например, в Timeweb можно воспользоваться удобной услугой «Резервная копия по требованию». Запросить бекап можно в любой момент и хранить неограниченный период времени.

Источник

Восстановление MySQL баз данных ручными и «механическими» способами

Дата публикации: 2016-04-04

Как восстановить базу данных mysql. Смотреть фото Как восстановить базу данных mysql. Смотреть картинку Как восстановить базу данных mysql. Картинка про Как восстановить базу данных mysql. Фото Как восстановить базу данных mysql

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

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

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

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

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

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

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

Как восстановить базу данных mysql. Смотреть фото Как восстановить базу данных mysql. Смотреть картинку Как восстановить базу данных mysql. Картинка про Как восстановить базу данных mysql. Фото Как восстановить базу данных mysql

Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

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

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

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

Как восстановить базу данных mysql. Смотреть фото Как восстановить базу данных mysql. Смотреть картинку Как восстановить базу данных mysql. Картинка про Как восстановить базу данных mysql. Фото Как восстановить базу данных mysql

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

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

Как восстановить базу данных mysql. Смотреть фото Как восстановить базу данных mysql. Смотреть картинку Как восстановить базу данных mysql. Картинка про Как восстановить базу данных mysql. Фото Как восстановить базу данных mysql

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

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

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

Как восстановить базу данных mysql. Смотреть фото Как восстановить базу данных mysql. Смотреть картинку Как восстановить базу данных mysql. Картинка про Как восстановить базу данных mysql. Фото Как восстановить базу данных mysql

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

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

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

Как восстановить базу данных mysql. Смотреть фото Как восстановить базу данных mysql. Смотреть картинку Как восстановить базу данных mysql. Картинка про Как восстановить базу данных mysql. Фото Как восстановить базу данных mysql

Как восстановить базу данных mysql. Смотреть фото Как восстановить базу данных mysql. Смотреть картинку Как восстановить базу данных mysql. Картинка про Как восстановить базу данных mysql. Фото Как восстановить базу данных mysql

Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

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

Как восстановить базу данных mysql. Смотреть фото Как восстановить базу данных mysql. Смотреть картинку Как восстановить базу данных mysql. Картинка про Как восстановить базу данных mysql. Фото Как восстановить базу данных mysql

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

Источник

Восстановление базы данных и пароля root в MySQL

Сейчас читают:

Восстановления базы из дампа

Через phpMyAdmin

В основном, пользователи работают с MySQL через панель phpMyAdmin, поэтому ниже приведен наиболее простой способ сделать восстановление из бэкапа вручную. Чтобы восстановить базу из дампа, нужно выполнить несколько действий:

Как увеличить объем импортируемых баз данных

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

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

Способы увеличения лимитов на исполнение php-скриптов

После чего добавить туда же переменную, снимающую ограничения со времени исполнения скриптов (после загрузки базы данных ее лучше убрать):

Добавляем в конце файла строки:

Добавляем в файл строки:

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

1. Если нужно восстановить БД MySQL как новую, порядок действий будет отличаться. Сначала нужно создать базу данных, с тем же названием, как и на сервере.

2. Далее следует загрузить файл дампа SQL с помощью команды «mysql»:

3. В случае, когда дамп был сделан до того, поможет следующая команда:

Следовательно, этими командами можно осуществить восстановление базы данных MySQL без особых трудностей.

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

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

Форматы таблиц

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

Другой популярный формат таблиц — InnoDB. Он обладает более высоким быстродействием, снабжен функцией автоматического восстановления и устойчив к сбоям. Однако, для его ручного ремонта потребуется приложить некоторые усилия.

Общий принцип восстановления

Восстановление базы с использованием формата InnoDB можно выполнить благодаря опции innodb_force_recovery. Она будет находиться в конфигурационном файле MySQL.

Однако, если select … into out file не сработала (например, помешали незаконченные процессы), чтобы восстановить базу из файлов .frm, остается прибегнуть к расширенному параметру innodb_force_recovery.

1. Сначала нужно прописать в конфигурационном файле MySQL опцию innodb_force_recovery.

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

В дистрибутивах Linux:

«SYSCONFDIR» — подкаталог, который использовался для компилирования MySQL (по умолчанию — etc ).

В файле предусмотрена возможность установить для innodb_force_recovery несколько параметров. По умолчанию опция будет иметь вид «innodb_force_recovery = 0». Если установить другие числа (от 1 до 3) можно не только восстановить данные таблицы MySQL, но и процессы, незавершенные из-за аварийной остановки.

Чтобы применить данный параметр, следует перезапустить сервер MySQL.

Замена значений параметра

Главное, чего нужно придерживаться во время работы с innodb_force_recovery – последовательно менять значения параметров от 1 до 3 и перезапускать после этого сервер.

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

Пользоваться значениями 4, 5 и 6 не стоит тем, кто не имеет достаточного опыта работы с MySQL таблицами. С их применением в несколько раз возрастает вероятность полной потери информации.

Восстановление пароля

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

Использование init-file

Во время запуска MySQL есть возможность сообщить сервису о файле, в котором находятся исполняемые команды SQL. Его адрес следует указать с помощью параметра «init-file».

1. В первую очередь необходимо создать файл «init-file»:

2. Далее нужно добавить в файл следующую строку:

3. Далее следует отключить сервис, если он работает:

4. Затем можно запустить свой файл:

5. Остается подождать немного, пока все будет работать, как надо, и далее остановить данный процесс. В терминале будет отображен вывод «started as proccess» и PID (номер-идентификатор) процесса. Последний как раз и нужно выключить. К примеру*:

* Значение PID приведено для примера. Следует заменить его на актуальное.

6. Теперь можно запустить MySQL стандартным способом и попробовать авторизоваться с помощью нового пароля:

Использование skip-grant-tables

1. Здесь также сначала требуется отключить базу данных:

2. Дальше нужно запустить вручную MySQL следующей командой:

3. Теперь можно открыть консоль для работы с MySQL:

4. Поскольку загрузка была осуществлена без привилегий пользователей, таблицы с ними теперь нужно подгрузить:

5. На этой стадии можно менять пароль пользователя root:

6. Можно закрывать консоль управления:

7. Остается выключить сервис*, как и в приведенном выше способе:

* Значение PID приведено для примера. Следует заменить его на актуальное.

8. И, наконец, запустить MySQL в стандартном режиме работы:

9. После этого появится возможность авторизации с помощью нового пароля:

Начни экономить на хостинге сейчас — 14 дней бесплатно!

Источник

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

В данном примере показано восстановление из заранее сделанного dump-файла (с помощью mysqldump). Если нужна инструкция по созданию резервной копии, читайте Как сделать дамп базы MySQL.

Подготовка базы

Подключаемся к командной оболочке mysql:

* данной командой мы подключимся к СУБД под пользователем root. Опция -p потребует ввода пароля.

Для восстановления базы сначала необходимо ее создать:

> CREATE DATABASE db DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

При необходимости, также создаем пользователя, который будет иметь доступ к базе:

> GRANT ALL PRIVILEGES ON db.* TO dbuser@localhost IDENTIFIED BY ‘password’ WITH GRANT OPTION;

Подробнее про создание баз читайте на странице Создание и удаление баз в MySQL/MariaDB.

Из файла через командную строку

Если при создании дампа использовалась gzip, сначала распаковываем архив:

Для удобства, создадим переменную с именем базы:

Команда выполняется из UNIX-shell:

* в данном примере выполняется копирование содержимого таблицы table_name из базы данных new_database_name в базу database_name.

2. Резервирование только одной таблицы.

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

После чего уже выполняем восстановление из дампа.

Возможные ошибки

В процессе восстановления мы можем столкнуться с разными ошибками. Рассмотрим их примеры.

MySQL server has gone away

Во время восстановления базы может выскочить ошибка:

at line xxx: MySQL server has gone away.

Как правило, ее причина в низком значении параметра max_allowed_packet, который отвечает за ограничение выполнения команд из файла. Посмотреть текущее значение можно командой в mysql:

> SHOW VARIABLES LIKE ‘max_allowed_packet’;

Чтобы увеличить значение параметра, открываем конфигурационный файл my.cnf:

* в некоторых версиях СУБД конфиг может находится по пути /etc/my.cnf.d/server.cnf.

В разделе [mysqldump] редактируем или добавляем:

[mysqldump]
.
max_allowed_packet = 512M

* значение для данного параметра не обязательно должно быть таким большим.

systemctl restart mariadb || systemctl restart mysql

Row size too large

Ошибка выскакивает после небольшого времени работы восстановления. Более полный текст выглядит, примерно, так:

ERROR 1118 (42000) at line 608: Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.

Причина: ошибка встречается, если в нашей базе есть большое количество текстовых полей и мы используем таблицы типа INNODB. По умолчанию, они имеют ограничение на объем данных, которые можно хранить в одной строке таблицы.

Решение:

Для решения проблемы мы можем добавить опцию innodb_strict_mode со значением 0. Данная опция регламентирует более строгий режим работы СУБД. Это грубое решение, которое позволит нам добиться результата, но мы можем выполнить настройку тонко — об этом можно прочитать на соответствующей странице блога mithrandir.ru.

Мы же сделаем все по-быстрому. Открываем конфигурационный файл СУБД — его местоположение зависит от версии и реализации, например:

* это пример расположения для базы MariaDB 10. Более точное расположение можно найти в файле /etc/my.cnf.

Приводим опцию innodb_strict_mode к виду:

[mysqld]
.
innodb_strict_mode = 0

systemctl restart mariadb

* в данном примере мы перезапустили сервис для mariadb.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *