Heroku авто восстановление

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

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

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

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

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

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).

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

Это все.

Другие вопросы по тегам