Допустим у нас есть сервер на Linux с базой MySQL. И нам понадобилось сделать копию сервера с живого рабочего. Или поднять из бэкапа, который был сделан со снапшота.
Вроде бы проблем быть не должно, но часто при таком переносе ломается InnoDB. Ниже приведу пример, как можно это исправить.
Заходим на сервер через консоль и необходимо сделать выгрузку всех баз. Если MySQL постоянно падает или не поднимается, то в некоторых случаях помогает следуюющее: вписать в конфиг файл /etc/my.cnf строчку в разделе [mysql]
innodb_force_recovery = 4
После этого надо запустить mysql
service mysqld start
Далее делаем бэкап наших баз
mysqldump -uroot -pMyPassword -A > /home/dumpall.sql
где root это логин в MySQL и MyPass пароль. Заменить надо на свои.
После как будет готово останавливаем MySQL
service mysqld stop
На всякий случай можно скопировать содержимое папки /var/lib/mysql
cp -r /var/lib/mysql/* /home/mysql_backup/
Удаляем содержимое папки mysql
rm -rf /var/lib/mysql/*
И стартуем mysql
service mysqld start
После этого будет заново создана структура системной базы
На всякий случай перезапустим mysql
service mysqld stop
service mysqld start
Если всё нормально, то можем приступать к залитию дампа обратно
mysql -uroot -pMyPassword < /home/dumball.sql
Бывает, что после создания заново структуры системны баз возникают проблемы со входом пользователя root, что делает невозможным залить базу. Для исправления этого понадобится сбросить пароль на нужный
Остановим mysql и запустим его с другими параметрами
service mysql stop
mysqld_safe --skip-grant-tables &mysqld_safe --skip-grant-tables &
Далее подключаемся к mysql и сбрасываем пароль на MyPassword (впишите свой)
mysql
use mysql;
update user set authentication_string=PASSWORD("MyPassword") where User='root';
flush privileges;
quit;
service mysql stop
service mysql start
mysql -uroot -pMyPassword
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyPassword';
flush privileges;
quit;
После этого шага необходимо залить базу обратно командой mysql -uroot -pMyPassword < /home/dumball.sql
dumpInnoDBLinuxmysqlmysqldmysqldump
Восстановление InnoDB после переноса сервера
6 July 2020
*NIX, Backup, Linux, MySQL
No Comments
bakabuka
Допустим у нас есть сервер на Linux с базой MySQL. И нам понадобилось сделать копию сервера с живого рабочего. Или поднять из бэкапа, который был сделан со снапшота.
Вроде бы проблем быть не должно, но часто при таком переносе ломается InnoDB. Ниже приведу пример, как можно это исправить.
Заходим на сервер через консоль и необходимо сделать выгрузку всех баз. Если MySQL постоянно падает или не поднимается, то в некоторых случаях помогает следуюющее: вписать в конфиг файл /etc/my.cnf строчку в разделе [mysql]
После этого надо запустить mysql
Далее делаем бэкап наших баз
После как будет готово останавливаем MySQL
На всякий случай можно скопировать содержимое папки /var/lib/mysql
Удаляем содержимое папки mysql
И стартуем mysql
После этого будет заново создана структура системной базы
На всякий случай перезапустим mysql
Если всё нормально, то можем приступать к залитию дампа обратно
Бывает, что после создания заново структуры системны баз возникают проблемы со входом пользователя root, что делает невозможным залить базу. Для исправления этого понадобится сбросить пароль на нужный
Остановим mysql и запустим его с другими параметрами
Далее подключаемся к mysql и сбрасываем пароль на MyPassword (впишите свой)
После этого шага необходимо залить базу обратно командой mysql -uroot -pMyPassword < /home/dumball.sql
dumpInnoDBLinuxmysqlmysqldmysqldump