Can your application handle being without database writes for a bit, or do you need absolute zero downtime? If you can stop writes even for just 5-10 minutes, pg_upgrade is your best friend because it converts the files on the same disk without exporting anything, so with 50GB you'll save yourself hours. Now, if you need to avoid downtime completely, there's a trick that doesn't get mentioned much: you can use logical replication to sync the old database with the new one in parallel while it keeps running, and then you switch over when everything's caught up - it's a bit more complicated to set up but it's gold if you can't stop the service. That said, before doing anything test it in a staging environment even if it's just with a dump of a few GB to see how long it takes on your specific setup.