如何在不使用 Heroku 工具的情况下使用 pg_dump?

Dav*_*kee 4 postgresql ruby-on-rails heroku multi-tenant apartment-gem

我想在使用公寓 gem 的 Heroku 多模式 pgSQL 应用程序上使用 pg_dump,但恐怕我有太多模式无法使其工作。

我查看了它,并在以下链接中从公寓宝石的创建者那里找到了以下内容

我是此处引用的 Apartment gem 的作者。我们已经在 Heroku 上使用它一年多了,它利用了模式。

使用起来绝对没问题,我们仍然可以在每个模式有 50 多个表的应用程序中使用超过 100 个模式获得出色的性能。

@4ware 提到的文章谈到了 heroku 的 pg:backups 命令的问题。(我很确定这篇文章来自我们对他们的支持查询)

它肯定有问题,但这不是 Postgresql、模式或多租户模式的缺点,而是 heroku 工具本身的缺点。既然 Postgresql 在他们的 dbs 上有 ingres 支持,你真的不需要使用他们的内置工具。我们只是在需要时 pg_dump 并且它的工作速度与人们预期的一样快。

如何使用外部工具?有人可以详细说明一下吗?

Cra*_*ger 5

我不知道那个人所说的“ingres”是什么意思——当然不是产品,Ingres。也许“入口”,即“入站”?

在任何情况下:您可以使用任何支持 libpq 协议的工具与 Heroku 上的 PostgreSQL 数据库建立直接 SSL 连接。这包括psql... 和pg_dump.

简单地:

pg_dump -Fc -f mydb.dbbackup "sslmode=require host=my.heroku.host.name port=5432 dbname=my.heroku.db.name user=my.heroku.user"
Run Code Online (Sandbox Code Playgroud)

(以及您想要的任何其他选项)。

有关更多详细信息,请参阅Heroku 文档

请注意,根据上面的文档链接,Heroku 数据库凭据可能会更改。因此,如果您要自动执行此操作或定期执行此操作,则应使用您的 Heroku 帐户根据 Heroku 手册动态获取数据库凭据:

pg_dump -Fc -f mydb.dbbackup $(heroku pg:credentials DATABASE)
Run Code Online (Sandbox Code Playgroud)