我的 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 工具来转换它们。