我的数据库超过600 GB,我当前的数量只有1 TB,所以这可能会限制我的选择。
我的配置文件在这里:
/etc/postgresql/9.6/main
我的数据库在这里:
/mnt/1TB/postgresql/9.6/main
编辑 - 本指南适合我。我需要做的唯一的补充是手动下载libicu55并安装它,我必须为我的/ tmp /文件夹授予postgres 1777权限。我还将数据文件夹保存到不同的驱动器,因此我不得不使用命令:
pg_upgradecluster -m upgrade 10 main /mnt/1TB/postgresql/10
https://gist.github.com/delameko/bd3aa2a54a15c50c723f0eef8f583a44
答案 0 :(得分:166)
进行备份。确保您的数据库没有更新。
pg_dumpall > outputfile
安装Postgres 10 。按照此页面上的说明操作:https://www.postgresql.org/download/linux/ubuntu/
然后运行sudo apt-get install postgresql-10
。较新版本将与早期版本并排安装。
运行pg_lsclusters
:
Ver Cluster Port Status Owner Data directory Log file
9.6 main 5432 online postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log
10 main 5433 online postgres /var/lib/postgresql/10/main /var/log/postgresql/postgresql-10-main.log
已经存在10个集群main
(因为这是默认情况下在程序包安装时创建的)。这样做是为了使全新安装能够开箱即用而无需首先创建集群,但当{I}}存在9.6/main
时,当您尝试升级10/main
时,它会发生冲突。建议的过程是使用pg_dropcluster
删除10个群集,然后使用pg_upgradecluster
进行升级。
停止10个群集并将其删除:
sudo pg_dropcluster 10 main --stop
停止写入数据库的所有进程和服务。停止数据库:
sudo systemctl stop postgresql
升级9.6群集:
sudo pg_upgradecluster -m upgrade 9.6 main
再次启动PostgreSQL
sudo systemctl start postgresql
运行pg_lsclusters
。您的9.6群集现在应该“关闭”,并且10群集应该在5432
处于联机状态:
Ver Cluster Port Status Owner Data directory Log file
9.6 main 5433 down postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log
10 main 5432 online postgres /var/lib/postgresql/10/main /var/log/postgresql/postgresql-10-main.log
首先,检查一切正常。之后,删除9.6群集:
sudo pg_dropcluster 9.6 main --stop
pg_upgradecluster
本指南适用于从9.5升级到10.1。从旧版本升级时,请考虑在步骤#6中省略-m upgrade
:
sudo pg_upgradecluster 9.6 main
如果您拥有一个非常大的群集,则可以使用pg_upgradecluster
--link
选项,以便升级到位。但是,这很危险 - 如果发生故障,您可能会丢失群集。如果没有必要,请不要使用此选项,因为-m upgrade
已经足够快了。
基于:
pg_upgradecluster
? 本指南适用于从9.6升级到11和从10升级到11。
答案 1 :(得分:0)
几乎开箱即用。我在17.10很巧妙。虽然可以将它放在.deb文件中,但它不起作用 - 如果它们破坏了LTS版本,Postgres只会更新非LTS版本。所以把Zesty放到那个deb中,你很高兴。