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
Чтобы избежать аутентификации при каждом запросе к серверам, создайте файл.netrc в корне приложения (подробности см. Здесь https://devcenter.heroku.com/articles/authentication).
Настройте планировщик надстройки на героку и добавьте нашу задачу по рейку вместе с частотой ее запуска.
Это все.