Strategi recovery dan pemulihan bencana: Difference between revisions

From OnnoCenterWiki
Jump to navigationJump 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..."
 
No edit summary
 
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 03: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