Episode ini membahas cara mengubah skema dan memigrasi data tanpa downtime: peran VReplication dalam migrasi data, online schema change dengan mekanisme MySQL, dan workflow vtctlclient untuk menjalankan migrasi yang aman di produksi.

Di dunia Vitess, mengubah skema tidak bisa dilakukan dengan menekan Enter di satu server. Tabel tersebar di banyak shard, dan setiap shard punya MySQL sendiri. ALTER TABLE biasa pada tabel besar akan mengunci tabel dan membuat downtime yang tidak bisa diterima. Episode 10 membahas cara mengubah skema dan memigrasi data dengan aman, tanpa memutus layanan.
Roadmap episode 10: mengapa online migration diperlukan, mesin di baliknya (VReplication dan online schema change), workflow vtctlclient, serta checklist migrasi zero-downtime.
Bayangkan tabel dengan ratusan juta baris. Menjalankan ALTER TABLE ADD COLUMN langsung akan mengunci tabel selama proses — di MySQL, banyak ALTER memakai MDL (metadata lock) atau menulis ulang tabel. Selama itu, aplikasi tidak bisa menulis, dan di workload 24/7 itu bencana.
Vitess menyediakan tiga jalur untuk schema change:
gh-ost atau pt-osc via vreplication untuk menjalankan ALTER tanpa mengunci tabel lama.Vitess mendukung menjalankan ALTER lewat mekanisme online. Caranya: kirim DDL dengan hint khusus via VTGate, dan Vitess menjalankannya sebagai online operation menggunakan vreplication:
ALTER TABLE users ADD COLUMN bio varchar(500)Perintah di atas dikirim lewat VTGate dengan opsi online. Vitess menciptakan tabel sementara, menyalin data sedikit demi sedikit sambil memantau replikasi, lalu memotong ke skema baru. Aplikasi tidak pernah kehilangan akses tulis.
Info
Untuk tabel besar, selalu pakai online schema change daripada DDL langsung. Vitess akan menjalankan perubahan di semua shard secara konsisten dan melaporkan progresnya — kalian bisa memantau kapan migrasi selesai.
Untuk memantau migrasi online yang sedang berjalan:
vtctlclient OnlineDDL Show allvtctlclient OnlineDDL Show menampilkan daftar migrasi online, statusnya (queued, running, complete, atau failed), dan progres tiap shard.
VReplication adalah mesin penyalin data berbasis binlog yang menjadi tulang punggung migrasi data Vitess: resharding (episode 16), migrasi antar keyspace, dan online schema change semuanya memakainya. Cara kerjanya:
Karena migrasi berjalan bertahap, aplikasi tidak pernah berhenti — inilah inti zero-downtime migration.
vtctlclient VReplicationExec -json <tablet-alias> "select * from _vt.vreplication"vtctlclient VReplicationExec menjalankan query langsung ke tabel _vt.vreplication di tablet — tabel internal yang menyimpan status setiap aliran VReplication.
Vitess mengemas alur migrasi lewat workflow. Contoh workflow migrasi keyspace (MoveTables) atau penggabungan shard (ShardMerge). Alur khasnya:
vtctlclient MoveTables -source=... -tables=... commerce usersvtctlclient VReplicationExec ... statusvtctlclient SwitchTrafficvtctlclient Completevtctlclient MoveTables --source=commerce --tables=orders --target=users create order_move
vtctlclient Workflow --keyspace=users show order_move
vtctlclient MoveTables --source=commerce --target=users order_move switchtraffic
vtctlclient MoveTables --source=commerce --target=users order_move completePerintah vtctlclient Workflow ... show menampilkan status workflow — langkah mana yang sudah selesai dan berapa lag replikasi tersisa.
Sebelum menjalankan migrasi besar di produksi, siapkan checklist ini:
Warning
Jangan pernah memotong traffic sebelum yakin target mengejar ketinggalan dengan lag yang aman. Langkah switch adalah titik paling berisiko; luangkan waktu untuk memastikan target konsisten dengan sumber.
Pada episode 10 ini kalian sudah memahami cara mengubah skema dan memigrasi data tanpa downtime: DDL langsung hanya untuk perubahan ringan, online schema change untuk ALTER tabel besar, VReplication sebagai mesin penyalinan data, serta alur workflow MoveTables dengan tahap create, switch, dan complete.
Inti yang harus dibawa pulang:
ALTER tidak mengunci tabel.vtctlclient Workflow show adalah alat pantau status migrasi.Di episode 11 berikutnya kita urus konfigurasi dan rahasia: configuration management dan secrets — kustomisasi Helm dan ConfigMaps, manajemen secrets untuk kredensial MySQL dan topology, serta validasi dan rollback perubahan produksi. Sampai jumpa!