Heroku自动恢复

时间:2014-09-10 10:54:43

标签: database heroku automation database-backups pg-restore

我需要实现从一个DB到另一个DB的每日备份的自动转移。数据库和应用程序都托管在heroku上。 我知道如果可以使用以下命令从本地机器手动执行此操作:

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

但是这个过程应该是自动化的,而不是从本地机器运行。 我有一个想法,写一个执行此命令的rake;并在Heroku Scheduler附加组件的帮助下每天运行此rake。

任何想法如何做到这一点更好?或者也许有更好的方法来完成这项任务?

提前致谢。

1 个答案:

答案 0 :(得分: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. 为heroku设置Scheduler附加组件,并添加我们的rake任务及其运行频率。

  3. 就是这样。