如何在/ tmp为只读时备份MySQL数据库?

我在我的/ tmp分区上安装了一个损坏的ext4文件系统的Ubuntu服务器12.04:

$ dmesg | tail [25300713.878456] end_request: I/O error, dev vda, sector 2019854 [25300713.882430] Aborting journal on device dm-0-8. [25300713.969861] end_request: I/O error, dev vda, sector 1965862 [25300713.972127] Buffer I/O error on device dm-0, logical block 196608 [25300713.973351] lost page write due to I/O error on dm-0 [25300713.973450] JBD2: I/O error detected when updating journal superblock for dm-0-8. [25300746.138426] EXT4-fs error (device dm-0): ext4_journal_start_sb:327: Detected aborted journal [25300746.139792] EXT4-fs (dm-0): Remounting filesystem read-only [25387373.536038] EXT4-fs (dm-0): error count: 2 [25387373.536043] EXT4-fs (dm-0): initial error at 1407997573: ext4_journal_start_sb:327 [25387373.536047] EXT4-fs (dm-0): last error at 1407997573: ext4_journal_start_sb:327 [25473881.056039] EXT4-fs (dm-0): error count: 2 [...] 

我在一个VPS,我不知道如何解决这个问题。 在我做一些可能会破坏一切的东西之前,我想备份服务器,特别是MySQL数据库。

现在,我试图做到这一点:

 ssh username@ip "mysqldump -u user -ppwd db" > ~/Bureau/db.sql 

但它抱怨由于只读/ tmp,它不能做一些查询。

我的第二个想法是重命名/ tmp(或卸载它),并在其中一个工作分区上创build/ tmp链接。 这没有用,抱怨/ tmp很忙。

我想避免重新启动MySQL,如果可能的话,因为我不知道它是否会正常重启。

你可以用mysql cli指向另一个目录

 set global tmpdir = "/path/to/dir". 

这个新的tmpdir实际上可以创build为tmpfs并存储在内存中,而不是在实际损坏的文件系统上。

你有一个更严重的问题。 基本上,简单的英语是说“对不起 – 我不能保持文件系统的一致性,我放弃了切换到只读模式,以避免完全摧毁它”。 这是一个非常重要的问题。 尽快向主机提出支持问题。 同时尝试执行以下操作以获得远程备份

 mysqldump --host servername dbname > dbname.sql 

这当然可能会失败,因为系统处于错误的状态。

检查/etc/my.cnf并查看[mysqldump] tmpdir=/tmp

但是现在你面临着一个潜在的鸡蛋问题,因为如果你编辑/etc/my.cnf,你可能需要重新启动MySQL才能使更改生效。