Hi everyone! I'm planning to migrate my PostgreSQL database from Supabase to Railway where my backend is hosted, and I could really use some guidance. Currently, I only have the database on Supabase, nothing else. I'm a bit anxious about potentially losing data during this process, as I've never done this kind of migration before. Has anyone gone through this? Any tips or precautions I should take? Thanks in advance!
3 Answers
Since Supabase is basically just managed PostgreSQL, the migration should be quite straightforward. Just create a new PostgreSQL instance on Railway, export your database using `pg_dump`, and then import it into Railway using `psql` or `pg_restore`. Definitely do a test migration on a temporary database on Railway first, and it's a good idea to put your app in maintenance mode during the final migration to prevent any new writes.
I've handled this kind of migration a few times, and it's actually pretty simple. You just need to use `pg_dump` to export your Supabase database and then use `pg_restore` on Railway. Make sure to test your connection strings first and perhaps run a dry migration on a copy of your data if you're a bit worried about it. One thing to keep an eye on is if you’re using any Supabase-specific extensions or authentication methods. If it's just standard PostgreSQL tables, you should be good to go! Railway's setup is solid too; you can create a new database there and directly pipe the dump into it. To be extra cautious, you might want to keep your Supabase running in read-only mode for a day or two after the switch, just in case. By the way, how big is your database?
Thanks a lot for the helpful tips! I'm a bit paranoid about data loss, but since I designed the backend to rely solely on Supabase as a PostgreSQL provider, I think it'll be straightforward. Plus, my database size is pretty small!
Are you planning to do the migration while your users are still using the app? If not, I would recommend using `pg_dump` for the process without worrying about live changes.
I do need to keep it live, but I'm okay with putting the app in maintenance mode for about an hour. I’ll look into `pg_dump` more closely.

I appreciate the advice! I'll make sure to switch my website to maintenance mode for an hour to keep everything smooth.