Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Update Postgresql in Ubuntu - pg_upgrade vs pg_upgradecluster

I would like to switch from postgres 9.6 to version 14 which runs on Ubuntu 21.04. I have a cluster with 3 databases. I would like to know what is the difference between upgrading with pg_upgrade and pg_upgradecluster? Which one is faster and safer?

like image 705
xampo Avatar asked Oct 15 '25 15:10

xampo


1 Answers

pg_upgrade is a tool from Postgresql itself that will operate on a single database (folder).

pg_upgradecluster however is a wrapper from your operating system (= Ubuntu) to pg_upgrade or pg_dump/pg_restore. In addition to very conveniently upgrading your database, it will also do some housekeeping like moving the config files to the correct folder in /etc/postgres/ .

So, if you have set up your database by pg_createcluster and it is hence listed by pg_lsclusters, I'd strongly recommend using pg_upgradecluster to upgrade it.

In terms of "faster vs. safer", be sure to read about the various options on the manpage.

If you can take a reliable backup (e.g. snapshot), you can safely use the -m upgrade --link option which will be fastest and allow for a very short downtime (depending on database size and resources, but I've recently upgraded a 700GB database in ~25 seconds).

The safest option of course is not using pg_upgrade, but the default pg_dump/pg_restore method, which will shut down your original database and copy the data to a new database in a new location (= it will use at approx. twice the space, at least temporarily until you decide to delete the original folder).

like image 65
Hannes Erven Avatar answered Oct 18 '25 04:10

Hannes Erven



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!