Как восстановить файлы InnoDB MySQL с помощью XAMPP в Windows

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

Хотя были новые резервные копии, я спросил себя, что бы сделал кто-то без резервных копий в случае такого неудачного события. К моему удивлению, многие разработчики утверждают, что восстановить базы данных из InnoDB очень сложно только с папкой данных MySQL, однако я попробовал базовую комбинацию и, к счастью, смог экспортировать практически все базы данных из файлов с дампом MySQL. Сегодня я расскажу вам, как экспортировать файлы .sql из всех файлов idb и frm в папке данных MySQL в Xampp для Windows.

Важная информация

Стоит сказать, что Вы столкнетесь с этой ситуацией и примените это решение только в случае крайней необходимости., где вы были достаточно безответственны, чтобы не делать резервные копии ваших баз данных, или им просто больше месяца. Это означает, что решение не гарантирует 100% целостность ваших баз данных, так как некоторые из них могут оказаться поврежденными, и вы не сможете их сбросить (однако в такой ситуации стоит попробовать).

Требования

Чтобы попытаться восстановить данные старой установки MySQL в новую, вам потребуется:

  1. Чистая установка XAMPP (с той же или более поздней версией MySQL), которая работает, и вы готовы ее уничтожить.
  2. Полная копия папки данных mysql с сервера, которую вы пытаетесь восстановить, например /var/lib/mysql в Ubuntu с установкой Plesk. Эта копия включает в себя все данные из ваших баз данных, в том числе ibdata1, ib_logfile0 а также ib_logfile1 файлы.
  3. Много удачи (правда, оно тебе понадобится).

Сказав это, давайте начнем!

1. Сделайте копию содержимого MySQL / данных вашего сервера

Первый шаг, очевидно, имеет копия папки данных MySQL, которую вы хотите восстановить в XAMPP (например, / var / lib / mysql в Linux). Мы предполагаем, что у вас есть все содержимое папки данных mysql, которая не работает на вашем сервере, и мы постараемся восстановить ее.

Эти данные имеют формат папок с именем каждой из ваших баз данных, внутри этих папок вы найдете файлы IDB и FRM, которые теоретически содержат данные ваших баз данных, и вы сможете восстановить их, если они не повреждены. :

Заметка

Также создайте резервную копию исходных данных в папке данных Xampp, на случай, если вы хотите, чтобы все работало, прежде чем начинать работу с этим руководством.

Содержимое папки данных MySQL

Получив эти данные, перейдите к следующему шагу.

2. Добавить контент в локальную папку mysql / data

Следующим шагом вам нужно создать резервную копию вашей папки mysql / data в xampp на случай, если что-то не получится, поэтому вам нужно будет использовать только старое содержимое mysql / data, и все снова будет нормально. В локальной папке mysql / data XAMPP вам нужно будет удалить весь исходный контент, кроме следующих каталогов (они не могут измениться, поэтому обязательно удалите эти каталоги из данных вашего сервера):

  • MySQL (каталог)
  • mysql_upgrade_info (файл)
  • performance_schema (каталог)

Затем добавьте содержимое с вашего сервера (шаг 1), не заменяя ранее упомянутые файлы и каталоги.

3. Запустите сервер MySQL

После вставки содержимого запустите службу mysql из панели управления:

MySQL Service Xampp

В случае, если сервер не может запуститься

Если сервер не может запуститься из-за поврежденных таблиц в некоторых ваших базах данных, вы можете принудительно запустить его с помощью восстановления InnoDB. Для этого измените my.cnf (в Windows my.ini в C:/xampp7/mysql/bin) файл MySQL и добавьте 2 новых свойства, а именно innodb_file_per_table а также innodb_force_recovery в блоке mysqld:

[mysqld]
# Increment this until the server starts up to a value of 6 if it the
# server can't start after pasting the new /mysql/data content
# See: https://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html
innodb_force_recovery = 2
innodb_file_per_table=1

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

4. Дамп базы данных

Используя командную строку, переключитесь на каталог двоичных файлов MySQL при установке Xampp, обычно C:\xampp\mysql\bin:

cd C:\xampp\mysql\bin

И запустите консоль mysql с правами root или любого другого пользователя, которого вы использовали при установке Xampp:

Заметка

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

mysql -u root

Это откроет консоль mysql, это означает, что вы можете запускать запросы, в частности тот, который перечисляет все базы данных, доступные на движке (SHOW DATABASES;):

Список баз данных Xampp

Наконец, выйдите из процесса mysql в командном процессе и начните с экспорта ваших баз данных с помощью mysqldump:

mysqldump -u root -p DATABASE_NAME > OUTPUT_DATABASE_BACKUP.sql

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

Информация

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

  1. Восстановление поврежденной таблицы InnoDB.
  2. Как восстановить InnoDB MySQL файлы с помощью MAMP на Mac.
  3. Как восстановить данные из файлов InnoDB IDB и FRM.
  4. Восстановить таблицу из файлов frm и idb в InnoDB.

Счастливого выздоровления!

Ссылка на основную публикацию
Adblock
detector