Skip to content

Instantly share code, notes, and snippets.

@yudistiraashadi
Last active May 3, 2024 09:05
Show Gist options
  • Select an option

  • Save yudistiraashadi/3e74fcf934e560843ceba99b654648c7 to your computer and use it in GitHub Desktop.

Select an option

Save yudistiraashadi/3e74fcf934e560843ceba99b654648c7 to your computer and use it in GitHub Desktop.
Sync supabase online - local - self host (3 way)

1. Requirement

  • Terdapat Supabase instance di online / local / self host (salah satu)
  • Ter install node.js serta Docker pada mesin local

 

2. Sync ke local

Step ini dilakukan apabila supabase ada di online / self host. Step ini dapat di skip apabila sudah ada di local.

  • Pada directory yang anda inginkan, run npx supabase init untuk setup supabase folder dan config.
  • run npx supabase start untuk setup Docker (download docker image + setup)

 

3. Create migrations files

Apabila database ada di online / self host, jalankan:

npx supabase db diff -f initial_structure --db-url [connection-string-asal]

Ganti [connection-string-asal] dengan connection string asal anda.


Apabila database sudah ada di local dan belum ada migration files, jalankan:

npx supabase db diff

Kedua command tersebut sama-sama akan membuat file migration pada folder supabase\migrations. Beri nama custom pada flag -f apabila perlu.


Apabila anda melakukan perubahan pada schema auth dan storage, atau untuk jaga-jaga, lakukan db diff lagi dengan flag --schema auth,storage seperti berikut:

npx supabase db diff -f initial_structure --db-url [connection-string-asal] --schema auth,storage

 

4. Create DB Dump (data only)

File migrations yang dihasilkan dari langkah sebelumnya hanya memiliki informasi dari struktur database saja, tanpa data. Untuk mengambil datanya, bisa dilakukan dengan npx supabase db dump --data-only seperti berikut:

npx supabase db dump --data-only -f supabase/seed.sql --db-url [connection-string-asal]

Ganti [connection-string-asal] dengan connection string anda.

 

5. Validasi Schema dan Data (optional)

Apabila anda berawal dari online / self host, maka anda dapat menjalankan npx supabase db reset untuk menjalankan migrations dan seed dari file-file dari langkah sebelumnya pada database local anda. Selanjutnya anda dapat membuka Supabase Studio local untuk validasi.

 

5. Sync ke Supabase online / self host

Jalankan command berikut untuk reset db di online / self host (recommended untuk 100% sync). Ganti connection-string-tujuan dengan connection string tujuan anda:

npx supabase db reset --db-url [connection-string-tujuan]

Jalankan command berikut untuk push satu2 (apabila sudah pernah sync dan hanya ingin update perubahan saja):

npx supabase db push --db-url [connection-string-tujuan]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment