Difference between revisions of "Strategi recovery dan pemulihan bencana"

From OnnoWiki
Jump to navigation Jump to search
(Created page with "Berikut adalah lanjutan dari **Modul 10: Strategi Backup dan Recovery**, dengan fokus pada **strategi recovery dan pemulihan bencana (disaster recovery)**, lengkap dengan **co...")
 
 
Line 1: Line 1:
Berikut adalah lanjutan dari **Modul 10: Strategi Backup dan Recovery**, dengan fokus pada **strategi recovery dan pemulihan bencana (disaster recovery)**, lengkap dengan **contoh penerapan di MySQL Ubuntu 24.04**.
+
==Tujuan Pembelajaran==
 
 
---
 
 
 
## 💾 **Modul 10 (Lanjutan): Strategi Backup dan Recovery** 
 
### 📌 Topik: Strategi Recovery dan Pemulihan Bencana
 
 
 
---
 
 
 
### 🎯 **Tujuan Pembelajaran**
 
 
Setelah mempelajari bagian ini, mahasiswa diharapkan mampu:
 
Setelah mempelajari bagian ini, mahasiswa diharapkan mampu:
- Memahami strategi pemulihan data dan layanan pasca-bencana.
+
* Memahami strategi pemulihan data dan layanan pasca-bencana.
- Menyusun prosedur recovery dari backup penuh, incremental, dan log.
+
* Menyusun prosedur recovery dari backup penuh, incremental, dan log.
- Mengimplementasikan rencana disaster recovery menggunakan MySQL di Ubuntu 24.04.
+
* Mengimplementasikan rencana disaster recovery menggunakan MySQL di Ubuntu 24.04.
 
 
---
 
 
 
## ⚠️ **10.6 Apa Itu Pemulihan Bencana (Disaster Recovery)?**
 
 
 
**Disaster Recovery (DR)** adalah prosedur untuk memulihkan database dan sistem operasional pasca insiden besar seperti:
 
- Kegagalan server atau disk
 
- Serangan siber (ransomware, DDoS)
 
- Kebakaran atau bencana alam
 
- Kerusakan sistem akibat kesalahan pengguna (drop table, delete massal)
 
  
---
+
==Apa Itu Pemulihan Bencana (Disaster Recovery)?==
 +
'''Disaster Recovery (DR)''' adalah prosedur untuk memulihkan database dan sistem operasional pasca insiden besar seperti:
 +
* Kegagalan server atau disk
 +
* Serangan siber (ransomware, DDoS)
 +
* Kebakaran atau bencana alam
 +
* Kerusakan sistem akibat kesalahan pengguna (drop table, delete massal)
  
## 🔁 **10.7 Strategi Recovery**
+
==Strategi Recovery==
  
| Jenis Recovery    | Penjelasan                                                                 |
+
{| class="wikitable"
|--------------------|----------------------------------------------------------------------------|
+
! Jenis Recovery    !! Penjelasan
| **Cold Recovery**   | Recovery dari backup offline (misalnya `.sql` hasil `mysqldump`)           |
+
|-
| **Point-in-Time Recovery (PITR)** | Mengembalikan data hingga waktu tertentu menggunakan binary log |
+
| '''Cold Recovery'''   || Recovery dari backup offline (misalnya `.sql` hasil `mysqldump`)
| **Hot Standby**     | Replikasi aktif yang bisa dialihkan (failover) secara langsung           |
+
|-
 +
| '''Point-in-Time Recovery (PITR)''' || Mengembalikan data hingga waktu tertentu menggunakan binary log
 +
|-
 +
| '''Hot Standby'''     || Replikasi aktif yang bisa dialihkan (failover) secara langsung
 +
|}
  
---
+
==Contoh Prosedur Recovery di MySQL Ubuntu 24.04==
  
## 🛠️ **10.8 Contoh Prosedur Recovery di MySQL Ubuntu 24.04**
+
===Skenario 1: '''Full Restore dari Backup SQL'''===
  
### 🧱 Skenario 1: **Full Restore dari Backup SQL**
+
'''Langkah:'''
  
#### ✅ Langkah:
+
* '''Restore backup penuh''' yang disimpan sebelumnya.
1. **Restore backup penuh** yang disimpan sebelumnya.
+
* Jalankan file SQL dengan `mysql`.
2. Jalankan file SQL dengan `mysql`.
 
  
```bash
+
mysql -u root -p < /backup/full_backup_2025-04-10.sql
mysql -u root -p < /backup/full_backup_2025-04-10.sql
 
```
 
  
---
+
===Skenario 2: '''Point-in-Time Recovery (PITR)'''===
  
### ⏱️ Skenario 2: **Point-in-Time Recovery (PITR)**
+
'''Syarat:'''
 +
* Backup penuh tersedia.
 +
* Binary log diaktifkan (lihat Modul 10.3).
 +
* Ingin memulihkan data hingga sebelum insiden (misalnya jam 14:00).
  
#### ✅ Syarat:
+
'''Langkah:'''
- Backup penuh tersedia.
 
- Binary log diaktifkan (lihat Modul 10.3).
 
- Ingin memulihkan data hingga sebelum insiden (misalnya jam 14:00).
 
  
#### 📌 Langkah:
+
# Restore dari backup penuh
 +
mysql -u root -p < /backup/full_backup_2025-04-10.sql
 +
 +
# Temukan posisi waktu dalam binary log
 +
mysqlbinlog --start-datetime="2025-04-10 00:00:00" \
 +
            --stop-datetime="2025-04-10 13:59:59" \
 +
            /var/log/mysql/mysql-bin.000001 > /tmp/pitr.sql
 +
 +
# Jalankan hasil log untuk PITR
 +
mysql -u root -p < /tmp/pitr.sql
  
```bash
+
===Skenario 3: '''Simulasi Kehilangan Server (Disaster Recovery)'''===
# Restore dari backup penuh
 
mysql -u root -p < /backup/full_backup_2025-04-10.sql
 
  
# Temukan posisi waktu dalam binary log
+
'''Langkah Pemulihan:'''
mysqlbinlog --start-datetime="2025-04-10 00:00:00" \
 
            --stop-datetime="2025-04-10 13:59:59" \
 
            /var/log/mysql/mysql-bin.000001 > /tmp/pitr.sql
 
  
# Jalankan hasil log untuk PITR
+
1. '''Setup ulang MySQL''' di server baru:
mysql -u root -p < /tmp/pitr.sql
 
```
 
  
---
+
sudo apt update
 +
sudo apt install mysql-server
  
### 🌪️ Skenario 3: **Simulasi Kehilangan Server (Disaster Recovery)**
+
2. '''Salin file backup dari remote server atau cloud:'''
  
#### ✅ Langkah Pemulihan:
+
scp user@backup-server:/backup/full_backup_2025-04-10.sql .
1. **Setup ulang MySQL** di server baru:
 
```bash
 
sudo apt update
 
sudo apt install mysql-server
 
```
 
  
2. **Salin file backup dari remote server atau cloud:**
+
3. '''Restore database:'''
```bash
 
scp user@backup-server:/backup/full_backup_2025-04-10.sql .
 
```
 
  
3. **Restore database:**
+
mysql -u root -p < full_backup_2025-04-10.sql
```bash
 
mysql -u root -p < full_backup_2025-04-10.sql
 
```
 
  
4. **Tambahkan data incremental atau log (jika ada).**
+
4. '''Tambahkan data incremental atau log (jika ada).'''
  
---
 
  
## 📋 **10.9 Rencana Recovery (Disaster Recovery Plan)**
+
==Rencana Recovery (Disaster Recovery Plan)==
  
### ✅ Komponen Utama DR Plan:
+
'''Komponen Utama DR Plan:'''
  
| Komponen            | Penjelasan                                                                 |
+
{| class="wikitable"
|----------------------|------------------------------------------------------------------------------|
+
! Komponen            !! Penjelasan
| **RTO (Recovery Time Objective)** | Berapa cepat layanan harus pulih? (misalnya: 1 jam)             |
+
|-
| **RPO (Recovery Point Objective)**| Seberapa banyak data bisa ditoleransi hilang? (misalnya: 10 menit) |
+
| '''RTO (Recovery Time Objective)''' || Berapa cepat layanan harus pulih? (misalnya: 1 jam)
| **Lokasi Backup**     | Backup harus disimpan di lokasi terpisah (cloud atau data center lain)     |
+
|-
| **Checklist Recovery**| Dokumen langkah-langkah pemulihan yang harus diuji secara berkala           |
+
| '''RPO (Recovery Point Objective)'''|| Seberapa banyak data bisa ditoleransi hilang? (misalnya: 10 menit)
 +
|-
 +
| '''Lokasi Backup'''     || Backup harus disimpan di lokasi terpisah (cloud atau data center lain)
 +
|-
 +
| '''Checklist Recovery'''|| Dokumen langkah-langkah pemulihan yang harus diuji secara berkala
 +
|}
  
---
 
  
## 🛡️ **10.10 Tips Perlindungan Data Tambahan**
+
==Tips Perlindungan Data Tambahan==
  
- Gunakan **cron job** untuk backup otomatis setiap hari/minggu.
+
* Gunakan '''cron job''' untuk backup otomatis setiap hari/minggu.
- Simpan backup di **3 lokasi berbeda** (local, remote, cloud).
+
* Simpan backup di '''3 lokasi berbeda''' (local, remote, cloud).
- Enkripsi file backup agar aman (misalnya: `gpg` atau `openssl`).
+
* Enkripsi file backup agar aman (misalnya: `gpg` atau `openssl`).
- Uji restore secara berkala agar siap saat dibutuhkan.
+
* Uji restore secara berkala agar siap saat dibutuhkan.
  
---
+
==Kesimpulan==
  
## ✅ **10.11 Kesimpulan**
+
{| class="wikitable"
 +
! Strategi Recovery        !! Kapan Digunakan                                      !! Perintah Kunci
 +
|-
 +
| Full Restore            || Jika semua data hilang                              || `mysql < full_backup.sql`
 +
|-
 +
| PITR (binary log)        || Jika ingin rollback sebagian data                    || `mysqlbinlog --stop-datetime ...`
 +
|-
 +
| Disaster Recovery Server || Jika server utama rusak total                        || `scp` + `mysql` install & restore
 +
|}
  
| Strategi Recovery        | Kapan Digunakan                                      | Perintah Kunci                      |
 
|--------------------------|------------------------------------------------------|--------------------------------------|
 
| Full Restore            | Jika semua data hilang                              | `mysql < full_backup.sql`            |
 
| PITR (binary log)        | Jika ingin rollback sebagian data                    | `mysqlbinlog --stop-datetime ...`    |
 
| Disaster Recovery Server | Jika server utama rusak total                        | `scp` + `mysql` install & restore    |
 
  
---
+
==Pranala Menarik==
  
Kalau kamu mau saya bantu buatkan skrip otomatisasi backup + recovery berbasis cron di Ubuntu, atau simulasi pemulihan dengan 2 server (failover sederhana), tinggal bilang saja!
+
* [[Database: Kuliah]]

Latest revision as of 10:11, 21 April 2025

Tujuan Pembelajaran

Setelah mempelajari bagian ini, mahasiswa diharapkan mampu:

  • Memahami strategi pemulihan data dan layanan pasca-bencana.
  • Menyusun prosedur recovery dari backup penuh, incremental, dan log.
  • Mengimplementasikan rencana disaster recovery menggunakan MySQL di Ubuntu 24.04.

Apa Itu Pemulihan Bencana (Disaster Recovery)?

Disaster Recovery (DR) adalah prosedur untuk memulihkan database dan sistem operasional pasca insiden besar seperti:

  • Kegagalan server atau disk
  • Serangan siber (ransomware, DDoS)
  • Kebakaran atau bencana alam
  • Kerusakan sistem akibat kesalahan pengguna (drop table, delete massal)

Strategi Recovery

Jenis Recovery Penjelasan
Cold Recovery Recovery dari backup offline (misalnya `.sql` hasil `mysqldump`)
Point-in-Time Recovery (PITR) Mengembalikan data hingga waktu tertentu menggunakan binary log
Hot Standby Replikasi aktif yang bisa dialihkan (failover) secara langsung

Contoh Prosedur Recovery di MySQL Ubuntu 24.04

Skenario 1: Full Restore dari Backup SQL

Langkah:

  • Restore backup penuh yang disimpan sebelumnya.
  • Jalankan file SQL dengan `mysql`.
mysql -u root -p < /backup/full_backup_2025-04-10.sql

Skenario 2: Point-in-Time Recovery (PITR)

Syarat:

  • Backup penuh tersedia.
  • Binary log diaktifkan (lihat Modul 10.3).
  • Ingin memulihkan data hingga sebelum insiden (misalnya jam 14:00).

Langkah:

# Restore dari backup penuh
mysql -u root -p < /backup/full_backup_2025-04-10.sql

# Temukan posisi waktu dalam binary log
mysqlbinlog --start-datetime="2025-04-10 00:00:00" \
            --stop-datetime="2025-04-10 13:59:59" \
            /var/log/mysql/mysql-bin.000001 > /tmp/pitr.sql 

# Jalankan hasil log untuk PITR
mysql -u root -p < /tmp/pitr.sql

Skenario 3: Simulasi Kehilangan Server (Disaster Recovery)

Langkah Pemulihan:

1. Setup ulang MySQL di server baru:

sudo apt update
sudo apt install mysql-server

2. Salin file backup dari remote server atau cloud:

scp user@backup-server:/backup/full_backup_2025-04-10.sql .

3. Restore database:

mysql -u root -p < full_backup_2025-04-10.sql

4. Tambahkan data incremental atau log (jika ada).


Rencana Recovery (Disaster Recovery Plan)

Komponen Utama DR Plan:

Komponen Penjelasan
RTO (Recovery Time Objective) Berapa cepat layanan harus pulih? (misalnya: 1 jam)
RPO (Recovery Point Objective) Seberapa banyak data bisa ditoleransi hilang? (misalnya: 10 menit)
Lokasi Backup Backup harus disimpan di lokasi terpisah (cloud atau data center lain)
Checklist Recovery Dokumen langkah-langkah pemulihan yang harus diuji secara berkala


Tips Perlindungan Data Tambahan

  • Gunakan cron job untuk backup otomatis setiap hari/minggu.
  • Simpan backup di 3 lokasi berbeda (local, remote, cloud).
  • Enkripsi file backup agar aman (misalnya: `gpg` atau `openssl`).
  • Uji restore secara berkala agar siap saat dibutuhkan.

Kesimpulan

Strategi Recovery Kapan Digunakan Perintah Kunci
Full Restore Jika semua data hilang `mysql < full_backup.sql`
PITR (binary log) Jika ingin rollback sebagian data `mysqlbinlog --stop-datetime ...`
Disaster Recovery Server Jika server utama rusak total `scp` + `mysql` install & restore


Pranala Menarik