Lewati ke isi
ORACLEDECK

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.

FaseKoordinatorPeserta
1 — VotingKirim PREPAREBalas VOTE-COMMIT / VOTE-ABORT, masuk READY
2 — Pre-commitKirim PRE-COMMIT bila semua setujuMasuk PRE-COMMIT, balas ACK — kini tahu keputusan global pasti COMMIT
3 — CommitKirim GLOBAL-COMMITCommit 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.

StrategiYang dikorbankanContoh sistem
CP — hanya sisi mayoritas melayani tulisKetersediaan di sisi minoritasOracle RAC dengan voting disk, etcd, ZooKeeper
AP — kedua sisi tetap melayaniKonsistensi (diselesaikan belakangan)Cassandra, DynamoDB, Oracle GoldenGate asinkron
CA — asumsi partisi tidak terjadiToleransi partisi, yang tidak boleh dikorbankanBasis 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 replikasiRPO (data yang mungkin hilang)Harga
Sinkron0 — tidak ada transaksi hilangSetiap commit menunggu situs jauh; latensi naik
AsinkronSebesar jeda replikasi (detik sampai menit)Commit lokal tetap cepat
Backup berkalaSebesar 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

Sumber: Modul 1 (RPS pekan 13)