Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
自动将MySQLdump转储到本地计算机(Windows)_Mysql_Windows_Ssh_Mysqldump_Putty - Fatal编程技术网

自动将MySQLdump转储到本地计算机(Windows)

自动将MySQLdump转储到本地计算机(Windows),mysql,windows,ssh,mysqldump,putty,Mysql,Windows,Ssh,Mysqldump,Putty,我想从远程主机将mysqldump自动化到我的计算机,但我不知道如何实现 我想我应该通过SSH隧道运行mysqldump,但由于我的本地计算机是Windows XP机器,这就变得复杂了。我用油灰开了一条隧道,就像这样: putty -load "[my saved session]" -L [localport]:localhost:3306 -N 注意:我不能直接远程连接到mysql服务器。请下载命令行版本plink.exe,而不是PuTTY。然后使用相同的连接参数,您可以通过plink运行

我想从远程主机将mysqldump自动化到我的计算机,但我不知道如何实现

我想我应该通过SSH隧道运行mysqldump,但由于我的本地计算机是Windows XP机器,这就变得复杂了。我用油灰开了一条隧道,就像这样:

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

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

请下载命令行版本
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

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

plink -load "[my saved session]" mysqldump -uuser -ppassword dbname > outfile
这适用于我(myBackup.bat文件中的一行代码):

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

--host=localhost--user=dbUser--password=dbPassword-dbName | plink-l21:localhost:3306-sshmysshUser@domain.com-pw myshpassword>

C:\myProject\dbDump.log


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

ssh-f-L[localPort]:[serverB]:[serverB\u mysqlPort]--端口[serverA\u sshPort]user@serverA-N
mysqldump-u[user]-p[password]-p[localPort]-h 127.0.0.1[databaseName]>outfile

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

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

MYSQLDUMP-uuser-p--所有数据库>文件名.sql

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


scpuser@remote_ip:~/mysql\u dump\u file\u name.sql./

我现在正在尝试(但失败了) 当我尝试第一种方法时,转储似乎没有发生(好像第二个命令正在等待第一个命令终止)。当我终止连接时,会创建输出文件(但为空)至于第二种方法,您能解释后面的参数吗?outfile应该是文件名(而不是路径)吗?什么是pscp?为什么要在末尾列出远程和本地计算机的输出文件?它是多余的吗?@JellicleCat
pscp.exe
是一个安全副本(
scp
)实用程序,从putty&plink的同一位置下载。用于通过ssh连接复制文件…@JellicleCat关于outfile参数
outfile
可以是文件名,以便转储发生在您碰巧所在的任何目录(可能是/home/username)中,也可以是您希望它结束的完整路径。然后在
pscp
命令中,第一个参数是连接到远程机器所需的ssh规范,冒号后是文件路径。第二个参数是希望文件在本地结束的位置。如果您有一个setup.Ah,那么所有这些都可以使用SSH密钥。好的,我已经下载了它(现在意识到选项2是两个命令,而不是一个带换行符的命令——我真傻)。非常感谢。@JellicleCat有关plink的一些示例,请参阅的可能副本