我如何将本地 PostgreSQL 数据库复制到 Heroku for Spring Boot 应用程序

Posted

技术标签:

【中文标题】我如何将本地 PostgreSQL 数据库复制到 Heroku for Spring Boot 应用程序【英文标题】:How I can copy my local PostgreSQL database to Heroku for SpringBoot app 【发布时间】:2017-09-02 12:42:06 【问题描述】:

我已将我的 SpringBoot 应用程序部署到 Heroku。现在我想将我的本地 PostgreSQL 复制到 Heroku。

我在devcenter.heroku.com 上找到了一些信息。 但是我对文件 db.changelog-master.yaml 的使用了解不够。

谁能给我有关复制数据库的最简单解决方案的详细信息?

【问题讨论】:

此时我倾向于通过 Java API 和 Flyway 在 Heroku 的 Postgres 上创建表。我正在使用带有 CREATE 语句的脚本。然而,一个大问题是如何插入现有数据。当然可以手动创建这样的脚本并包含所有数据,但我相信应该有更优雅的方式。 【参考方案1】:

创建本地 postgres 数据库的有效转储并将其托管在公开可用的地方。现在您将能够使用pg:backups:restore 恢复整个数据集(模式和记录),如here 所示。这里唯一需要注意的是,目标数据库必须完全为空才能正常工作。您可以使用 heroku pg:reset 清空 Heroku postgres 数据库。

如果您不能采用上面列出的方法,那么您可以直接从本地实例运行pg_restore,前提是您的本地 Postgres 版本 >= Postgres 的目标版本。这也适用于创建转储文件,并且是一项要求,因为 pg 实用程序不能保证向前兼容。 pg_restore 的文档是 here。

【讨论】:

谢谢。是否可以给我一个额外的建议。我将我的 Postgres 转储复制到 Dropbox 并授予它对 All 的访问权限。但是 Heroku 说找不到备份“...”。公开托管转储的首选方式是什么? 所以现在我已将文件上传到 Amazon S3 并授予公众访问权限。链接是s3.eu-west-2.amazonaws.com/kirillch/localizedb.sql。但是 Heroku 再次说找不到备份“...”。我使用以下命令:heroku pg:backups:restore 's3.eu-west-2.amazonaws.com/kirillch/localizedb.sql' DATABASE_URL -a my_app_name curl 文件返回什么响应? 响应是:找不到 my_app 的备份“s3.eu-west-2.amazonaws.com/kirillch/localizedb.sql”

以上是关于我如何将本地 PostgreSQL 数据库复制到 Heroku for Spring Boot 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

Postgresql:从本地到远程数据库的存储函数中的 dblink

将 H2 内存数据库复制到 postgresql(反之亦然)

PostgreSQL(丢失数据的复制或复制)-远程主PostgreSQL的只读权限

如何使用 pandas 或 python 将具有数百万行的表从 PostgreSQL 复制到 Amazon Redshift

postgresql - 计划将数据从 dblink 插入到本地表中

psycopg2/python 将数据从 postgresql 复制到 Amazon RedShift(postgresql)