【问题标题】:How to use pg_dump without using Heroku tools?如何在不使用 Heroku 工具的情况下使用 pg_dump?
【发布时间】:2014-08-24 02:33:15
【问题描述】:

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

我在linklink找到了来自公寓宝石创建者的以下内容

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

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

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

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

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

【问题讨论】:

    标签: ruby-on-rails postgresql heroku multi-tenant apartment-gem


    【解决方案1】:

    我不知道那个人所说的“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"
    

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

    the Heroku documentation for more details

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

    pg_dump -Fc -f mydb.dbbackup $(heroku pg:credentials DATABASE)
    

    【讨论】:

    • 我收到Error: You must install at least one postgresql-client-<version> package.。使用pg (0.18.1),但是还有什么需要安装的吗?
    • @BSeven 呃,是的。这就是错误消息所说的。安装 postgresql-client-9.3 或任何你的 PostgreSQL 版本。鉴于错误听起来您使用的是 Debian 或 Ubuntu,因此将使用 aptitude install
    • @CraigRinger, pg_dump -Fc -f ../backups/my_app_db.dbbackup $(heroku pg:credentials DATABASE --app my_app_name) 这条线真的有效吗?就我而言,它说“pg_dump 的参数太多”
    • @gaussblurinc Heroku 一定改变了pg:credentials 命令的输出格式。尝试用双引号将$(...) 括起来,即"$(heroku ...)"
    • 它不再是一个简单的单行 Heroku 更新了他们的输出和命令本身(添加一个:url 子命令)。您现在需要使用heroku pg:credentials:url DATABASE 并从它返回的字符串中手动复制/粘贴。或者当然是一些疯狂的 ruby​​/perl 命令来为你提取输出。但不要太疯狂,因为 heroku 会再次改变它。
    猜你喜欢
    • 1970-01-01
    • 2021-12-25
    • 2011-08-19
    • 1970-01-01
    • 2016-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多