[mysql] 遠端 sql 資料備份

未分類
最近 Linode 的主機空間快用完了
並不是主機業務蒸蒸日上
而是跟隨法人實在是吃太多空間了

累積了兩年多的資料
已經接近20G了
租了 40G 的空間被吃掉一半...
短期內沒什麼營運計畫
想一想還是先搬回 Mac Mini 好了

這時候遇到一個問題
首先使用 mysqldump 把資料 dump 出來
但是 dump 到一半就爆炸了
因為空間不足 所以無法 dump

於是 google 了一下
發現可以直接把 dump 出來的資料
透過 ssh 直接傳到遠端
不需要寫 local file

環境需求
要可以在主機上跑 mysqldump/ssh


範例如下

mysqldump -u[user_id] -p[password] [database] [table] | gzip -c | ssh user@host 'cat > /home/user_id/xxx.sql.gz'


(請注意因為部落格的關係 單引號會被換成 鍵盤上數字1 左邊那個單引號)
(複製的時候請自行替換 以免發生錯誤)

user_id, user_password 就是要連線的帳號密碼
database 則是 資料庫名稱
table 是要 dump 的 table 名稱, 不寫就是 dump 整個資料庫

後面接 gzip 是會把 dump 出來的 stream 做壓縮
壓縮完 再接 ssh 把資料導到 別台機器
再用 cat 把 stream 輸出到 指定的檔案名稱


非常威
但是前提是在遠端主機上要有 mysqldump/ssh
一般虛擬主機應該是不會有...