Use a variável de ambiente TMPDIR para dizer ao mysqldump onde colocar seus arquivos temporários e aponte para um local gravável.
export TMPDIR=/mnt/writable_drive/tmp ; mysqldump dbname >/mnt/writable_drive/backup.sql
Um antigo sistema Debian meu recentemente fez com que o disco rígido principal entrasse no modo somente leitura devido a algum problema no disco. Eu tenho um banco de dados MySQL no servidor que gostaria de fazer backup antes de tentar reparar o disco rígido.
Felizmente eu tenho outra unidade montada que não está no modo somente leitura, então eu deveria ser capaz de executar um mysqldump para despejar o banco de dados para ele. No entanto, recebo o erro abaixo executando mysqldump :
mysqldump: Couldn't execute 'show fields from 'xxx'': Can't create/write to file '/tmp/#sql_b96_0.MYI' (Errcode: 30) (1)
Isto é obviamente devido ao fato de que o disco primário está no modo somente leitura.
Existe alguma maneira de contornar isso?
O mysqldump está tentando criar alguns arquivos temporários em seu disco morto.
Tente mover / tmp para o novo disco rígido:
mkdir /mnt/newhdd/tmp
mount --bind /mnt/newhdd/tmp /tmp
Isso deve permitir que seu sistema seja executado normalmente até que você conclua o despejo.
Outras boas opções seriam: descarregar de uma máquina remota, ou parar o mysqld e apenas copiar os arquivos mysql para um novo sistema (o que é bom fazer mesmo se o mysqldump funcionar, ESPECIALMENTE se você tiver problemas na tabela). / p>
Se você não conseguir simplesmente montar um sistema de arquivos rw em / tmp e obter o mysql feliz, então você tem algumas outras opções:
1) use os comandos remotos do mysql; por exemplo, faça o login remotamente e salve remotamente
2) transmitir toda a saída do mysqldump para um sistema de arquivos que seja rw
3) tar todos os arquivos mysql db, assim que o mysqld for parado, e reutilizá-los em um sistema saudável.
4) compre uma nova unidade, conecte-a, inicialize em um LiveCD ou flash inicializável, monte antigo e novo, use dd para recriar o antigo e o novo.
.... talvez 10 outras maneiras também.