gpt4 book ai didi

postgresql - 我可以从整个数据库的 pg_dump 中只恢复一个模式吗?

转载 作者:行者123 更新时间:2023-11-29 11:26:10 24 4
gpt4 key购买 nike

我有我的 postgres 数据库的备份——整个数据库实例在一个晚上的备份中。是否可以从该备份中仅恢复一个数据库?或者,如果我想访问单个数据库(用于迁移或恢复),我是否需要更改我的数据库备份方案以执行单个转储?

最佳答案

您可以通过使用像这样的一些文本处理从文本格式 (pg_dumpall) 的完整数据库集群转储访问单个数据库:

awk '/^\\connect database_name/ {flag=1;print;next}
/^\\connect/ {flag=0}
flag { print }' \
< all_databases.sql \
> database_name.sql

这将从 pg_dumpall 文件中获取“\connect database_name”和下一个“\connect”之间的所有内容。但效率不高。

但我建议像这样分别转储每个数据库:

# Dumping global data (for example roles)
pg_dumpall -g > /var/lib/pgsql/backups/globals.sql

#Dumping indidual databases in tar (uncompressed binary) format
for dbname in
`
psql -qXtc "
select datname from pg_catalog.pg_database
where datname<>'template0'" template1
`
do
pg_dump -b -F t "$dbname" > "/var/lib/pgsql/backups/$dbname.dump"
done

我假设您的意思是“我可以从整个数据库集群的 pg_dumpall 中只恢复一个数据库吗?”

关于postgresql - 我可以从整个数据库的 pg_dump 中只恢复一个模式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/970309/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com