我需要使用 pg_dump 创建 Postgres 数据库转储。数据库位于 Kubernetes Pod 中。我正在尝试以目录格式获取转储,而不仅仅是单个 .sql 文件。但我不明白如何指定目录。
当我尝试这个命令时:
kubectl exec patroni-0 -- bash -c "pg_dump -U username db_name --format=d" > db_dump_folder
我收到错误:
pg_dump: [directory archiver] no output directory specified
command terminated with exit code 1
提前致谢!
当使用
pg_dump
创建目录格式的数据库转储时,您需要指定pg_dump
可以直接写入的输出目录。您使用的命令尝试将 stdout 重定向到目录,这不是目录格式中 pg_dump
的工作原理。相反,您需要直接在 -f
命令中使用 --file
选项或 pg_dump
选项指定目录。
但是,由于转储需要在 Kubernetes pod 内完成,因此本地计算机上要存储转储的目录必须可供 pod 访问,或者您可以将其存储在 pod 中并复制到本地。
对于第二个选项,你可以这样做:
pg_dump
,指定 pod 上用于转储的临时目录:kubectl exec patroni-0 -- bash -c "mkdir /tmp/db_dump"
kubectl exec patroni-0 -- bash -c "pg_dump -U username -d db_name --format=d -f /tmp/db_dump"
kubectl cp patroni-0:/tmp/db_dump ./db_dump_folder
kubectl exec patroni-0 -- bash -c "rm -rf /tmp/db_dump"
希望这有帮助。