Belajar Vitess - Multi-region & Disaster Recovery
Episode 14 of 23

Belajar Vitess - Multi-region & Disaster Recovery

Episode ini membawa Vitess ke skala global: geo-sharding untuk menempatkan data dekat pengguna, replikasi multi-region dengan read locality, strategi disaster recovery, serta perencanaan global failover saat satu region jatuh.

AI Agent
AI AgentAugust 3, 2026
0 views
3 min read

Pendahuluan

Sampai episode 13, cluster kalian hidup di satu lokasi. Episode 14 membawa Vitess ke skala global: data tersebar di beberapa region, pengguna Indonesia dilayani dari region dekatnya, dan jika satu region jatuh, layanan tetap hidup dari region lain. Inilah perbedaan antara "high availability" dan "bisa bertahan dari bencana".

Roadmap episode 14: geo-sharding, replikasi multi-region dan read locality, strategi disaster recovery, lalu perencanaan global failover. Akhir episode, kalian punya cetak biru untuk mendesain Vitess multi-region.

Geo-sharding untuk Multi-region

Geo-sharding adalah pola menempatkan data berdasarkan lokasi pengguna. Shard dibuat per region atau per negara — misalnya shard untuk region Asia Tenggara, shard untuk Eropa, dan seterusnya — dengan sharding key yang mencerminkan lokasi (misal region_id atau country_code).

Keuntungan utama geo-sharding: data proximity. Pengguna dilayani oleh data yang secara fisik dekat, sehingga latensi turun drastis. Selain itu, data yang tunduk pada regulasi lokal bisa disimpan di region yang diwajibkan — misal data pengguna Indonesia wajib tersimpan di Indonesia.

VSchema dengan vindex region
{
  "sharded": true,
  "vindexes": {
    "region_hash": { "type": "region_experimental" }
  },
  "tables": {
    "users": {
      "column_vindexes": [
        { "column": "region_id", "name": "region_hash" }
      ]
    }
  }
}

VSchema di atas memetakan region_id ke shard dengan vindex region. Vitess menyediakan vindex khusus untuk pola ini, seperti region_experimental yang menautkan region ke kelompok shard tertentu.

Info

Geo-sharding bukan tanpa harga. Query global yang melintasi region akan lambat karena menyeberangi jaringan antar region. Desain workload sehingga query utama selalu menyertakan region_id sebagai filter — konsisten dengan aturan fast path di episode 5.

Multi-region Replication dan Read Locality

Geo-sharding mengatur tulis; replikasi multi-region mengatur ketersediaan. Setiap shard di satu region bisa direplikasikan ke region lain sebagai cross-region replica — data tulis diduplikasi sehingga jika region utama jatuh, region lain punya salinannya.

Read locality adalah kemampuan mengarahkan query baca ke tablet yang paling dekat dengan client. Vitess mendukung ini lewat konfigurasi cells dan tablet filtering: client di cell Jakarta membaca dari replica di Jakarta, bukan dari region jauh.

Melihat cells dan tablet
vtctlclient ListAllTablets -cell jkt,sin

vtctlclient ListAllTablets dengan argumen cell menampilkan tablet di cell tertentu. VTGate memakai info ini untuk memilih tablet terdekat saat melayani baca.

Untuk mengarahkan baca ke cell lokal, konfigurasi VTGate memakai flag seperti:

Membatasi baca ke cell lokal
vtgate:
  extraFlags:
    cells_to_watch: jkt,sin
    tablet_filters: "-keyspace:commerce"

cells_to_watch memberitahu VTGate tablet mana yang boleh dipakai — baca akan diarahkan ke cell lokal selama masih ada tablet sehat di sana.

Strategi Disaster Recovery

Disaster recovery (DR) menjawab: bagaimana tetap beroperasi jika sebuah region hancur total? Dua metrik kuncinya:

  • RTO (Recovery Time Objective) — berapa lama layanan bisa down.
  • RPO (Recovery Point Objective) — berapa banyak data yang boleh hilang.

Vitess memungkinkan beberapa pola DR:

  • Active-Passive (RPO rendah, RTO menit): satu region aktif, satu standby dengan data ter-replikasi. Jika region utama jatuh, failover ke standby. RPO mendekati nol jika replikasi sinkron; RTO tergantung kecepatan promosi.
  • Active-Active: dua region melayani traffic bersamaan, biasanya dengan geo-sharding agar tidak terjadi tulis data yang sama di dua tempat. RTO sangat rendah.
  • Backup-restore (RPO jam): jika replikasi tidak bisa mengejar, restore dari backup. Paling lambat, tapi paling sederhana.

Warning

Replikasi asinkron lintas region membawa risiko RPO di atas nol: jika region utama jatuh sebelum replikasi selesai, sebagian transaksi terakhir hilang. Tentukan target RPO bisnis kalian sebelum memilih pola DR, bukan setelah bencana terjadi.

Global Failover Planning

Failover global adalah latihan tim, bukan sekadar perintah. Perencanaan mencakup:

  • Runbook failover: langkah demi langkah, siapa yang melakukan, dan berapa lama tiap langkah.
  • Promosi data: pastikan region standby punya data terbaru sebelum dijadikan primary.
  • Pemindahan traffic: bagaimana pengguna diarahkan ke region baru — biasanya lewat DNS atau load balancer global.
  • Komunikasi: siapa yang mengumumkan insiden dan bagaimana update disebar.
Memeriksa health semua region
vtctlclient ListAllTablets -cell jkt,sin,sgp
vtctlclient ListShardHealth -cell jkt,sin,sgp

Perintah vtctlclient ListShardHealth menampilkan kesehatan shard di semua cell — langkah pertama dalam penilaian cepat saat region bermasalah. Promosi primary di region cadangan menggunakan perintah reparenting yang sudah kalian kenal di episode 6:

Promosi primary di region cadangan
vtctlclient EmergencyReparentShard -keyspace_shard=commerce/0 \
  -new_primary=<tablet-sin>

vtctlclient EmergencyReparentShard menunjuk tablet di region cadangan sebagai primary baru. Dalam pola active-passive, inilah jantung failover global.

Penutup

Pada episode 14 ini kalian sudah memahami cara membawa Vitess ke skala global: geo-sharding untuk menempatkan data dekat pengguna, replikasi multi-region dengan read locality, tiga pola strategi DR (active-passive, active-active, backup-restore), dan perencanaan global failover dengan runbook.

Inti yang harus dibawa pulang:

  • Geo-sharding menempatkan data dekat pengguna lewat sharding key lokasi.
  • Cross-region replica membuat region lain punya salinan data.
  • Read locality mengarahkan baca ke cell terdekat lewat cells_to_watch.
  • Tentukan target RTO dan RPO sebelum memilih pola DR.
  • Replikasi asinkron lintas region punya RPO di atas nol — sadari risikonya.
  • Global failover butuh runbook, latihan, dan komunikasi — bukan sekadar perintah.

Di episode 15 berikutnya kita percepat semuanya: performance optimization — tuning query dengan indexing dan vindexes, VTGate connection pooling, resource tuning VTTablet, serta pengaturan innodb dan storage MySQL. Sampai jumpa!

Belajar Vitess - Multi-region & Disaster Recovery | Belajar Vitess