An Azure managed PostgreSQL database service for app development and deployment.
Peram has covered the main migration path and the limitation around migrating password hashes. I would also like to highlight a few additional considerations for the migration:
- Since the target is PostgreSQL 17 Flexible Server, make sure the PostgreSQL client utilities used for the migration are compatible with the target version.
- For a single-node Elastic Cluster where Citus/sharding isn't being used, verify that there are no distributed tables or Citus-dependent objects before removing Citus-related dependencies.
- Elastic Cluster migration documentation currently supports logical migration using
pg_dump/pg_restoreorpgcopydb. - Server-level settings/parameters should be reviewed separately because they aren't automatically carried over as part of a database dump. They should be compared and configured on the target as required.
- Users and roles need separate consideration during migration. Azure Database for PostgreSQL Flexible Server has managed service roles and does not provide customer access to the PostgreSQL superuser.
- As already mentioned, password hashes cannot be migrated from Flexible Server, so application/service credentials should be planned for reset or rotation during cutover.
- Before production cutover, validate the restored databases, extensions, users/roles, permissions, application connectivity, and any required server parameters.
- If HA or read replicas are required on the new Flexible Server, it is recommended to enable them after the migration and validation are completed.
For testing, it would also be useful to perform a dry run/non-production migration first and validate the application workload before the final cutover
References:
- Elastic Cluster limitations and migration guidance
- Azure Database for PostgreSQL Migration Service
- Manage users in Azure Database for PostgreSQL Flexible Server
I hope this helps. Please let me know if you have any questions.