【问题标题】:Automate MySQLdump to local computer (Windows)将 MySQLdump 自动化到本地计算机 (Windows)
【发布时间】:2011-09-27 17:41:46
【问题描述】:

我想从远程主机自动执行一个 mysqldump 到我的计算机,但我不知道该怎么做。

我想我应该通过 SSH 隧道运行 mysqldump,但是由于我的本地计算机是 Windows XP 计算机,这变得复杂了。我正在使用腻子打开这样的隧道:

putty -load "[my saved session]" -L [localport]:localhost:3306 -N

注意:我不能只是远程连接到 mysql 服务器。

【问题讨论】:

标签: mysql windows ssh mysqldump putty


【解决方案1】:

下载命令行版本plink.exe,而不是PuTTY。然后使用相同的连接参数,您可以通过 plink 运行 mysqldump 并将输出保存在本地。 PLink 可从与 PuTTY 相同的下载页面获得。

# setup the tunnel with plink
plink -load "[my saved session]" -L [localport]:localhost:3306
# Mysqldump your local port, redirected to outfile
mysqldump --port=[localport]  -h localhost -uuser -ppassword dbname > outfile

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

或者,另一种方法是在与plink 相同的命令行中执行mysqldump,将其重定向到本地计算机上的outfile

plink -load "[my saved session]" mysqldump -uuser -ppassword dbname > outfile

【讨论】:

  • 我现在正在尝试(但失败了)。

    当我尝试第一种方法时,转储似乎没有发生(好像第二个命令正在等待第一个终止)。当我终止连接时,会创建 outfile(但为空)

    至于第二种方法,你能解释一下后面的 args 吗? outfile 是否应该是文件名(而不是路径)?什么是pscp?为什么我在最后列出远程和本地机器的输出文件?是多余的吗?

  • @JellicleCat pscp.exe 是一个安全复制 (scp) 实用程序,从与 putty 和 plink 相同的位置下载。用于通过 ssh 连接复制文件...
  • @JellicleCat 关于输出文件参数...outfile 可以只是文件名,因此转储发生在您碰巧位于的任何目录(可能是/home/username)或完整路径中你希望它在哪里结束。然后在pscp 命令中,第一个参数是连接到远程机器所需的 ssh 规范,冒号后面是文件路径。第二个参数是您希望文件在本地结束的位置。如果您有一个设置,所有这些也适用于 SSH 密钥。
  • 啊。好的,我已经下载了它(现在意识到选项 2 是 2 个命令,而不是 1 个带有换行符的命令——我真傻)。非常感谢。
  • @JellicleCat 对于一些 plink 示例,请参阅 the.earth.li/~sgtatham/putty/0.58/htmldoc/Chapter7.html
【解决方案2】:

这对我有用(myBackup.bat 文件中的一行代码):

mysqldump --result-file=C:\myProject\dbDump.dump --port=21

--host=localhost --user=dbUser --password=dbPassword dbName | plink -L 21:localhost:3306 -ssh mysshUser@domain.com -pw mysshPassword >

C:\myProject\dbDump.log

【讨论】:

    【解决方案3】:

    在@Michael Berkowski 给我的基础上(并适应Linux,现在我只使用它),我最终得到了两个命令,用于通过隧道连接到Server A 以访问服务器 B:

    ssh -f -L [localPort]:[serverB]:[serverB_mysqlPort] --port [serverA_sshPort] user@serverA -N
    mysqldump -u[user] -p[password] -P[localPort] -h 127.0.0.1 [databaseName] > outfile
    

    【讨论】:

      【解决方案4】:

      您可以通过在 crons 的帮助下设置两件事来自动执行此过程

      1 您必须通过在远程计算机上使用以下命令创建 cron 来定期生成 MYSQLDUMP。

      MYSQLDUMP Command

      MYSQLDUMP -uuser -p --all-databases > file_name.sql

      2。您必须使用下面提到的 SCP 命令创建一个 cron 以将文件从远程服务器传输到本地计算机。

      Linux SCP Command

      scp user@remote_ip:~/mysql_dump_file_name.sql ./

      【讨论】:

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