将 mysqldump 的输出重定向到 scp

将 mysqldump 的输出重定向到 scp

几年前,我曾与一位 Linux 专家共事,他曾使用过这个巧妙的技巧。他可以执行 mysqldump,但将输出重定向到 scp/ssh 连接,而不是写入磁盘。在我以前工作的地方,我们经常使用这种方法,但我再也记不起如何做到这一点了。

我现在面临的问题是,我的服务器中的硬盘已经快要报废了,而且出于某种目的,它被永久安装为只读。

我希望利用这个命令行技巧来将我的数据库备份到新服务器上,因为将转储写入本地磁盘并传输它显然是不可能的。

这个小技巧真的可行吗?如果可行,语法是什么?

从那时起,我意识到由于我遇到的只读文件系统问题,我甚至无法连接到 MySQL 进行转储。您的反馈很棒,希望将来能对其他人有用

答案1

mysqldump dbname | ssh [email protected] "mysql -D dbname"  

那应该可以:-)

在系统之间设置密钥,这样您无需登录/密码即可执行此操作:-)

答案2

mysqldump ... | ssh ... "cat > out.dmp"

答案3

我喜欢@GlennKelley 的回答,但想指出以下几点:

我们有一个 450GB 的数据库,但主机上只配置了 500GB。我们无法在本地导出,因此我们进行了远程导出。我们验证了输出,发现有数百个输出因管道缓冲问题而损坏的情况。

这里最好的解决方案是,从您希望转储最终到达的目标主机运行,mysqldump但使用-h主机选项。将主机指向 MySQL 服务器并使用 导出数据>

mysqldump -u root -p -h 10.1.1.199 --all-databases ...<more options>... > dump.sql

相关内容