Odd… From the context, that same JSON parsing error persists across multiple restart attempts? How long ago was the database created? (It looks like the older, Stolon variety.)
$ fly m list -a db-app-name # will reveal number of nodes
$ fly image show -a db-app-name # will say `postgres` instead of
# `postgres-flex` if Stolon
$ fly m status -a db-app-name # may mention a migration
The /fly/ directory is on the root partition instead of the persistent volume, if I understand correctly, so it might be a case of the Machine’s overlays or similar getting a little wedged. (Apparently, something along those same very general lines can happen with /etc/hosts.) It might be necessary to fork the volume and then attach that to a freshly cloned Machine.
Aside: Other ways of detecting Machine migrations…
https://community.fly.io/t/psa-machine-migration-has-started-again/20265/13