必须在 Ubuntu 上升级 Postgres;现在,如何访问旧的、丢失的数据库?

必须在 Ubuntu 上升级 Postgres;现在,如何访问旧的、丢失的数据库?

我的 Ubuntu 服务器 (14.04) 上的本地连接无法连接到我的 Postgres (9.3) 数据库,因此我尝试将其升级到 9.4 以解决连接问题。幸运的是,我现在可以连接到数据库,但是... 我的旧数据库(以及表、视图等)现在丢失了...

有可能恢复这些吗?我该怎么做?

答案1

除非您删除了旧的 9.3 集群,否则应该有 2 个集群正在运行:

$ service postgresql status
9.3/main (port 5432): online
9.4/main (port 5433): online

(或用于pg_lsclusters显示现有的 PostgreSQL 集群)。

PostgresSQL 命令接受-p参数来区分您正在使用的数据库集群(它也接受 Unix 套接字路径)。您可以使用以下命令导出旧数据(假设旧数据库在端口上运行5432):

su - postgres
pg_dump -p 5432 my_db -f my_db.dump
# import data into new DB cluster
pg_restore -p 5433 -d my_db my_db.dump

答案2

除非您有备份转储,否则最安全的方法是:

  • 卸载 Postgres 9.4,
  • 安装 9.3,
  • 使用以下方式备份数据库pg_dumpall > backup.sql
  • 卸载 Postgres 9.3,
  • 安装 Postgres 9.4,
  • 使用 恢复数据库psql -d postgres -f backup.sql

9.3 数据库的格式与 9.4 所期望的格式不同,并且无法简单地仅使用 9.4 工具来转换它们。

相关内容