From 0de7128deb2b29cf3359211e102473b4080b10d0 Mon Sep 17 00:00:00 2001 From: Jan Tojnar Date: Wed, 26 Oct 2022 15:05:13 +0200 Subject: [PATCH 1/3] doc/nixos/postgress: Streamline upgrade script We already need to set the package so no need to manually copy the schema version. --- nixos/modules/services/databases/postgresql.xml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/nixos/modules/services/databases/postgresql.xml b/nixos/modules/services/databases/postgresql.xml index 0ca9f3faed21..d113f5ed1c45 100644 --- a/nixos/modules/services/databases/postgresql.xml +++ b/nixos/modules/services/databases/postgresql.xml @@ -72,16 +72,17 @@ Type "help" for help. { config, pkgs, ... }: { = [ - (pkgs.writeScriptBin "upgrade-pg-cluster" '' + (let + # XXX specify the postgresql package you'd like to upgrade to. + newPostgres = pkgs.postgresql_13; + in pkgs.writeScriptBin "upgrade-pg-cluster" '' set -eux # XXX it's perhaps advisable to stop all services that depend on postgresql systemctl stop postgresql - # XXX replace `<new version>` with the psqlSchema here - export NEWDATA="/var/lib/postgresql/<new version>" + export NEWDATA="/var/lib/postgresql/${newPostgres.psqlSchema}" - # XXX specify the postgresql package you'd like to upgrade to - export NEWBIN="${pkgs.postgresql_13}/bin" + export NEWBIN="${newPostgres}/bin" export OLDDATA="${config.}" export OLDBIN="${config.}/bin" From e598636243c6080420153ab24af472a610e7a4ee Mon Sep 17 00:00:00 2001 From: Jan Tojnar Date: Wed, 26 Oct 2022 14:57:30 +0200 Subject: [PATCH 2/3] doc/nixos/postgress: Mention extensions in upgrading This is easy to miss and can lead to annoying failures. --- nixos/modules/services/databases/postgresql.xml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/nixos/modules/services/databases/postgresql.xml b/nixos/modules/services/databases/postgresql.xml index d113f5ed1c45..a442008db8a0 100644 --- a/nixos/modules/services/databases/postgresql.xml +++ b/nixos/modules/services/databases/postgresql.xml @@ -74,7 +74,10 @@ Type "help" for help. = [ (let # XXX specify the postgresql package you'd like to upgrade to. - newPostgres = pkgs.postgresql_13; + # Do not forget to list the extensions you need. + newPostgres = pkgs.postgresql_13.withPackages (pp: [ + # pp.plv8 + ]); in pkgs.writeScriptBin "upgrade-pg-cluster" '' set -eux # XXX it's perhaps advisable to stop all services that depend on postgresql From 04e85da1c07995d156f2e86d6c012c5fd15beaa9 Mon Sep 17 00:00:00 2001 From: Jan Tojnar Date: Wed, 26 Oct 2022 15:21:06 +0200 Subject: [PATCH 3/3] doc/nixos/postgress: Mention extensions in upgrading analyze_new_cluster script is not available in PostgreSQL 14+: https://github.com/postgres/postgres/commit/8f113698b63b15a4e0a4b15d3ee37238c1d1821d --- .../modules/services/databases/postgresql.xml | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/nixos/modules/services/databases/postgresql.xml b/nixos/modules/services/databases/postgresql.xml index a442008db8a0..e48c578e6ce6 100644 --- a/nixos/modules/services/databases/postgresql.xml +++ b/nixos/modules/services/databases/postgresql.xml @@ -131,12 +131,25 @@ Type "help" for help. - After the upgrade it's advisable to analyze the new cluster (as su -l postgres in the - , in this example /var/lib/postgresql/13): + After the upgrade it's advisable to analyze the new cluster. + + + + + For PostgreSQL ≥ 14, use the vacuumdb command printed by the upgrades script. + + + + + For PostgreSQL < 14, run (as su -l postgres in the , in this example /var/lib/postgresql/13): $ ./analyze_new_cluster.sh - The next step removes the old state-directory! + + + + + The next step removes the old state-directory! $ ./delete_old_cluster.sh