Авто восстановление Героку

Мне нужно реализовать автоматический перенос ежедневных резервных копий из одной БД в другую. И БД, и приложения размещены на героку. Я знаю, что это возможно, если сделать это вручную с локальной машины с помощью команды:

heroku pgbackups:restore DATABASE `heroku pgbackups:url --app production-app` --app staging-app

Но этот процесс должен быть автоматизирован и запускаться не с локальной машины. У меня есть идея написать грабли, которые будут выполнять эту команду; и запускайте этот рейк ежедневно с помощью надстройки Heroku Scheduler.

Есть идеи, как это лучше сделать? Или, может быть, есть лучший способ для этой задачи?

Заранее спасибо.


person Sergey    schedule 10.09.2014    source источник
comment
может быть, вы можете добавить ежедневную хронографию, которая сделает это   -  person Lucy Weatherford    schedule 10.09.2014


Ответы (1)


Мне удалось решить проблему самостоятельно. Оказалось не так уж и сложно. Вот решение, может кому пригодится: 1. Написал скрипт, копирующий последний дамп с определенного сервера в БД текущего сервера

namespace :backup do
  desc "copy the latest dump from a certain server to the DB of the current server"
  task restore_last_write_dump: :environment do
    last_dump_url = %x(heroku pgbackups:url --app [source_app_name])
    system("heroku pgbackups:restore [DB_to_target_app] '#{last_dump_url}' -a [target_app_name] --confirm [target_app_name]")
    puts "Restored dump: #{last_dump_url}"
  end

end
  1. Чтобы избежать аутентификации при каждом запросе к серверам, создайте файл .netrc в корне приложения (подробности см. здесь https://devcenter.heroku.com/articles/authentication#usage-examples)

  2. Настройте надстройку Scheduler для heroku и добавьте нашу задачу rake вместе с частотой ее запуска.

Вот и все.

person Sergey    schedule 15.09.2014