Recovery Pemulihan Basisdata Konsep Pemulihan Basisdata Pemulihan Transaksi
Recovery (Pemulihan Basisdata) –Konsep Pemulihan Basisdata –Pemulihan Transaksi –Protokol Commit –Demo dan Simulasi Recovery 1
Konsep Pemulihan Basisdata Klasifikasi Failure • Transaction failure : – – • Logical errors: transaksi tidak bisa diselesaikan karena adanya kondisi kesalahan internal (bad input, data not found, overflow) System errors: sistem basisdata harus memusnahkan sebuah transaksi yang sedang aktif karena adanya kondisi error (misal. Deadlock) System crash: power failure atau failure pada hardware atau software menyebabkan sistem crash (menyebabkan hilangnya isi volatile storage). – Fail-stop assumption: isi non-volatile storage diasumsikan tidak akan rusak oleh sistem crash • • Sistem basisdata yang didesain dengan baik mempunyai banyak pemeriksaan integritas sehingga kerusakan data di disk tidak terjadi. Disk failure: head crash atau failure pada saat operasi data transfer yang menyebabkan kerusakan seluruh atau sebagian disk storage – Kerusakan diasumsikan dapat dideteksi: disk drive menggunakan checksum untuk mendeteksi failure. 2
Konsep Pemulihan Basisdata Algoritma Recovery • Algoritma recovery adalah teknik-teknik yang menjamin konsistensi database dan atomicity dan durability sebuah transaksi meskipun terjadi failure • Algoritma recovery mempunyai dua bagian 1. Aksi-aksi yang diambil selama pemrosesan transaksi secara normal untuk menjamin tesedianya cukup informasi untuk pulih dari suatu kegagalan (failure) 2. Aksi-aksi yang diambil setelah terjadi failure untuk memulihkan isi basisdata ke keadaan yang menjamin Actions taken after a failure to recover the database contents to a state that ensures atomicity, consistency and durability 3
Konsep Pemulihan Basisdata Perangkat Penyimpanan (Storage) • Volatile storage: – Tidak bisa bertahan jika terjadi system crash – contoh: main memory, cache memory • Nonvolatile storage: – Bisa bertahan jika terjadi system crashes – examples: disk, tape, flash memory, • Stable storage: – Bentuk penyimpanan yang berupa “wacana” di mana sanggup bertahan dari segala failure – Penyimpanan seperti ini diperoleh dengan membuat beberapa salinan data pada media non-volatile (biasanya di tempat yang saling berjauhan) 4
Konsep Pemulihan Basisdata Implementasi Stable-Storage • Membuat beberapa copy tiap blok pada disk yang berbeda • • – Salinan-salinan ini bisa pada remote site untuk melindungi terhadap bencana seperti kebakaran atau banjir Kegagalan selama data transfer dapat tetap menyebabkan salinan yang tidak konsisten: Block transfer dapat berakhir dengan: – Successful completion (blok transfer sukses dijalankan) – Partial failure: block tujuan mempunyai informasi yang tidak benar (terjadi di tengah transfer) – Total failure: block tujuan tidak pernah di-update Untuk melindungi media penyimpanan dari failure selama data transfer (satu solusi): – Eksekusi operasi output sebagai berikut (misalkan kita punya dua copy untuk masing-masing block): 1. Tuliskan informasi pada block fisik pertama. 2. Ketika operasi penulisan pertama sukses, tuliskan informasi yang sama pada block fisik kedua. 3. Operasi output dianggap selesai hanya setelah operasi penulisan kedua selesai. 5
Konsep Pemulihan Basisdata Implementasi Stable-Storage (lanjt) • Salinnan-salinan (copy) suatu block dapat berbeda karena terjadi failure pada saat operasi output. Untuk pulih (recover) dari keadaan tersebut : 1. Pertama temukan blok-blok yang tidak konsisten : 1. Solusi mahal: Bandingkan dua copy masing-masing disk block. 2. Solusi yang lebih baik: n Catat operasi penulisan ke disk yang sedang berlangsung (in-progress) ke non-volatile RAM atau area khusus di disk. n Gunakan informasi ini selama recovery untuk menemukan block yang mungkin tidak konsisten, dan hanya dibandingkan dengan apa yang tertulis di non-volatile RAM. 2. Jika salah satu copy blok yang tidak konsisten terdeteksi mempunyai error (bad checksum), overwrite (timpa) dengan copy yang lain. Jika keduanya tidak memiliki error, tetapi berbeda, timpa blok kedua oleh blok pertama. 6
Konsep Pemulihan Basisdata Akses Data • Physical blocks adalah blok-blok yang berada di disk • Buffer blocks adalah blok-blok yang berada sementara di main memory. • Pergerakan block antara disk dan main memory diawali oleh kedua operasi berikut ini: : – input(B) memindahkan physical block B ke main memory. – output(B) memindahkan block B ke disk, dan mengganti physical block yang sesuai di sana. • Masing-masing transaksi Ti mempunyai area kerjanya masing -masing di mana local copy dari semua item data yang diakses dan di-update olehnya disimpan. – Local copy. Ti dari sebuah item data X disebut xi. • Kita asumsikan, untuk penyederhanaan, masing-masing item data bisa masuk ke dalam, dan disimpan di dalam, satu buah block. 7
Konsep Pemulihan Basisdata Akses Data (lanjt) • Transaksi memindahkan item-tem data antara sistem buffer block dan private work-arenya menggunakan operasi-operasi berikut ini: – read(X) memberikan nilai item data X ke variabel lokal xi. – write(X) memberikan nilai variabel lokal xi item data {X} dalam buffer block. – Kedua perintah ini memerlukan instruksi input(BX) sebelumnya, jika blok BX di mana X berada belum terdapat di memory. • Transaksi-transaksi – Lakukan read(X) sementara mengakses X untuk pertama kali ; – Semua akses berikutnya adalah terhadap local copy. – Setelah akses terakhir, transaksi mengeksekusi write(X). • output(BX) tidak harus segera mengikuti write(X). Sistem dapat melakukan operasi output jika dianggap sudah waktunya. 8
Konsep Pemulihan Basisdata • Contoh Akses data input(A) Buffer Block A x Buffer Block B Y A output(B) read(X) write(Y) x 2 x 1 B disk y 1 work area of T 1 memory work area of T 2 9
Konsep Pemulihan Basisdata Recovery dan Atomicity • Memodifikasi database tanpa menjamin bahwa transaksi akan commit dapat menyebabkan database berada pad state yang tidak konsisten. • Jika kita kembali ambil contoh transaksi Ti yang melakukan transfer $50 dari account A ke account B; tujuannya adalah untuk melakukan semua perubahan yang diperbuat oleh Ti pada database atau tidak sama sekali. • Beberapa operasi output mungkin diperlukan untuk Ti (untuk output A dan B). Suatu failure mungkin terjadi setelah satu modifikasi ini dibuat tetapi sebelum semua selesai diperbuat. 10
Konsep Pemulihan Basisdata Recovery dan Atomicity • Untuk menjamin atomicity meskipun terjadi failure, kita pertama kali menuliskan informasi yang menggambarkan perubahan ke penyimpanan stabil tanpa mengubah database-nya sendiri. • Kita mempelajari dua pendekatan: – log-based recovery, dan – shadow-paging • Kita berasumsi (pada awalnya) bahwa transaksi-transaksi berjalan serial, yaitu, satu setelah yang lain. 11
Konsep Pemulihan Basisdata Log-Based Recovery • Sebuah log disimpan pada stable storage. – • • Ketika transaksi Ti mulai, dia mendaftarkan dirinya sendiri dengan menuliskan <Ti start>log record Sebelum Ti menjalankan write(X), log record <Ti, X, V 1, V 2> dituliskan, di mana V 1 adalah nilai X sebelum operasi write, dan. V 2 adalah nilai yang akan dituliskan ke X. – • • • Log adalah urut-urutan log record, dan memelihara aktivitas record update pada database. Log record mencatat bahwa Ti telah melakukan operasi write pada item data Xj di mana mempunyai nilai V 1 sebelum operasi penulisan, dan akan mempunyai nilai V 2 setelah penulisan. Ketika Ti selesai mengeksekusi statement terakhir, log record <Ti commit> ditulis. Kita berasumsi untuk sekarang bahwa log record langsung dituliskan ke stable storage (yakni, mereka tidak di-buffer terlebih dahulu) Dua pendekatan menggunakan log – – Deferred database modification (mengangguhkan penulisan modifikasi database) Immediate database modification (langsung menuliskan modifikasi database) 12
Konsep Pemulihan Basisdata Deffered Database Modification • Skema deferred database modification menuliskan semua modifikasi ke log, tetapi menunda semua operasi write sampai setelah partial commit. • Jika diasumsikan transaksi dilakukan secara serial • Transaksi dimulai dengan menuliskan record <Ti start> ke log. • Operasi write(X) dituliskan di log record sebagai <Ti, X, V>, di mana V adalah nilai baru untuk X – Catatan: nilai lama tidak diperlukan untuk skema ini • Operasi penulisan (write) tidak dilakukan pada X pada saat ini, tetapi ditunda. • Ketika Ti mencapai state partial commit, maka, <Ti commit> dituliskan ke log • Akhirnya, log record dibaca dan digunakan untuk secara aktual mengeksekusi operasi write yang sebelumnya ditunda. 13
Konsep Pemulihan Basisdata Deffered Database Modification (lanjt) • Selama recovery setelah crash, transaksi perlu dilakukan lagi jika dan hanya jika baik <Ti start> maupun <Ti commit> ada di log. • Mengulang transaksi Ti ( redo. Ti) mengubah nilai semua item data yang diupdate oleh transaksi ke nilai baru. • Crash dapat terjadi pada saat – Transaksi mengeksekusi update yang asli, atau – Pada saat recovery sedang dilakukan • Contoh transaksi T 0 dan T 1 (T 0 dieksekusi sebelum T 1): T 0: read (A) T 1 : read (C) A: - A - 50 C: - C- 100 Write (A) write (C) read (B) B: - B + 50 write (B) 14
Konsep Pemulihan Basisdata Deffered Database Modification (lanjt) • Di bawah ini kita tunjukan log sebagaimana muncul pada tiga saat yang berbeda. • JIka log pada stable storage pada saat terjadi crash pada saat : (a) Tidak ada aksi redo yang dilakukan (b) redo(T 0) harus dilakukan karena <T 0 commit> ada di log (c) redo(T 0) harus dilakukan dengan diikuti oleh redo(T 1) karena <T 0 commit> dan <Ti commit> ada 15
- Slides: 15