Pokud testujete beta verze PostgreSQL, dejte si pozor na upgrade 9.4 beta2 na beta3. Mění se formát datových souborů na disku. Pokud instalujete PostgreSQL ze zdrojových kódů a máte na disku jak verzi beta2, tak novější verzi beta3, může použít metodu update pomocí příkazu pg_upgrade
. Viz také článek o metodách update PostgreSQL na novou verzi.
Pokud máte jako já Debian (toho času Jessie), tato metoda není možná. Nový balíček se nepodaří nainstalovat a Debian odmítne použít skript pg_updatecluster
.
Řešení je jednoduché i když časově náročné. Provést klasický dump a load. Sám instalační skript tuto metodu doporučuje a zobrazí příslušné kroky:
To resolve the situation, before upgrading, execute:
# su - postgres
$ pg_lsclusters
$ pg_ctlcluster 9.4 main start
$ pg_dumpall --cluster 9.4/main | gzip > 9.4-main.dump.gz
$ cp -a /etc/postgresql/9.4/main 9.4-main.config
$ pg_dropcluster 9.4 main --stop
Then after the upgrade, execute:
# su - postgres
$ pg_createcluster 9.4 main
$ cp 9.4-main.config/* /etc/postgresql/9.4/main
$ pg_ctlcluster 9.4 main start
$ zcat 9.4-main.dump.gz | psql -q
$ rm -rf 9.4-main.config 9.4-main.dump.gz
Pokud máte rychlé disky, doporučuju nezdržovat se komprimováním, tedy filtry gzip
a zcat
lze vynechat.
Dalším zrychlením je potom vypnutí fsync před nahráním dumpu do aktualizované databáze. V souboru /etc/postgresql/9.4/main/postgresql.conf
stačí nastavit fsync = off
. Po nahrání dat nezapomeňte opět změnit na fsync = on
!