Назад | Перейти на главную страницу

Запуск mysqldump в системе debian, которая перешла в режим только для чтения

В моей старой системе Debian основной жесткий диск недавно перешел в режим только для чтения из-за проблем с диском. У меня есть база данных MySQL на сервере, которую я хотел бы сделать резервную копию, прежде чем пытаться восстановить жесткий диск.

К счастью, у меня есть еще один смонтированный диск, который не находится в режиме только для чтения, поэтому я смогу запустить mysqldump сбросить в него базу данных. Однако я получаю следующую ошибку: mysqldump:

mysqldump: Couldn't execute 'show fields from `xxx`': Can't create/write to file '/tmp/#sql_b96_0.MYI' (Errcode: 30) (1)

Очевидно, это связано с тем, что основной диск находится в режиме только для чтения.

Есть ли способ обойти это?

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

export TMPDIR=/mnt/writable_drive/tmp ; mysqldump dbname >/mnt/writable_drive/backup.sql

mysqldump пытается создать временные файлы на вашем мертвом диске.

Попробуйте переместить / tmp на новый жесткий диск:

mkdir /mnt/newhdd/tmp
mount --bind /mnt/newhdd/tmp /tmp

Это должно позволить вашей системе нормально работать, пока вы не завершите дамп.

Другими хорошими вариантами были бы: сделать дамп с удаленного компьютера или остановить mysqld и просто скопировать файлы mysql в новую систему (что хорошо, даже если mysqldump работает, ОСОБЕННО, если у вас есть проблемы с таблицами).

Если вы не можете просто смонтировать файловую систему rw в / tmp и получить удовольствие от mysql, у вас есть другие варианты:

1) использовать удаленные команды mysql; т.е. войти в систему удаленно и сохранить удаленно

2) передать весь вывод mysqldump в файловую систему rw

3) запустите все файлы mysql db после остановки mysqld и повторно используйте их в работоспособной системе.

4) купите новый диск, подключите его, загрузитесь с LiveCD или загрузочной флешки, смонтируйте старый и новый, используйте dd, чтобы воссоздать старый на новом.

.... может быть, еще 10 других способов.