Hey everyone,
There are two important updates that i’d like to share.
Internal Migration Stability Fixes
We’ve recently released v0.0.63, which includes an important update to ensure your setup remains stable during internal migrations. These changes allow us to safely move replicas to new hosts using volume forking, creating a more seamless experience with minimal disruption—especially for those running HA setups.
Context
Before v0.0.63, our replication configuration referenced private IPs, which change when a volume is moved to a new host. While we do have tooling to handle these changes, the process can be a bit tricky and prone to errors. This release will work to convert these private IP entries to a value that’s stable across migrations, which will turn this into a non-issue.
Important Note about the update process
The update process targets replicas first and the primary last. During the upgrade, you may see warnings about the primary not being able to communicate with the replicas. This is simply because the primary hasn’t been updated yet and doesn’t know how to interpret the new configuration. Rest assured, these warnings will clear once the primary is updated.
Testing
If you’re updating a production-level database, it’s always a good idea to test the process first using a staging db. You can quickly create a staging db by forking your production Postgres app:
fly pg create --fork-from <prod-pg-app>
Updating
To upgrade, run:
fly image update --app <pg-app-name>
Upgrade Path Updates
This is long overdue, but v0.0.40
introduced a change that would lead to collation mismatches issues. For most users this can be addressed fairly easily, but for others it can be a bit of a challenge.
To prevent further headaches, the upgrade path for users on versions older than v0.0.40 is now capped at v0.0.40. Meanwhile, users running v0.0.41 and above can upgrade to the latest version without issue.
If you’re on an older setup, you can rejoin the primary upgrade chain by provisioning a new Postgres app and using fly pg import, or by performing a manual pg_dump/pg_restore.
Questions?
If you have any questions or need assistance, don’t hesitate to reach out!