将mysqldump自动化到本地Windows计算机

时间:2015-02-11 18:34:43

标签: mysql linux windows ssh plink

我尝试在Windows上使用plink创建到Linux计算机的隧道,并将转储文件放在Windows计算机上。似乎this answer会起作用并且是我问题的基础。但是试一试并查看其他答案我发现转储文件仍在Linux机器上。我在使用Windows和Ubuntu 14.04的本地环境中尝试这一点,然后再投入生产。在Windows 8.1中:

 plink sam@192.168.0.20 -L 3310:localhost:3306

 mysqldump --port=3310 -h localhost -u sam -p --all-databases > outfile.sql

我已经尝试在localhost的第二个中交换127.0.0.1,在隧道设置的尾部添加-N,使用dump命令中的一个表但是尽管我的隧道,它好像忽略了第一个命令。其他答案表明要向脚本添加更多命令,以便我可以使用pscp来复制文件。这也意味着重新连接到垃圾箱outfile.sql。不适合在其他服务器上获取其他转储。如果是这样的话,为什么要使用第一个命令?

我在俯瞰什么?在plink中,第一个的输出是打开Linux服务器,我可以在其中运行mysqldump命令。但似乎忽略了第一个命令。你觉得怎么样?

1 个答案:

答案 0 :(得分:1)

您有几种选择:

  • 将数据库远程转储到远程文件,然后将其下载到您的计算机:

    plink sam@192.168.0.20 "mysqldump -u sam -p --all-databases > outfile.sql"
    pscp sam@192.168.0.20:outfile.sql .
    

    重定向>位于引号内,因此您将远程计算机上的mysqldump重定向到远程文件。

    这可能是最简单的解决方案。如果您在下载之前压缩转储,它甚至会是最快的,特别是如果您通过慢速网络连接。

  • 远程执行mysqldump,但在本地重定向其输出:

    plink sam@192.168.0.20 "mysqldump -u sam -p --all-databases" > outfile.sql
    

    请注意,重定向>在引号之外,与之前的情况相比,因此您重定向plink的输出,即远程shell的输出,其中包含远程输出mysqldump

  • 隧道连接到远程MySQL数据库并使用本地安装的MySQL(mysqldump)在本地转储数据库:

    plink sam@192.168.0.20 -L 3310:localhost:3306
    

    在单独的本地控制台(cmd.exe)中:

    mysqldump --port=3310 -h localhost -u sam -p --all-databases > outfile.sql
    

    在这种情况下,没有任何东西是远程运行的(隧道端除外)。