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

在已进入只读模式的 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)

这显然是由于主磁盘处于只读模式。

有没有办法解决?

答案1

使用 TMPDIR 环境变量告诉 mysqldump 将其临时文件放在哪里,并将其指向可写位置。

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

答案2

mysqldump 正在尝试在您的死盘上创建一些临时文件。

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

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

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

其他好的选择是:从远程机器转储,或者停止 mysqld 并将 mysql 文件复制到新系统(即使 mysqldump 有效,这也是很好的选择,特别是当您有表问题时)。

答案3

如果您无法简单地在 /tmp 上安装 rw 文件系统并让 mysql 正常运行,那么您还有其他一些选择:

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

2)将 mysqldump 的所有输出流式传输到可读写的文件系统

3)一旦 mysqld 停止,就将整个 mysql db 文件打包,然后在健康的系统上重新使用它们。

4) 购买一个新的驱动器,连接它,在 LiveCD 或可启动闪存上启动,安装新的和旧的,使用 dd 在新的上重新创建旧的。

....也许还有其他 10 种方法。

相关内容