Episode ini membahas cara memperluas kapasitas Vitess: online resharding dengan VReplication, perbedaan splitting dan moving shards, scaling jumlah replica, serta keputusan vertical vs horizontal scaling.

Semua database akhirnya bertemu dinding yang sama: kapasitas. Episode 16 membahas bagaimana Vitess melewati dinding itu tanpa downtime — lewat resharding. Ini adalah fitur yang paling ditakuti dan paling diandalkan oleh operator Vitess: menakutkan karena salah urutan berarti bencana, andal karena sudah dipakai bertahun-tahun oleh perusahaan sekelas YouTube dan Slack.
Roadmap episode 16: kapan harus resharding, online resharding dengan VReplication, perbedaan splitting dan moving shards, scaling replica, lalu vertical vs horizontal scaling.
Resharding adalah operasi besar — jangan dilakukan tanpa alasan jelas. Tanda-tanda yang umum:
Resharding tidak harus mengubah jumlah shard. Kadang yang dibutuhkan move shards: memindahkan shard ke hardware atau region yang lebih cocok. Episode ini membahas keduanya.
Resharding di Vitess berjalan online: data disalin ke shard baru sambil aplikasi tetap melayani traffic. Mesin di baliknya adalah VReplication (episode 10). Alur utamanya:
-80 dan 80-) untuk keyspace.0 ke shard baru.vtctlclient CreateShard users/-80
vtctlclient CreateShard users/80-Perintah vtctlclient CreateShard membuat shard baru yang masih kosong. Langkah berikutnya adalah workflow resharding — di versi Vitess modern, gunakan workflow dengan target shard:
vtctlclient Reshard --source-shards=0 \
--target-shards=-80,80- users create split_users
vtctlclient Workflow --keyspace=users show split_usersPerintah vtctlclient Workflow ... show memantau progres: berapa data tersalin, berapa lag, dan kapan aman untuk switch.
Warning
Resharding mengubah cara data dirutekan. Pastikan VSchema sudah mendukung shard baru sebelum switch, dan jangan hapus shard lama sampai workflow complete dan kalian yakin data lama tidak dibutuhkan lagi.
Splitting memecah satu shard menjadi beberapa: 0 menjadi -80 dan 80-, atau -80 menjadi -40 dan 40-80. Kapasitas total naik karena data terbagi merata. Ini operasi paling umum untuk pertumbuhan.
Moving shards memindahkan shard dari satu cell/region ke cell/region lain tanpa mengubah jumlahnya. Berguna saat relokasi infrastruktur, atau saat satu region tidak lagi ideal. Data disalin ke lokasi baru, disinkronkan, lalu traffic dipindahkan.
vtctlclient MoveTables --source=commerce --tables=orders users create order_move
vtctlclient MoveTables --source=commerce --tables=orders users order_move switchtrafficvtctlclient MoveTables memindahkan tabel orders dari keyspace commerce ke users — contoh moving shards di level keyspace yang juga dipakai untuk relokasi.
Info
Aturan emas resharding: satu keyspace boleh direshard, tapi jangan pernah mengubah dua hal sekaligus. Pisahkan pemindahan tabel dari pemecahan shard. Mengubah vindex dan jumlah shard bersamaan membuat debugging jadi mimpi buruk.
Resharding menambah primary (kapasitas tulis). Untuk kapasitas baca, tambah replica. Ini operasi ringan: bootstrap tablet baru dari backup terbaru, lalu biarkan ia mengejar replikasi.
vtctlclient ListAllTablets -keyspace_shard=users/0vtctlclient ListAllTablets menampilkan tablet per shard — kalian bisa melihat berapa replica yang sudah ada dan menambahkan jika beban baca naik.
Rekomendasi praktis: mulai dari vertical scaling untuk menunda kompleksitas, lalu beralih ke horizontal (resharding) saat vertical tidak lagi masuk akal secara biaya atau teknis.
Setelah switch traffic selesai, pekerjaan belum berakhir. Shard lama masih menyimpan data yang tidak lagi dirutekan — biarkan itu menjadi pemborosan storage dan biaya operasi. Tahap terakhir resharding adalah pembersihan:
vtctlclient Reshard --keyspace=users --source-shards=0 \
--target-shards=-80,80- complete split_usersvtctlclient Reshard ... complete menandai workflow selesai. Jangan terburu-buru menghapus data lama sebelum kalian yakin — beri jeda waktu observasi setelah switch sebelum menghapus sumber.
Warning
Jangan menghapus shard sumber terlalu cepat. Paling aman: tunggu beberapa siklus backup penuh setelah switch, lalu verifikasi lagi bahwa tidak ada aplikasi atau pipeline yang masih membaca dari shard lama.
Pada episode 16 ini kalian sudah memahami cara memperluas kapasitas Vitess: kapan resharding dibutuhkan, online resharding dengan VReplication yang berjalan tanpa downtime, perbedaan splitting dan moving shards, scaling replica untuk beban baca, serta keputusan vertical vs horizontal scaling.
Inti yang harus dibawa pulang:
vtctlclient Workflow show adalah alat pantau progres resharding.Di episode 17 berikutnya kita gabungkan dua dunia: hybrid workloads dan OLAP integration — memisahkan OLTP dan OLAP, read replica untuk reporting, ekspor snapshot, dan integrasi ETL dengan data warehouse. Sampai jumpa!