我需要实现从一个DB到另一个DB的每日备份的自动转移。数据库和应用程序都托管在heroku上。 我知道如果可以使用以下命令从本地机器手动执行此操作:
heroku pgbackups:restore DATABASE `heroku pgbackups:url --app production-app` --app staging-app
但是这个过程应该是自动化的,而不是从本地机器运行。 我有一个想法,写一个执行此命令的rake;并在Heroku Scheduler附加组件的帮助下每天运行此rake。
任何想法如何做到这一点更好?或者也许有更好的方法来完成这项任务?
提前致谢。
答案 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
要避免在每次请求服务器时进行身份验证,请在应用根目录中创建一个.netrc文件(请参阅此处的详细信息https://devcenter.heroku.com/articles/authentication#usage-examples)
为heroku设置Scheduler附加组件,并添加我们的rake任务及其运行频率。
就是这样。