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