2013-08-22 69 views
0

我正在使用,每當 gem用於執行mysql數據庫備份時,我使用cron job進行此操作,但是當我運行一個使用system"mysqldump -u root -ppassword app_production > /output_path/app_production.sql"的shell命令時,在終端上運行whenever --update-crontab store命令後,它只會運行一次。如何在ruby中使用gem進行mysql數據庫備份?

我schedule.rb是:

set :output, "/output_path/app_production.sql" 
set :environment, 'production' 

every 59.minute do 
    system"mysqldump -u root -ppassword app_production > /path/app_production.sql" 
    # runner "MyModel.some_method" 
    # rake "some:great:rake:task" 
end 

我失去了這個東西嗎?

回答

1

可能有幾件事情進行檢查,以確保該運行。你確定app_production.sql包含正確的轉儲嗎?或者是沒有任何內容創建的文件?也可以嘗試使用command而不是system。我認爲command是一個每當命令system是紅寶石。

every 59.minutes do 
    command "mysqldump -u root -ppassword app_production > /path/app_production.sql" 
    # runner "MyModel.some_method" 
    # rake "some:great:rake:task" 
end 

UPDATE:

你也可以看看backup gem進行備份。它有很多功能,包括通知,所以我建議你看看它。

+0

-ppassword app_production> /path/app_production.sql「這個,我們總是得到空文件。 –

+0

當您在終端中嘗試「mysqldump -u root -ppassword app_production>/path/app_production.sql」時會發生什麼?確保它首先正確運行。 – jvnill

+0

當我在終端中運行mysqldump -u root -ppassword app_production> /path/app_production.sql時,我得到了mysql數據庫的備份。 –

0

我已經搞定這個問題。解決的辦法是:

set :output, "/output_path/app_production.sql" 
set :environment, 'production' 
every 59.minute do 
    command "mysqldump -u root -ppassword app_production" 
    # runner "MyModel.some_method" 
    # rake "some:great:rake:task" 
end 

運行該命令後,看看現在在輸出中的文件

我希望它能如果我使用命令「的mysqldump -u根幫助你:)