postgresql - 重置服务器后如何恢复 postgresql 数据库
问题描述
我最近完全重新安装了我的服务器,我正在努力恢复我以前拥有的数据库。
以前,我使用表空间将数据库保存到不同的 HDD 中,因此我在该 HDD 中有 db。(保存的文件路径如下:“**/{HDD_directory}/PG_10_201707211/16385”**)
对于主 postgres 文件夹,我在以前的系统中安装在不同的驱动器中,所以很遗憾我无法恢复以前使用的主文件夹。
因此,在我重新安装了服务器和 postgresql 后,我尝试通过将 **16385** 文件夹复制到“/var/lib.postgres/main/base”来恢复我的数据库。
但是 psql 不识别 db。(我猜是因为配置不同?)
我试图找到一个解决方案,但我能找到的只是使用 pg_restore 命令进行恢复,该命令需要 pg_dump 和备份文件。但是我没有备份文件(我只有 db 目录**16385**)。
我正在使用 ubuntu OS 和 postgres 版本 12。
请帮我解决这个问题。
解决方案
不幸的是,仅表空间文件不足以将其重新附加到数据库。这是来自文档的表空间部分的警告,解释了它:
即使位于主 PostgreSQL 数据目录之外,表空间也是数据库集群的一个组成部分,不能被视为数据文件的自治集合。它们依赖于主数据目录中包含的元数据,因此不能附加到不同的数据库集群或单独备份。同样,如果您丢失了表空间(文件删除、磁盘故障等),数据库集群可能会变得不可读或无法启动。将表空间放置在 RAM 磁盘等临时文件系统上会危及整个集群的可靠性。
推荐阅读
- c# - 如何将下拉列表和复选框中的值添加到gridview
- python-3.x - python3 值与容器变量返回错误
- spring - Spring Batch 内存泄漏 - 使用 ItemWriter 到数据库的 XML
- r-markdown - 如何拆分表格以使其在 R markdown 中并排显示?
- java - 在分支机构中管理不同的客户代码
- mysql - MySQL 数据库表优化以实现更快的查询和性能
- c++ - 实时与 CPU 时间性能测量
- python - 有没有办法让 lambda 使用 if 条件调用定义?
- google-apps-script - 设置单元格具有特定文本的日期
- powershell - 通过电子邮件地址从禁用和过期的 csv 输出进行 AD 查询