在单独的 mysql 服务器上通过 SSH 运行 mysqldump

在单独的 mysql 服务器上通过 SSH 运行 mysqldump

我有一个由两个独立服务器组成的托管环境:Web 服务器和数据库服务器。Web 服务器只能通过 SSH(当然还有端口 80)访问。数据库服务器无法从 Internet 访问,只能通过 Web 服务器访问。

Web 服务器没有 mysqldump,并且硬盘空间不足以在 Web 服务器上进行数据库转储。

我想使用本地 mysqldump 并通过 Web 服务器将其连接到 DB 服务器。我不确定如何让 bash 命令正常工作。我试过这个:

SSH 隧道

ssh -f -L 3312:localhost:3306 user@web-server -i ~/.ssh/key-file -c cipher -N

mysqldump

mysqldump -P 3312 -h 127.0.0.1 -u user -p database > /tmp/db.sql

我知道数据库服务器需要以某种方式包含在命令中,但我不确定如何以及在何处包含数据库服务器的 IP。

答案1

SSH 的参数-L有三个值。从您的示例来看:

  • 3312是 SSH 在执行 SSH 的计算机上监听的本地端口
  • localhost是远程 SSH 守护进程打开隧道的目标主机
  • 3306是 repote SSH 守护进程打开隧道的目标端口

为了mysqldump通过本地主机端口 3312 连接到 DB 服务器的端口 3306,SSH 命令需要如下:

ssh -f -L 3312:<dbserver ip>:3306 user@web-server -i ~/.ssh/key-file -c cipher -N

答案2

可能我不明白这个问题,但是 -h 127.0.0.1 -MySQL 服务器所在的主机,你必须更改为 DB 主机

相关内容