如何正确使用 pg_dump 将我的本地数据库复制到远程服务器
Posted
技术标签:
【中文标题】如何正确使用 pg_dump 将我的本地数据库复制到远程服务器【英文标题】:How to use pg_dump correctly to replicate my local database to a remote server 【发布时间】:2021-02-20 06:26:21 【问题描述】:我正在努力尝试将我的本地 postgres 数据库移动到我的 Digital Ocean 集群。我想让我的新远程服务器成为我的主要分贝,因此传递所有角色和权限。我阅读了pg_dump
文档,但仍然不知道如何解决我的问题。以下是我的命令:
创建转储文件:
pg_dump -U postgres --no-owner sb > dump_file
从 DO 连接到远程服务器并移动 dB:
pg_restore -d MY_URI_CONNECTION dump_file
创建了数据、架构和表,但没有创建角色,这会在我的终端中引发错误:
ERROR: role "admin" does not exist
ERROR: role "admin" does not exist
ERROR: role "web_anon" does not exist
WARNING: no privileges could be revoked for "public"
REVOKE
WARNING: no privileges were granted for "public"
GRANT
ERROR: role "web_anon" does not exist
ERROR: role "web_anon" does not exist
ERROR: role "web_anon" does not exist
ERROR: role "web_anon" does not exist
ERROR: role "web_anon" does not exist
ERROR: must be member of role "postgres"
ERROR: role "USER" does not exist
我尝试了多种方法来迁移我的 dB,但我一直遇到同样的错误。如何迁移我的所有分贝,包括角色和权限,克服我上面的错误?
【问题讨论】:
【参考方案1】:使用pg_dumpall -g > globals_file.sql
。见这里pg_dumpall。这将为您提供所有全局变量(包括角色)的纯文本文件。首先使用psql -d db -U superuser -f globals_file.sql
恢复到新集群请注意,这将转储给定集群中的所有角色。
【讨论】:
嗨阿德里安,当我尝试恢复全局文件时,我看到一些角色是SET
和CREATED
,我无法使用超级用户,因为数字海洋不支持它? digitalocean.com/community/questions/…
还有另一个不使用托管产品的原因。除了说使用不会抑制您选择的产品之外,无法帮助您。我个人使用 Linode 和一个我可以完全控制的虚拟机。以上是关于如何正确使用 pg_dump 将我的本地数据库复制到远程服务器的主要内容,如果未能解决你的问题,请参考以下文章
使用 pg_dump 将 Postgres 从 Windows 迁移到 Linux 时如何选择正确的排序规则来创建数据库?
我如何将本地 PostgreSQL 数据库复制到 Heroku for Spring Boot 应用程序
如何正确连接我的 servlet 和我的帖子表单? [复制]