2012-05-29 46 views
0

我需要做的,就是讓某些表數據的SQL備份文件(「生成INSERT語句」)。我想每月都這樣做。備份mysql數據表 - 選擇性

樣品select語句:

SELECT * FROM table WHERE date >= "01-01-2012" AND date < "01-02-2012" 

的情況是,我需要從遠程SQL Server備份。看來,我不能使用mysqldump然後(?)

因此,應我只是寫一個PHP腳本來生成這些語句? 這似乎有點野蠻的解決方案;)

對不起,這件事似乎很基本,但我已經很困惑。

BTW。表是部分InnoDB和MyISAM的部分

+0

僅僅因爲服務器是遠程的,本身並不排除使用'mysqldump'的 - 這取決於服務器是否允許從主機傳入連接。 – eggyal

+0

感謝您的快速響應。 是的,我可以從我的主機連接,如果這就是你的意思。對不起,但我不知道如何實際使用mysqldump遠程,在本地機器上保存備份文件。 – hellward

+0

您可以使用'mysqldump -h hostname ....'進行遠程連接,您可以使用主機名或IP – Nico

回答

0

你問了一系列的問題...

如果遠程機器是UNIX,寫一個小bash腳本是這樣的:

#!/bin/bash 

/usr/bin/mysqldump -h db_server -u user_name -ppassword --WHERE 'date >= "01-01-2012" AND date < "01-02-2012"' database_name table_name | gzip > output.sql.gz 

需要注意的事項:

  1. 密碼在腳本中硬編碼。使用權限較低的用戶帳戶。
  2. 你的日期範圍也是硬編碼的,但這很容易使通用。
  3. '-p'和密碼之間沒有空格。

對於InnoDB,使用--single事務。對於myisam,我想你會堅持使用--lock-tables。

然後在cron作業中運行此腳本。

如果連接有問題,請檢查您的防火牆和mysql用戶權限。

而我的$ 0.02 ...編寫運行shell命令PHP腳本是真懶。爲這些編寫shell腳本。你會睡得更好。

祝你好運。