PostgreSQL da 12 a 15 funziona direttamente senza passare per versioni intermedie, quindi pg_upgrade è la tua strada. Quello che conta qui è che prima di eseguire pg_upgrade, devi fare un backup completo con pg_dump o un backup fisico - non per la migrazione in sé, ma come rete di sicurezza. Molta gente salta questo passaggio perché confida che pg_upgrade funzionerà, ma se qualcosa va male con 50GB di dati, non vuoi stare a pregare.
Il processo è abbastanza direttore: installi PostgreSQL 15 nello stesso server (o in uno parallelo se preferisci), metti in pausa le scritture al DB, esegui pg_upgrade con il flag `-k` per mantenere i file vecchi come backup, e lascialo girare. Con 50GB magari ci vuole 5-15 minuti a seconda dell'hardware, ma dopo hai tutto convertito in-place senza esportare/importare nulla. Una volta che confermi che tutto funziona bene, solo allora elimini i file vecchi della versione 12.
Quello che è importante e non vedi menzonato è verificare le extension e le configurazioni custom. Se hai extension installate, pg_upgrade può avere problemi - devi assicurarti che esistano anche in PostgreSQL 15. Prima di fare qualsiasi cosa, controlla `SELECT extname FROM pg_extension;` nel tuo DB attuale e conferma che tutte quelle extension supportino la versione 15. Lì è dove di solito fallisce la cosa, non nella migrazione dei dati in sé.