将mysqldump的输出重定向到scp


13

多年前,我曾与一位Linux专业人士合作,完成过这一绝妙的技巧。他可以执行mysqldump,但将输出重定向到scp / ssh连接,而不是写入disk。我们曾经在我曾经工作过的地方使用过这种安静的环境,但是我不记得该怎么做了。

我现在面临的问题是服务器中的硬盘驱动器已停在最后一站,并且出于密集目的,该驱动器被永久安装为只读。

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

这个小技巧实际上可行吗?如果是这样,语法是什么?

自从我意识到由于只读文件系统问题,我什至无法连接到mysql进行转储。但是您的反馈意见很棒,希望以后能被其他人使用


1
“意图和目的”
伊格纳西奥·巴斯克斯

Answers:


11

mysqldump的数据库名称 ssh root@remoteserver.com“ mysql -D dbname”

那应该工作:-)

还要在系统之间设置密钥,因此您无需登录/通过即可:-)


这真是一个不错的选择,将转储直接传递到远程服务器上的mysql中,本质上克隆数据库是一个命令。我对么?
xzyfer 2011年

1
您已经了解了; ...巨大的利益。我们一直在处理linode上的内容
Glenn Kelley

我觉得这里可能存在一些管道缓冲问题?
Phil Hollenback


2

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

我们有一个450GB的数据库,但主机上仅配置了500GB。我们无法在本地导出,因此我们远程导出。我们验证了输出,并且有数百个实例由于管道缓冲问题而损坏了输出。

最好的解决方案是,从您希望转储最终结束的目标主机上运行,mysqldump-h对主机使用该选项。将主机指向MySQL服务器,然后使用导出数据>

mysqldump -u root -p -h 10.1.1.199 --all-databases ...<more options>... > dump.sql
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.