Linux

如何執行 Cron 作業以通過 SSH 備份 MySQL 伺服器

  • October 1, 2013

我有一個使用 MySQL 數據庫執行 CentOS 的生產伺服器。在家裡,我有一台 QNAP NAS(執行一點嵌入式 linux)。我想在我的 NAS 上做一個 Cron 作業來備份我的 CentOS 生產伺服器的數據。問題是我不想傳輸未壓縮的數據(SQL 轉儲最終將達到 5gb)。我想通過 SSH 連接到伺服器,執行 SQL 轉儲,壓縮結果,下載它。

這可能嗎?什麼是最有效的方法?

您可以使用這個方便的單線,從連接的本地端執行:

ssh user@remoteserver "mysqldump -h myhost -u myuser -pmypass mydb | gzip" > /path/to/my/dump.sql.gz

簡而言之,您的mysqldumpSSH 命令生成的輸出將通過管道傳輸到gzip **連接的遠端端,**然後重定向到stdout,然後重定向到/path/to/my/dump.sql.gz您的 NAS 上。只有壓縮的數據將通過網路發送。

您可以通過在腳本中執行以下命令來稍微擴展它(這相當於約翰在他的回答中指定的內容):

ssh user@remoteserver "mysqldump -h myhost -u myuser -pmypass -D mydb | gzip > /tmp/dump.sql.gz"
scp user@remoteserver:/tmp/dump.sql.gz /path/to/my/dump.sql.gz
ssh user@remoteserver "rm -f /tmp/dump.sql.gz"

這是一個稍微冗長的方法,將首先轉儲/壓縮整個數據庫,然後通過網路複製它scp,最後刪除遠端副本。

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