我想将mysqldump从远程主机自动执行到我的计算机,但我不知道该怎么做。我的本地计算机是Windows XP计算机,这使情况变得复杂。我正在用腻子打开隧道,如下所示:

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


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

评论

PHP常规备份mysql数据的可能副本

#1 楼

代替PuTTY,下载命令行版本plink.exe。然后使用相同的连接参数,可以通过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

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

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


评论


我正在尝试(失败)。

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

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

–JellicleCat
2011年7月3日,19:19



@JellicleCat pscp.exe是一个安全复制(scp)实用程序,从与腻子和plink相同的位置下载。用于通过ssh连接复制文件...

– Michael Berkowski
2011年7月3日,19:33

@JellicleCat关于outfile args ... outfile可以只是文件名,以便转储发生在您碰巧所在的任何目录中(可能是/ home / username),也可以是指向其最终位置的完整路径。然后在pscp命令中,第一个arg是连接到远程计算机所需的ssh规范,其后是冒号,然后是文件的路径。第二个arg是您希望文件在本地结束的位置。如果您进行了一项设置,那么所有这些都可以使用SSH密钥。

– Michael Berkowski
2011年7月3日,19:36

啊。好的,我已经下载了它(现在意识到选项2是2个命令,而不是带换行符的1个命令-对我来说很傻)。非常感谢。

–JellicleCat
2011年7月3日在19:37

@JellicleCat的一些链接示例,请参见the.earth.li/~sgtatham/putty/0.58/htmldoc/Chapter7.html

– Michael Berkowski
2011年7月3日在19:38

#2 楼

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

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

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

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

Linux SCP命令

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

#3 楼

这对我有用(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


#4 楼

以@Michael Berkowski给我的东西为基础(并适应Linux,这是我现在使用的全部东西),我最终得到了两个命令以隧道传输到服务器A以访问服务器B上的MySQL服务器:
 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