If I ask this question without mention the PG version I upgrade from and to, and don't mention the operating system, and don't mention replication, would the standard answer be: Use pg_upgrade!
I have looked through https://www.postgresql.org/docs/9.6/static/pgupgrade.html but it seems more complicated than necessary. My actual situation was PG version from 9.3 to 9.6, on the same server, no replication, and OS was Windows. I did: * SET PGUSER=postgres * SET /P PGPASSWORD= * change port number in 9.3 and restart * 9.3\bin\pg_dumpall.exe --port=5431 | 9.6\bin\psql.exe --port=5433 * change port number on 9.6 to 5432 and restart, done It went very good but took 100 minutes - where we had downtime - not so good. Would it have been: * better * faster * safer * easier with pg_upgrade? The way I did it is similar to what I have done with Oracle and MySQL. It feels right. best regards Hans