将分级数据库从heroku复制到亚硝化发展

我发现了一些类似的问题 - 甚至为一个类似的非dup添加了答案。 但我看不到或解决这个问题。 这是核心问题:

我在Heroku上有一个登台服务器。 我想将分段服务器数据库复制到Nitrous上以解决问题。 Nitrous有Postgres 9,2,4,Heroku有Postgres 9.3.3。

我的老板正在度假,我没有权力将Heroku登台服务升级到可以分叉的付费计划(然后使用分叉的Heroku数据库作为开发的远程数据库)。

在早期的工作中,我使用了heroku pg:push来将开发数据库发送到分段。 没问题。 但我不能使用heroku pg:pull - 失败,说:

pg_dump: server version: 9.3.3; pg_dump version: 9.2.4                                                                                                         
pg_dump: aborting because of server version mismatch

我已经尝试了一个rake db:structure:dump - 由于版本不匹配原因失败。 我隐约地希望,这使用了PG宝石,并会神奇地工作,忽略转速水平。 嘿,如果你无知,魔法确实有效。

我有一个用于开发的Nitrous盒子,因为办公室的防火墙阻止了几乎所有的东西,除了25,80和443之外的所有有用的端口,例如22,5432,3000等。 所以我开发了Nitrous。 它非常整齐。 但是我从来没有想到,Nitrous会有Postgres的旧版本,并且没有明显的方式来更新它。 特别是考虑到Nitrous经常强调使用Heroku。

我试过使用更基本的命令:

pg_dump -h ec2-XX-XXX-XX-XXX.compute-1.amazonaws.com -p 5432 -Fc --no-acl --no-owner --compress 3 -o -U ${DBNAME} > dumpfile.gz

但是失败了( heroku pg:pull可能使用这个命令,在引擎盖下)出于同样的原因 - 版本不匹配。

我意识到,如果我在开始时知道更多,我可以要求Heroku使用9.2。 但是现在我有一个9.3.3实例的数据,如果只有一台时间机器可用,我需要这些数据,而不是我想要的数据,而且我可以应付时间矛盾的问题。

可能的解决方案? 有没有PG 9.3的另一个Web IDE? 有没有我找不到的标志,让PG Dump 9.2可以与最新的数据库一起工作? 有没有办法将Nitrous升级到9.3? 至少对于关键的pg_dump命令?

基于浏览器的IDE版本Postgres(截至2014/08/13):

  • 亚硝酸 - 9.2
  • koding - 9.1
  • cloud9:9.3(耶! - 接我!接我!)

  • 我花了几个小时制定了一个解决方案,使用不同的基于浏览器的IDE。 Cloud9提供Postgres 9.3,预装在新的虚拟机中。

    您需要使用Heroku注册您的Cloud9 ID(在Cloud9控制台中查找SSH密钥,并在Heroku中粘贴您的ID SSH密钥)。 你需要从Cloud 9登录Heroku。

    然后在Cloud9上使用pg_dumppg_restore ,使用Heroku数据库作为源和目标。

    pg_dump -h ec2-XX-XX-XX-XX.compute.amazonaws.com -p 5432 --no-owner --no-acl -Fc -o -U ${HEROKU_STAGING_DATABASE_USER} ${HEROKU_STAGING_DATABASE_NAME} > staging.dump
    pg_restore -h ec2-XX-XX-XX-XX.compute.amazonaws.com -p 5432 --no-owner --no-acl --clean --verbose -d ${HEROKU_DEV_DATABASE_NAME} -U ${HEROKU_DEV_DATABASE_USER} < staging.dump
    

    在你的开发环境中,确保你更新了config / database.yaml(或者你的web应用程序需要的任何东西)来使用Heroku远程数据库服务。

    Simples。 最终。


    我遇到了这个问题,并通过盲目的魔法解决了

  • 从Heroku postgres仪表板下载最新的recent.dump文件
  • 将该文件移动到Nitrous框(并进入应用程序目录)
  • 按照此处的说明进行操作:https://stackoverflow.com/a/11391586/3850418

    pg_restore -O -d MY_APPNAME_DEV recent.dump

  • 我收到了一堆警告,但它似乎起了作用,至少足以满足我的开发/测试目的。

    链接地址: http://www.djcxy.com/p/79067.html

    上一篇: Copy staging database from heroku to nitrous development

    下一篇: II support for read only query load balancing