2013-08-22 2 views
0

Я использую всякий раз, когда gem для резервного копирования базы данных mysql, я использовал для этого задание cron, но когда я запускаю команду оболочки с помощью system"mysqldump -u root -ppassword app_production > /output_path/app_production.sql", это будет работать только один раз после запуска команды whenever --update-crontab store на терминале.Как получить резервную копию базы данных 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

, если я использую команду «туздЫшпр -u корень -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 

после выполнения команды, посмотрите сейчас на файл вывода

Я надеюсь, что это может помочь вам :)

Смежные вопросы