Konsep dan proses-proses yang terkait dengan recovery model pada DBMS SQL Server. Recovery model adalah serangkaian kebijakan dan pertimbangan yang digunakan untuk mengembalikan database yang disalin/hilang/rusak ke keadaan semula sehingga database tersebut dapat diakses kembali.
1. S I S T E M M A N A J E M E N B A S I S D A T A ( S M B D )
Y O P P Y Y U N H A S N A W A , S . S T . , M . S c .
MINGGU-3
RECOVERY, BACKUP, & RESTORE
4. STRATEGI RECOVERY
IKHTISAR
• Recovery adalah proses pemulihan database dengan
mengembalikan keadaan database pada posisi tertentu
sesuai dengan ketersediaan backup.
• Bisa karena database-nya rusak, atau karena kepentingan yang lain
(misal: menyalin dari 1 instance ke instance lainnya)
• Recovery bergantung pada proses backup. Backup dapat
terdiri dari minimal 1 atau gabungan dari beberapa jenis
backup berikut:
• Backup berbasis data: Full, Differential, Copy, Filegroup, File
• Backup berbasis log: Log, Tail Log
• Level safety harus ditentukan dengan tepat:
• Seberapa waktu recovery yang di-izinkan? (RTO: Recovery Time
Objective)
• Seberapa banyak data yang boleh tidak kembali? (RPO: Recovery
Point Objective)
• Apakah mungkin mengembalikan data dari sumber yang lain?
4
5. STRATEGI RECOVERY
IKHTISAR
• Backup tidak bisa sembarangan, harus mempertimbangkan
persyaratan/keadaan di perusahaan Anda:
• Jenis dan frekuensi backup yang tepat seperti apa.
• Media backup apa yang digunakan.
• CD/DVD
• Harddisk/SSD
• Flash Storage, dll.
• Retensi (Retention).
• Kebijakan pengujian backup seperti apa.
• Tidak bisa terlalu sering dan tidak bisa terlalu sedikit.
• Terlalu sering à Mahal
• Terlalu sedikit à Data yang dikembalikan bisa tidak komplit
• Retensi: Sehauh mana data di masa lampau yang perlu
disimpan/diarsipkan.
• Contoh: Perusahaan berdiri tahun 2001, dan sekarang tahun 2020. Apakah
perlu menyimpan data dari mulai 2001? Atau 2 tahun kebelakang saja?
Atau 3 tahun ke belakang saja?
5
6. STRATEGI RECOVERY
TRANSACTION LOGING
• Adalah proses pencatatan histori aksi-aksi modifikasi
database oleh DBMS.
• Diperlukan untuk menjamin atomicity dan durability.
6
7. STRATEGI RECOVERY
TRANSACTION LOGING
7
• Oleh DBMS (dalam hal ini Database Engine,
SQLSERVR.EXE), sejumlah informasi dicatat pada file log
untuk:
• Me-rollback transaction, bila dibutuhkan.
• Masih ingatkah Anda apa itu transaction, commit, dan rollback?
• Memulihkan database pada saat terjadi failure.
• Struktur file log adalah sebagai berikut:
8. STRATEGI RECOVERY
RECOVERY MODEL
8
• Berikut ini adalah jenis-jenis strategi recovery pada SQL
Server:
Recovery Model Deskripsi
SIMPLE - Tidak perlu backup log
- Menghapus log secara otomatis untuk menghemat
storage
FULL - Memerlukan backup log
- Bisa mengembalikan data walaupun ada bagian-
bagian file data yang hilang atau corrupt
- Memungkinkan melakukan restore ke titik waktu
yang spesifik sesuai yang diinginkan (tidak harus di-
restore sampai dengan titik terakhir)
BULK LOGGED - Membutuhkan backup log
- Dapat mempercepat operasi bulk copy
- Meminimalkan storage yang digunakan dengan
tetap menyimpan log, tetapi disederhanakan
10. BACKUP
IKHTISAR
• Di SQL Server dilengkapi fasilitas backup sebagai
bagian dari strategi pemulihan (recovery)
• Sebagaima kita ketahui dipertemuan sebelumnya,
terdapat 2 jenis file untuk setiap database yang kita
buat:
• *.mdf dan *.ndf à File yang menyimpan data.
• *.ldf à File yang menyimpan log.
• Jenis-jenis backup yang umum:
• Untuk data : Full backup dan Differential backup.
• Untuk log : Transaction Log backup.
10
11. BACKUP
IKHTISAR
• Backup dilakukan secara online
• Tidak mengganggu akses pengguna
• Dapat mempelambat operasi lain karena load I/O yang meningkat
saat proses backup berjalan
• Database harus dalam state online untuk dapat menjalankan
operasi backup normal
• Namun demikian, backup transaction log masih memungkinkan
dilakukan walaupun database rusak.
• Tetapi file log-nya tidak boleh rusak (dalam keadaan intact)
• Integrasi proses backup dengan sistem operasi (Windows):
• SQL Writer service memungkinkan operasi-operasi backup dilakukan
lewat VSS (Volume Shadow Copy Service) framework di Windows.
• VDI Interface memungkinkan backup dilakukan lewat tool-tool
backup pihak ketiga.
11
12. BACKUP
FULL BACKUP
• Adalah jenis backup yang akan mencadangkan
keseluruhan database
• Backup ini juga akan mem-backup bagian aktif
dari file log.
• Pada suatu waktu bagian dari file log ada yang aktif dan
ada yang tidak
• Yang dibackup oleh backup jenis ini adalah yang aktif saja
12
14. BACKUP
DIFFERENTIAL BACKUP
• Membuat backup database dari titik setelah full backup
terakhir, sampai dengan saat perintah backup
diekseskusi.
• Log yang dibackup juga sama: hanya yang aktif saja.
• Agar bisa digunakan untuk me-restore database yang
dibackup nantinya.
• Bersifat independen terhadap backup-backup
differential yang lainnya (jika ada)
• Jika Anda melakukan differential backup lebih dari 1x, maka
masing-masing backup tersebut tidak saling berhubungan.
14
16. BACKUP
TRANSACTION LOG BACKUP
• Membuat backup terhadap transaction log.
• Hanya log-nya saja, database-nya tidak ikut di-backup!
• Bisa mem-backup semua bagian log, baik yang aktif
maupun tidak aktif.
• Yang di-backup: Mulai dari log backup terakhir
sampai dengan ujung file log.
• Default-nya hanya akan mencadangkan log yang
active saja, kecuali diaktifkan opsi untuk
mencadangkan yang tidak aktif juga.
16
17. BACKUP
TRANSACTION LOG BACKUP
17
• Catatan: Opsi Recovery Model database yang
akan di-log backup harus berada pada mode FULL
atau BULK LOGGED
18. BACKUP
TAIL LOG BACKUP
• Digunakan untuk menangkap ekor (tail) dari log, yaitu
baris-baris paling akhir log tepat sesaat sebelum operasi
restore.
• Bisa dilakukan pada saat melakukan log backup biasa
• Tujuannya adalah untuk meyakinkan bahwa operasi
paling akhir yang dilakukan pada saat database akan
direstore, tidak tertimpa/hilang ketika database selesai
direstore.
• Opsi:
• NORECOVERY à Database diset ke state: recovering
• CONTINUE_AFTER_ERROR à Ketika Anda tahu file data Anda
ada yang corrupt atau hilang, tetapi file log-nya bagus/intact.
18
20. RESTORE
IKHTISAR
• Jenis-jenis restore biasa di SQL Server:
• Complete Database Restore
• Dengan Recovery Model Simple
• Dengan Recovery Model Full
• System Database Restore
• Damaged File Restore
• Jenis-jenis restore advanced:
• Online
• Piecemeal
• Page Restore
• Merestore data digunakan perintah: RESTORE DATABASE
• Merestore log digunakan perintah: RESTORE LOG
20
21. RESTORE
TAHAPAN RESTORE
• Pada SQL Server Terdapat 3 fase pada saat proses restore
terjadi:
1. Data Copy
• Membuat file baru (data & log) kemudian menyalin data dari
backup ke file baru tersebut
2. Redo
• Mengeksekusi kembali transaksi-transaksi yang tercatat pada file log
yang direstore.
3. Undo
• Melakukan rollback transaction-transaction yang belum di-commit
pada titik pemulihan.
• Proses nomor 2 dan 3 diatas itulah, yang disebut sebagai:
RECOVERY
21
22. RESTORE
KLAUSA ‘WITH RECOVERY’
• Sebuah database yang baru selesai dipulihkan, state-nya tidak
bisa langsung online.
• Online à Bisa diakses user
• Agar bisa online, harus di-recovery terlebih dahulu. Ingat definisi recovery
pada halaman slide sebelumnya.
• Apakah Anda ingat, ada berapa macam state database di SQL Server?
• Dengan menambahkan klausa opsi ‘WITH RECOVERY’ pada
perintah RESTORE:
• Setelah proses restore database selesai, SQL Server akan secara otomatis
melakukan proses recovery dan melakukan apa yang diperlukan,
kemudian meng-online-kan database secara otomatis.
• Klausa ini default, sehingga walaupun tanpa dituliskan, akan dianggap
aktif.
• Bila digunakan ‘WITH NO RECOVERY:
• Database dibiarkan pada state recovering, sehingga mencegah user
melakukan baca tulis.
• Diperlukan apabila ada langkah-langkah custom pada saat me-restore.
22
23. RESTORE
ME-RESTORE DATABASE
• Backup Full dan Differential direstore dengan statement T-SQL: ‘RESTORE
DATABASE’
• Untuk backup differential, hanya yang terakhir saja yang direstore, tidak perlu
semuanya.
• Restore 1 full backup terakhir dan 1 differential backup yang terakhir,
gunakan ‘WITH NO RECOVERY’ bila ingin me-restore transaction log juga.
23
24. RESTORE
ME-RESTORE LOG
• Untuk me-restore log digunakan perintah: ‘RESTORE LOG’
• Diperlukan backup transaction log yang sempurna (tidak ada
yang corrupt sedikitpun) agar restore bisa berhasil.
24
25. RESTORE
KLAUSA ‘WITH STANDBY’
• Memungkinkan akses read-only pada database yang belum
selesai proses restore-nya.
• User tidak bisa melakukan perubahan data.
• Hal ini dibutuhkan pada skenario-skenario saat akses terhadap data
sangat mendesak:
• Pada saat dibutuhkan stand-by server (log shipping)
• Pada saat sedang dilakukan proses inspeksi database di saat proses restore
log sedang berjalan, sehungga restore-nya harus pelan-pelan, satu-satu.
25