[MySQL]"Ну у Вас и запросы!" - сказала база данных и повисла. Восстановление баз данных после падения MySQL (и для ISP)

pligin

Команда форума
Администратор
И так Вы лишились MySQL сервера по понятным или непонятным причинам: косяк при обновлении, ошибка системы, кривые руки и т.п.
И, как назло, бэкапов нет либо они уже "старенькие"... суточной давности. Или у Вас ISPManager и надеяться на правильную работу системы резервного копирования бесполезно. Почему, спросите Вы? Мне всего два раза нужно было воспользоваться резервным копированием:
- первый раз - нужно было переехать с одного сервера на другой, резервное копирование не помогло, постоянно были ошибки при восстановлении и импорте, не все данные переносились... пришлось по старинке: скачать бэкап, а потом из него восстанавливать данные... но, признаюсь, пару скачанных архивов смогли вернуться на сервер через импорт пользователя... не идеально, пришлось немного править, но загрузились;
- второй раз - сегодня ночью, когда после обновления упал сервер MySQL и я долго искал решение, но в итоге решил просто переустановить все начисто, у меня же есть резервные копии!))), подумал я. Но я предусмотрительно сделал бэкапы самостоятельно по старинке, загрузив все в архивы и скачав на комп. В то время как я пытался на этой же панели что-нибудь восстановить я заметил, что одной резервной копии с предыдущих суток нет (просто не сделалась судя по логам), пользовательские резервные копии не помогли, т.к. они делались после падения MySQL и, естественно, баз данных в них не было. Но они (базы данных) были в предыдущих бэкапах. Я попробовал восстановить бэкапы дневной, двухдневной, недельной давности... ни один не смог восстановить мне пользователя. не данные, а даже пользователя создать никак... Я всю ночь с этим воевал. Потом плюнул, перепроверил наличие скачанных архивов каталогов с сайтами и базами и поставил заново сервер и ISPManager и действовал по описанной ниже схеме.
Первое, что нужно сделать - прекратить панику.
Второе найти каталог с базами данных и их таблицами
Код:
grep datadir /etc/my.cnf
datadir=/var/lib/mysql
или
Код:
grep -r datadir /etc/mysql/
Пример вывода:
Код:
/etc/mysql/mariadb.conf.d/50-server.cnf:datadir = /var/lib/mysql
Наш каталог с базами тут /var/lib/mysql
Нужно создать бэкап содержимого этого каталога /var/lib/mysql за исключением каталога /var/lib/mysql/mysql, /var/lib/mysql/performance_schema и других служебных баз и таблиц и потом его удалить.
Далее нужно установить заново MySQL сервер или, если нет возможности заново установить (напортачили с пакетами и т.п., короче не знаете как запустить эту чертову штуковину), то переустановить систему и установить MySQL на чистую машину (так как обычно Вы это и делаете).
После установки опять нужно найти каталог, в котором хранятся базы и таблицы. Это для тех, кто решил поменять ОС или панель.
Далее останавливаете MySQL:
Код:
service mysqld stop
[/CODE
ИЛИ
[CODE]
/etc/init.d/mysqld stop
Код:
##  mariadb ##
systemctl start mariadb
## mysql
systemctl start mysqld
Код:
/etc/init.d/mysql start
ИЛИ
Код:
service mysql start
Из бэкапа с Вашими базами и таблицами закидываете все в каталог с базами только что установленного MySQL (/var/lib/mysql/)
Запускаете MySQL
Код:
service mysqld start
[/CODE
ИЛИ
[CODE]
/etc/init.d/mysqld start
Код:
##  mariadb ##
systemctl start mariadb
## mysql
systemctl start mysqld
Код:
/etc/init.d/mysql start
ИЛИ
Код:
service mysql start
Если все сделано правильно, то MySQL запустится без ошибок.
Подключаетесь к mysql с правами root
Код:
mysql -uroot -pваш_пароль
Проверяете наличие баз данных
Код:
show databases;
появится список с Вашими базами данных.
Базы данных теперь есть, но пользоваться ими Вы не сможете, т.к. нет пользователей для них.
Нужно создать пользователя для каждой базы данных, если, конечно, Вы не желаете одному пользователю дать доступ ко всем базам
Код:
CREATE USER 'user_name'@'localhost' IDENTIFIED BY 'user_password';
GRANT ALL PRIVILEGES ON data_base . * TO 'user_name'@'localhost';
FLUSH PRIVILEGES;
на этом восстановление закончено. Теперь пользователь user_name может спокойно подключаться к БД data_base с паролем user_password, а в БД data_base находятся наисвежейшие данные, т.к. бэкап делался после "падения" MySQL
Базы данных находятся по пути /var/lib/mysql/ .
Нужно создать бэкап содержимого этого каталога /var/lib/mysql за исключением каталога /var/lib/mysql/mysql, /var/lib/mysql/performance_schema и других служебных баз и таблиц и потом его удалить.
Со 100% вероятность скажу, что MySQL Вы уже устанавливать не будете, а полностью переустановите чистую ОС и инсталируете ISPManager 5 Lite, потому как это будет намного быстрее, нежели искать проблемы, а потом их решения.
После чистой установки ISPManager 5 Lite и установки MySQL сервера нужно остановить MYSQL
Система -> Службы -> mariadb (mysql) и нажать "Стоп"
5293
Закинуть из бэкапа /var/lib/mysql в каталог /var/lib/mysql
Запустить MySQL там же где и останавливали Система -> Службы -> mariadb (mysql) и нажать "Старт"
Далее перейти Настройки -> Серверы баз данных и там значок "Свободные БД" - нажимаете его.
5294
и далее Вы увидите список своих баз данных. Выделяете их все или только нужные для конкретного пользователя и нажимаете "Передать", выбираете пользователя, которому их нужно передать и подтверждаете выбор.
Далее заходите в инструменты -> Базы данных и там отобразится список всех Ваших восстановленных баз данных. Но пользоваться ими Вы не сможете, т.к. нет для них пользователей mysql.
Для добавления пользователя выбираете нужную базу данных и в верху нажимаете пользователи, в открывшейся вкладке нажать "Создать" и создаете нового пользователя с нужным именем и нужным паролем для выбранной базы данных.
На этом восстановление баз данных для ISPManager 5 Lite завершено и Вы не потеряли ни единой записи в базах, т.к. бэкап баз Вы делали уже после выключения MySQL.
И чтобы Вам об этом всем рассказать, мне пришлось потратить всю ночь. Одно ожидание только полночи было, т.к. данных было много и они исчислялись в Гб. И до утра у меня теплилась надежда на успешное восстановление из резервной копии... нужно было сразу все удалять и устанавливать заново, т.к. ISPManager в этом плате бесполезна и тогда бы я поспал)
После того как я принял решение все снести и поставить заново, на все описанные операции у меня ушло не больше часа времени вместе с загрузкой архивов... и поэтому утро у меня было добрым и я радостный пошел на работу.
Надеюсь Вам эта информация помогла, а может кого-то и спасла) Всем удачи!

5295
 
Последнее редактирование:
Верх