【问题标题】:If I drop my heroku table, can I later restore the database with a Heroku backup?如果我删除了 heroku 表,我以后可以使用 Heroku 备份恢复数据库吗?
【发布时间】:2021-01-03 03:06:34
【问题描述】:

我在 Heroku 中的迁移遇到了一些问题。我已经尝试了几件事,但似乎都没有奏效。 我觉得我应该删除导致问题的表,这将删除生产中的所有数据。

如果我删除表并重新创建表,我能否恢复我丢失的所有数据?因为我会在删除表之前在 Heroku 上备份我的数据库。

谢谢!

【问题讨论】:

    标签: postgresql heroku heroku-postgres heroku-toolbelt heroku-api


    【解决方案1】:

    您应该运行备份

    pg_dump -h hostname -p 5432 -U username -F c -t mytable -f dumpfile mydatabase
    

    然后,在您删除并重新创建表后,您可以使用恢复数据

    pg_restore -h hostname -p 5432 -U username -a -d mydatabase dumpfile
    

    但是,如果表结构发生了变化,这将不起作用。

    在这种情况下,您可能希望直接使用COPY 将数据写入文件并从那里恢复。

    例如,假设您计划添加另一列。然后你可以转储

    COPY (SELECT *, NULL FROM mytable) TO '/file/on/dbserver';
    

    使用新列创建表后,您可以

    COPY mytable FROM '/file/on/dbserver';
    

    新列将填充 NULL 值。

    修改这个基本配方以满足更多奇特的要求。

    【讨论】:

    • 嗨劳伦兹,感谢您的回答。我将在 Heroku 上备份我的生产数据库。你知道如果我删除表并再次创建完全相同的表,我是否能够恢复 Heroku 数据库?
    • 不知道 Heroku 的服务,也许其他人可以填写。但我的回答应该与托管数据库一样适用于其他数据库。
    • 数据库不直接托管在 Heroku 测功机上。此外,您可以选择自己的数据库服务器并在代码/环境变量中引用该服务器。 Heroku has a tutorial for their Postgres add-on.
    猜你喜欢
    • 2015-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-21
    • 2013-08-29
    • 2017-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多