问题描述
我的数据库超过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
最佳答案
Step-by-Step指南
-
进行备份。确保您的数据库没有被更新。
pg_dumpall > outputfile
-
安装Postgres10。请按照此页面上的说明进行操作:https://www.postgresql.org/download/linux/ubuntu/然后运行
sudo apt-get install postgresql-10
。 side-by-side将安装较新的版本。 -
运行
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
已经有一个群集
main
用于10(因为它是在软件包安装时默认创建的)。这样做是为了使全新安装可以立即使用,而无需首先创建集群,但是当您同时还存在10/main
时尝试升级9.6/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群集现在应该是”down”,而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
选项一起使用,以便升级为in-place。但是,这很危险-如果发生故障,您可能会丢失群集。只是不必使用此选项,因为-m upgrade
已经足够快了。
基于:
-
如果我中断或取消
pg_upgradecluster
会发生什么?
Update
本指南适用于从9.6升级到11以及从10升级到11的情况。