在已经进入只读模式的debian系统上运行mysqldump

我的一个旧的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环境variables告诉mysqldump放置临时文件的位置,并将其指向可写位置。

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

mysqldump正试图在死盘上创build一些临时文件。

尝试将/ tmp移动到新的硬盘上:

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

这应该允许您的系统正常运行,直到您完成转储。

其他好的select是:从远程机器转储,或停止mysqld,只是将mysql文件复制到一个新的系统(即使mysqldump工作,这是很好的,尤其是如果你有表问题)。

如果你不能简单的在/ tmp上挂载一个rw文件系统并且让mysql快乐,那么你还有其他的select:

1)使用远程mysql命令; 即远程login并远程保存

2)将mysqldump的所有输出stream式传输到rw文件系统

3)一旦mysqld停止,将整个mysql数据库文件作为焦点,然后在健康的系统上重新使用它们。

4)购买一个新的驱动器,附加它,启动一个LiveCD或可启动的闪存,挂载旧的和新的,使用dd来重新创build旧的。

….也许10种其他方式。