在Ubuntu 16.04 LTS中将PostgreSQL从9.3升级到9.5

4

我在我的计算机上安装了Ubuntu 16.04 LTS和postgresql-9.3。(看起来我一直保留这个实例,因为16.04安装了postgresql9.5)。

好的,我安装了9.5并使用...卸载了9.3

sudo apt-get remove postgresql-9.3

很不幸,我不知道所有数据库和角色都在那个9.3版本的实例中,并且不与9.5版本共享。当我尝试使用我的用户登录时,它无法工作,因为它们不在该实例/集群中(我是对的吗?)

我尝试使用Ubuntu存储库安装9.3版本,但它只安装了9.5版本。如何将所有角色和数据库移动到9.5版本?


{btsdaf} - murison
你是否还保留着原始的9.3数据库?听起来你在使用删除命令时已经将其删除了。如果是这种情况,你将很难恢复数据。 - RustProof Labs
1个回答

5

要查看您的数据库是否仍在您的服务器上,请检查此文件夹:

ls /var/lib/postgresql/9.3/main/base/

如果您在这里看到了文件,说明您的数据库仍然存在!!如果这个文件夹里没有任何内容,这意味着您的生命数据已经被删除。
您是否定期备份您的数据库?
如果是,请安装以前版本的PostgreSQL并进行恢复。请注意保留HTML标记。
apt-get install postgresql-9.3
psql -h localhost
create database dbname;
psql -h localhost dbname < backup_file

在Debian或Ubuntu上进行正常的升级过程如下:

service postgresql stop

关闭新版本的群集(如果刚安装,通常为空:请注意,在安装新版本和迁移数据之间不要有时间差,以确保没有人使用新的群集)

停止PostgreSQL的更新版本:

service postgresql stop

放置新更新的版本群集以确保内部没有东西:

pg_dropcluster --stop 9.5 main

然后是数据迁移:
pg_upgradecluster -m upgrade 9.3 main

然后停止之前的PotsgreSQL版本:

pg_dropcluster 9.3 main --stop

删除旧版本:

apt-get autoremove --purge postgresql-9.3 

然后只需重新启动PostgreSQL,新版本将带有已迁移的数据库:

service postgresql start

希望这可以帮到你。

但是如果你没有进行任何备份,不幸的是你应该已经失去了所有东西。


在尝试安装9.3版本时出现错误:“E:软件包 'postgresql-9.3' 没有安装候选项”。 - Ruben
1
你需要引用包含这个旧版本的Ubuntu版本。像这样sudo apt-get install postgresql=9.3-1ubuntu1请注意,在这种情况下,您可能需要自行解决一些依赖关系,但如果有任何问题,apt-get将告诉您是什么原因导致的。您需要执行以下操作才能使其正常工作:sudo apt-get install postgresql=9.3-1ubuntu1
postgresql-common=9.3-1ubuntu1
- Hervé Piedvache
1
可以通过在软件包名称后面加上等号和要选择的软件包版本来选择安装特定版本的软件包。这将导致该版本被定位并选择进行安装。或者,也可以通过在软件包名称后面加上斜杠和发行版版本或存档名称(稳定版、冻结版、不稳定版)来选择特定的发行版。 - Hervé Piedvache

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接