所以我备份 Postgres 的方式是:
pg_dumpall -U eox-dev -h localhost --clean --file=/home/backups/postgres.sql
我想确保我有一个生产就绪的备份,除了表和数据之外,它还包含函数、关系、触发器。
我现在正在尝试将其在 Kubernetes 集群中恢复到具有不同名称的数据库中prod_db
-> staging_db
,但是得到FATAL: database "prod_db" does not exist
. 我正在尝试将其恢复到staging_db
这样才有意义。.sql
确实声明的第一行之一CREATE DATABASE prod_db
。我不是关于编辑.sql
. 如果我必须这样做,我做错了什么。
进行此备份的正确方法是什么?
如果要恢复单个数据库,您可能应该使用
pg_dump
,而不是pg_dumpall
. 如果您不打算在现有填充数据库的顶部进行还原,则不应使用--clean
.备份整个集群和迁移/克隆其中的一个数据库是不同的任务,您可能需要不同的命令来完成它们。
但是你有一个难题,如果你指定
--create
pg_dump 它会想要恢复到一个与它转储的名称相同的数据库中,如果你没有指定,--create
那么你可以用你的名字创建一个新的数据库想要,还要用正确的 ENCODING 和 LOCALE。我不认为 pg_dump 或 pg_dumpall 或 pg_restore 可以更改要恢复的数据库名称。但是,在恢复数据库(同名)后,您可以使用以下命令重命名它: