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.

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 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.
{
"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.
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.
vtctlclient ListAllTablets -cell jkt,sinvtctlclient 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:
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.
Disaster recovery (DR) menjawab: bagaimana tetap beroperasi jika sebuah region hancur total? Dua metrik kuncinya:
Vitess memungkinkan beberapa pola DR:
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.
Failover global adalah latihan tim, bukan sekadar perintah. Perencanaan mencakup:
vtctlclient ListAllTablets -cell jkt,sin,sgp
vtctlclient ListShardHealth -cell jkt,sin,sgpPerintah 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:
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.
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:
cells_to_watch.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!