Mysql

在單獨的 mysql 伺服器上通過 SSH 執行 mysqldump

  • December 4, 2021

我有一個由兩個單獨的伺服器組成的託管環境:web-server 和 db server。Web 伺服器只能通過 SSH 訪問(當然還有埠 80)。DB 伺服器無法從 Internet 訪問,只能通過 Web 伺服器訪問。

網路伺服器沒有 mysqldump 並且硬碟上的空間不允許在網路伺服器上進行數據庫轉儲。

我想使用我的本地 mysqldump 並通過網路伺服器將其連接到數據庫伺服器。我不確定如何讓 bash 命令正常工作。我試過這個:

SSH 隧道

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

mysql轉儲

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

我知道數據庫伺服器需要以某種方式包含在命令中,但我不確定如何以及在何處包含數據庫伺服器的 IP。

SSH的-L參數具有三個值。從你的例子:

  • 3312是 SSH 在執行 SSH 的電腦上偵聽的本地埠
  • localhost是遠端 SSH 守護程序打開隧道的目標主機
  • 3306是 repot SSH 守護程序打開隧道的目標埠

為了mysqldump通過 localhost 埠 3312 連接到 DB 伺服器的埠 3306,SSH 命令需要是:

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

可能我不明白問題,但是 -h 127.0.0.1 -MySQL 伺服器所在的主機,你必須更改為數據庫主機

引用自:https://serverfault.com/questions/1085361