Восстановление Mysql после сбоя
В случае фатальных проблем на сервере (например, внезапное выключение сервера либо ошибки дисковой подсистемы) Mysql может перестать запускаться.
В таком случае стоит использовать опцию innodb_force_recovery:
1. В файле my.cnf установите значение:
[mysqld] innodb_force_recovery = 1
2. Перезапустите Mysql:
/etc/init.d/mysql restart
3. Сделайте дамп всех данных:
mysqldump database | gzip > database.sql.gz
4. Создайте новую базу данных:
mysql -e "CREATE DATRABAE new_database"
5. И залейте туда данные:
zcat database.sql.gz | mysql new_database
Теперь все ваши данные продублированы в новой базе данных. Их стоит проверить и, если все хорошо, удалить старую базу данных.
Если сервер не запускается
Если Mysql не запускается попробуйте разные значения опции innodb_force_recovery:
[mysqld] innodb_force_recovery = 2 # innodb_force_recovery = 3 # innodb_force_recovery = 4 # innodb_force_recovery = 5 # innodb_force_recovery = 6
# Попробуйте каждое из значений, пока не запустится Mysql
Если mysqldump не работает
Если дамп все равно не работает, попробуйте сделать экспорт в файл (для каждой таблицы):
SELECT * INTO OUTFILE '/tmp/users.txt' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY 'n' FROM users;
# Если не будет работать дамп, стоит попробовать экспорт
Для загрузки данных из файла в новую таблицу используйте:
LOAD DATA INFILE '/tmp/users.txt' INTO TABLE users_new FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY 'n';
# Загрузим данные из файла в новую таблицу
Обязательно используйте бекапы для быстрого восстановления, а также репликацию для резервирования данных.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: