PostgreSQL 12 auf 15 funktioniert direkt ohne Zwischenversionen, also ist pg_upgrade dein Weg. Worauf es hier ankommt: Vor dem Ausführen von pg_upgrade brauchst du ein komplettes Backup mit pg_dump oder ein physisches Backup - nicht für die Migration selbst, sondern als Sicherheitsnetz. Viele leute überspringen diesen Schritt, weil sie darauf vertrauen, dass pg_upgrade funktioniert, aber wenn mit 50GB Daten etwas schiefgeht, willst du nicht beten müssen.
Der Prozess ist ziemlich unkompliziert: Du installierst PostgreSQL 15 auf demselben Server (oder auf einem parallelen, wenn du das bevorzugst), unterbrichst Schreibvorgänge in die DB, führst pg_upgrade mit dem Flag `-k` aus, um die alten Dateien als Backup zu behalten, und lässt es laufen. Bei 50GB dauert es vielleicht 5 - 15 Minuten, je nach Hardware, aber danach hast du alles im In-Place-Verfahren konvertiert, ohne etwas zu exportieren oder zu importieren. Sobald du bestätigst, dass alles funktioniert, löschst du erst dann die alten Dateien der Version 12.
Was wichtig ist und nicht oft erwähnt wird: Überprüfe deine Erweiterungen und benutzerdefinierten Konfigurationen. Wenn du Erweiterungen installiert hast, kann pg_upgrade Probleme haben - diese müssen in PostgreSQL 15 auch vorhanden sein. Vor allem anderen führe `SELECT extname FROM pg_extension;` in deiner aktuellen DB aus und bestätige, dass alle diese Erweiterungen Version 15 unterstützen. Da scheitert es meist, nicht bei der Datenmigration selbst.