首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >创建PostgreSQL备份的最佳方法

创建PostgreSQL备份的最佳方法
EN

Stack Overflow用户
提问于 2017-11-14 01:13:36
回答 2查看 785关注 0票数 0

我有一个使用PostgreSQL的网站。我在我的站点中提供的所有内容都是在开发环境中创建的(这是因为它是webcrawler内容)。在生产环境中创建的唯一信息是关于用户的信息。

我需要找到一种更新存储在生产环境中的数据的好方法。我是否可以仅将在开发环境中更新的表恢复到生产环境中,PostgreSQL将在生产环境中更新这些记录,或者最好的方法是在生产环境中备份用户信息,在开发环境中插入这些信息,然后在生产环境中恢复整个数据库?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2017-11-14 02:24:05

您可以使用pg_dump从开发环境中的非用户表导出数据,并使用pg_restore将数据导入prod。

-t开关将允许您选择特定表。

代码语言:javascript
运行
复制
pg_dump -d <database_name> -t <table_name>

https://www.postgresql.org/docs/current/static/app-pgdump.html

票数 2
EN

Stack Overflow用户

发布于 2017-11-14 02:50:25

关于这个主题,herehere有很多技巧。我建议你在做任何事情之前先看看这些链接。

如果您的数据在每次更新过程中都被丢弃,那么一个普通的转储就足够了。您可以将pg_dump输出直接重定向到生产环境中连接的psql,以避免pg_restore步骤,如下所示:

代码语言:javascript
运行
复制
#Of course you must drop tables to load it again
#so it'll be reasonable to make a full backup before this
pg_dump -Fp -U user -h host_to_dev -T=user your_db | psql -U user -h host_to_production your_db 

你可能会问自己“为什么他说要丢掉我的桌子”?

在新表上大容量加载数据比删除旧数据并重新插入更快。引用文档中的话:

在预先存在的数据上创建索引比在加载每一行时以增量方式更新索引更快。

如果你不能同时在两个环境下连接,那么你需要手动执行pg_restore

Ps²:我不推荐这样做,但您可以在pg_dump上附加--clean选项以自动生成DROP statements。使用此选项时要格外小心,以避免丢失意外的对象。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47269887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档