代码之家  ›  专栏  ›  技术社区  ›  sam452

自动将mysqldump到本地Windows计算机

  •  2
  • sam452  · 技术社区  · 9 年前

    我想用 plink 在Windows上创建一个到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 。不适合在其他服务器上获取其他转储。如果是这样,为什么要使用第一个命令?

    我在俯瞰什么?在里面 丁克牌手表 ,第一个的输出是打开Linux服务器,在那里我可以运行 mysqldump 命令但似乎有人忽视了第一个命令。你怎么认为?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Martin Prikryl    6 年前

    您有几个选项:

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

      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
      

      在这种情况下,没有任何远程运行(除了隧道端)。