【问题标题】:Can't find my databases after power cut and reboot断电重启后找不到我的数据库
【发布时间】:2014-07-20 08:59:42
【问题描述】:

OSX 10.9.3 psql 9.3.4

我有几个正在处理的数据库,我们整晚都停电了。现在不存在我的数据库(包括默认数据库(用户名))。

为什么所有的数据库都从 psql 中消失了?他们不是已经得救了吗?有没有可能它们仍然存在但没有被 \dt 列出?

任何有关如何恢复这些数据库的帮助将不胜感激!

【问题讨论】:

  • 感谢您提供您的版本。有帮助和赞赏。

标签: database macos psql


【解决方案1】:

只有在底层存储不安全的情况下,断电才会导致数据库损坏或丢失 - 例如,一些廉价的消费级 SSD 无法正确刷新写入。但是,这个问题不太可能导致整个数据库消失,如果发生这种情况,您的数据库服务器成功启动的可能性就更小了。

由于您使用的是 OS X,因此很可能您实际上安装了多个 PostgreSQL 版本。我会说您在断电之前正在安装一个 PostgreSQL,而在断电(并导致重新启动)之后,您正在安装另一个 PostgreSQL。

事实上,既然您已经安装了 9.3.4,那么您的计算机上至少还有一个其他 PostgreSQL:Apple 捆绑的内置版本。

如果您只是连接到错误的 PostgreSQL 实例,数据应该仍然存在,只需连接到正确的 PostgreSQL 实例 - 如有必要,请先启动它。

首先,尝试:

SELECT version()

并确保您连接的服务器版本是您所期望的。

关于如何找到包含您的数据的 PostgreSQL 安装,我真的无法给出更具体的说明,因为 Mac 用户倾向于以多种不同的方式安装 PostgreSQL,并且通常安装了多个副本。它们也都以不同的方式启动——通过launchd、使用pg_ctl手动、通过postgres.app启动器等。所以为了帮助你,我需要你安装的PostgreSQL版本、方式和位置的详细信息。

我可以给您的一个提示是,您可以使用终端命令搜索 PostgreSQL 数据目录:

sudo find / -name PG_VERSION 2>/dev/null

这将为您显示每个安装的数据目录的一堆PG_VERSION 文件。您还可以列出 PostgreSQL 进程正在侦听的端口:

sudo netstat -ltnp | grep postgres

(假设可以在 OS X 上运行;我无法访问 OS X 机器进行测试)。

【讨论】:

  • Craig Ringer,SELECT version() provided... PostgreSQL 9.3.4 on x86_64-apple-darwin13.2.0,由 Apple LLVM 版本 5.0 (clang-500.2.79) 编译(基于 LLVM 3.3 svn),64位(1行)这是我所期望的,但我不确定这是否与Apple安装的相同。其他两个命令不起作用。
  • “没用”。有什么错误? find 命令甚至可以在 OS X 上运行。
  • 我收回了。毕竟 find 确实有效。我有一些回报... /Users/Username/Library/Application Support/Postgres/var-9.3/base/1/PG_VERSION 和/Users/Username/Library/Containers/com.boundlessgeo.postgis/Data/Library/应用支持/PostGIS/var/base/1/PG_VERSION
  • Netstat 无法正常工作... sudo netstat -ltnp | grep postgres 密码:netstat: 选项需要一个参数 -- p
  • 我已经用 Postgis (OpenGeo Suite 4.0.2 (PG-9.3.0 PostGIS-2.1.0)) 和 Heroku (版本 9.3.4.2 (9.3.4.2) 安装了 boundlessgeo 包。我安装了Heroku,因为当时我无法从命令行运行 psql。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-06
  • 1970-01-01
  • 1970-01-01
  • 2015-02-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多