【问题标题】:Automate mysqldump to local Windows computer将 mysqldump 自动化到本地 Windows 计算机
【发布时间】:2015-04-12 06:23:17
【问题描述】:

我正在尝试在 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

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

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

【问题讨论】:

  • 你在哪里执行mysqldump
  • 是的,好问题。在 Windows cmd 中,我执行了 plink 中的第一个命令来创建隧道。它作为登录的 ssh 命令滚入 Linux 主机。因此 mysqldump 在 linux 服务器上执行。我在 Linux 的其他 SO 帖子中看到他们最后使用了“-N”标志。尝试在 Windows 中执行此操作会使 CMD 程序挂起。所以我打开了一个新的 CMD 窗口并执行了 mysqldump 计算隧道是打开的。我相信这里缺少一些东西。

标签: mysql linux windows ssh plink


【解决方案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
    

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

【讨论】:

    猜你喜欢
    • 2011-09-27
    • 2017-02-22
    • 2017-11-30
    • 1970-01-01
    • 2022-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多