Что делать при ошибках базы данных MySQL

ispravlyaem-oshibki-mysqlЗдравствуйте!

Сегодняшняя заметка будет касаться только достаточно ‘узкой’ категории читателей блога — речь пойдет о базах данных MySQL (и ошибках, при работе с ними…).

Вообще, подобные базы данных используются многими движками сайтов (CMS), причем некоторые из них не блещут высокой безопасностью… Кроме этого, к базе MySQL возможен прямой доступ через веб-интерфейс. А если добавить к этому ошибки при копировании и переносе БД (что бывает очень часто), то, разумеется, всё это вкупе создает определенные риски для данных… &#x1f622,

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

И так…

Несколько рекомендаций, если возникла ошибка с MySQL БД

Совет 1

Если вы накануне никак не взаимодействовали с БД (например, не переносили сайт с одного сервера на другой), и всё работало в штатном режиме — возможно, что ошибка недоступности к базе связана с возникшими проблемами на стороне хостинг-компании (⇒ запрос в поддержку…).

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

Например, в такой популярной CMS как WordPress, файлом для настройки доступа к БД явл. wp-config.php.

Параметры MySQL — эту информацию можно получить у хостинг-провайдера

Совет 2

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

Кроме этого, как только возникла какая-то ошибка с БД — я бы порекомендовал в любом случае сделать ее копию (если это возможно). Вдруг диск начал ‘сыпаться’, и в дальнейшем даже текущая БД исчезнет ‘на совсем’…

PHP My Admin — экспорт базы данных

Совет 3

Далее следует попробовать провести восстановление БД встроенными средствами MySQL…

Итак, что нужно сделать в случае, если БД MySQL перестала запускаться: 

  1. Откройте файл my.cnf и установите следующий параметр: innodb_force_recovery = 1, 
  2. Перезапустите MySQL следующей командой: /etc/init.d/mysql restart, 
  3. Сделайте дамп БД и запакуйте его: mysqldump db | gzip &gt, db.sql.gz, 
  4. Создайте новую БД: mysql -e create database “new_DB’, 
  5. Импортируйте туда данные: zcat database.sql.gz | mysql new_DB. 

Примечание!

my.cnf — это файл конфигурации MySQL. Чтобы найти файл, используйте команду: locate my.cnf

В Linux’e обычно он находится по такому пути:

/etc/my.cnf # либо /etc/mysql/my.cnf

Перезапуск MySQL подобным образом не ведет к запуску всех связанных процессов и в некоторых случаях позволяет открыть старую БД. 

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

Если это получается, старую БД можно удалить. Кстати, если способ не помогает, и старая база не запускается, нужно пробовать другие значения параметра innodb_force_recovery, вплоть до 6. 

MySQL

MySQL

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

Благодаря опции innodb_force_recovery можно отключить некоторые параметры, которые мешают штатному запуску БД.

Цифры означают следующее: 

  1. Запуск MySQL не останавливается, даже если система в процессе запуска обнаруживает поврежденные страницы,
  2. Отмена запуска фоновых операций,
  3. Отмена попыток отката транзакций,
  4. Отказ от расчета статистики и использования сохраненных изменений,
  5. Не учитывает логи отката при запуске,
  6. Не учитывает параметры ib_logfiles во время запуска.

Совет 4 (альтернативный способ восстановления БД)

Описанный выше способ довольно эффективен, хотя, к сожалению, может оказаться сложным для некоторых пользователей. Но работа с любым форматом базы данных — это всегда непросто…

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

Recovery Toolbox for MySQL — скриншот главного окна программы

Recovery Toolbox for MySQL — скриншот главного окна программы

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

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

Стоит сразу отметить, что Recovery Toolbox for MySQL работает только с копией базы, поэтому никогда не испортит то, что осталось от старой БД. Почувствуйте разницу, копаясь в конфигах и настройках «боевого» сервера, и каждую минуту опасаясь сделать что-то неправильно, что приведет к полному уничтожению того, что еще осталось…

Как восстановить базу с помощью Recovery Toolbox for MySQL:

Для восстановления поврежденной БД MySQL при помощи этой программы нужно сделать следующее:

  1. Скачать Recovery Toolbox for MySQL с офиц. сайта: https://mysql.recoverytoolbox.com/ru/,
  2. Установить и запустить программу,
  3. Выбрать папку, в которой хранятся файлы поврежденной базы данных MySQL (предварительно создайте копию),
  4. Выбрать поврежденную базу данных из списка
  5. Запустить анализ выбранной БД,
  6. Просмотреть результаты восстановления: таблицы, объекты, индексы,
  7. Настроить способ сохранения восстановленных данных,
  8. Сохранить данные (доступно в полной версии). Пример на скриншоте ниже. &#x1f447,

Пример восстановления БД

Пример восстановления БД

Программа загружается совершенно бесплатно и устанавливается без регистрации. С помощью Recovery Toolbox for MySQL можно бесплатно просматривать восстановленные данные, оценивать эффективность работы.

Можно даже подсмотреть какие-то изменения и легко внести их руками в «протухший», но еще пригодный к использованию бэкап. Заплатить предложат только в том случае, если потребуется сохранить восстановленные данные, пересоздать базу MySQL и подключить ее к системе.

База восстановлена - сохранить?

База восстановлена — сохранить?

‘Пару слов’ о безопасности при работе с Recovery Toolbox for MySQL

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

Также стоит отметить, что Recovery Toolbox for MySQL не использует сторонние подключения. В процессе восстановления (может занять довольно продолжительное время, в зависимости от размеров исходной базы данных) ПО не использует доступ к Интернет.

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

Есть способ чуть сложнее: установить анализатор сетевого траффика (советую WireShark, NetLimiter) и проверить, не идут ли подозрительные пакеты от Recovery Toolbox for MySQL.

В помощь!

Как запретить программе доступ к интернету (блокировка входящего/исходящего трафика)

Конечно, этот способ предполагает некий здоровый энтузиазм, желание познать новое (мануалы на WireShark совсем немаленькие) и, самое главное, наличие свободного времени…

Пост по заметкам

от компании Recovery Toolbox

Оцените статью
avege.ru
Добавить комментарий