Topik 13
Pemulihan Sistem Basis Data Terdistribusi
Komitmen tiga fase, partisi jaringan, kuorum, dan CAP.
Kemampuan akhir yang diharapkan. Memahami teknik pemulihan kegagalan pemrosesan data terdistribusi.
Mengapa 3PC ada
Kelemahan 2PC bukan kelalaian implementasi, melainkan sifat protokolnya: keadaan READY bertetangga langsung dengan COMMIT maupun ABORT, sehingga peserta di keadaan itu tidak punya dasar untuk memilih. 3PC menyisipkan satu keadaan antara — PRE-COMMIT — yang hanya bertetangga dengan COMMIT.
| Fase | Koordinator | Peserta |
|---|---|---|
| 1 — Voting | Kirim PREPARE | Balas VOTE-COMMIT / VOTE-ABORT, masuk READY |
| 2 — Pre-commit | Kirim PRE-COMMIT bila semua setuju | Masuk PRE-COMMIT, balas ACK — kini tahu keputusan global pasti COMMIT |
| 3 — Commit | Kirim GLOBAL-COMMIT | Commit dan balas ACK |
Aturan terminasi 3PC
- Ada peserta di keadaan COMMIT → semua commit
- Ada peserta di keadaan ABORT → semua abort
- Ada peserta di keadaan PRE-COMMIT → semua commit, karena PRE-COMMIT hanya dikirim setelah semua suara masuk
- Tidak ada satu pun di PRE-COMMIT → semua abort, karena berarti keputusan commit belum pernah dibuat
3PC menambah satu putaran pesan sehingga lebih lambat pada jalur normal. Imbalannya: tidak ada keadaan yang bertetangga dengan COMMIT dan ABORT sekaligus, sehingga peserta selalu bisa memutuskan sendiri.
Partisi jaringan
Jaringan terbelah menjadi dua kelompok yang saling tak terlihat. Tidak ada protokol yang dapat menjamin konsistensi sekaligus ketersediaan di kedua sisi — inilah isi teorema CAP.
| Strategi | Yang dikorbankan | Contoh sistem |
|---|---|---|
| CP — hanya sisi mayoritas melayani tulis | Ketersediaan di sisi minoritas | Oracle RAC dengan voting disk, etcd, ZooKeeper |
| AP — kedua sisi tetap melayani | Konsistensi (diselesaikan belakangan) | Cassandra, DynamoDB, Oracle GoldenGate asinkron |
| CA — asumsi partisi tidak terjadi | Toleransi partisi, yang tidak boleh dikorbankan | Basis data satu mesin |
PACELC melengkapi CAP: kalau ada Partisi pilih A atau C; Else (jaringan sehat) pilih L (latensi rendah) atau C (konsistensi). Pertukaran tetap ada bahkan ketika tidak ada kegagalan sama sekali.
Kuorum
Dengan N salinan, kuorum baca R dan kuorum tulis W, konsistensi kuat dijamin bila R + W > N — himpunan baca dan himpunan tulis pasti beririsan sehingga pembaca selalu melihat tulisan terakhir. Bila W > N/2, urutan tulis juga terjamin.
RTO dan RPO
| Strategi replikasi | RPO (data yang mungkin hilang) | Harga |
|---|---|---|
| Sinkron | 0 — tidak ada transaksi hilang | Setiap commit menunggu situs jauh; latensi naik |
| Asinkron | Sebesar jeda replikasi (detik sampai menit) | Commit lokal tetap cepat |
| Backup berkala | Sebesar interval backup (jam) | Paling murah, paling banyak kehilangan |
Coba di terminal
Kueri di bawah memperagakan konsep topik ini pada data sungguhan. Tekan ▶ Jalankan untuk membukanya di Terminal SQL, lalu ubah sesuka hati — sesi terminal adalah salinan pribadi di peramban Anda.
Pemulihan ke titik konsisten
ROLLBACK mengembalikan basis data ke COMMIT terakhir — dasar pemulihan transaksi. rumahsakit
DELETE FROM pasien_dokter WHERE biaya < 300000;
SELECT COUNT(*) AS setelah_hapus FROM pasien_dokter;
ROLLBACK;
SELECT COUNT(*) AS setelah_pulih FROM pasien_dokter;
RPO: data yang belum COMMIT hilang
Perubahan yang belum di-COMMIT tidak ikut dipulihkan; \reset meniru crash sebelum COMMIT. rumahsakit
INSERT INTO administrator VALUES (5, 'Baru', 'Pagi', 'Jakarta');
\reset
SELECT COUNT(*) AS admin FROM administrator;
Jalankan sendiri
Simulator 2PC & 3PC
Injeksi kegagalan koordinator, peserta, dan partisi jaringan — lalu lihat siapa yang terblokir.
Ketersediaan & CAP
MTBF/MTTR, ketersediaan replika, kuorum R+W>N, CAP dan PACELC, RTO dan RPO.
Sumber: Modul 1 (RPS pekan 13)