π Ringkasan
Panduan ini mencakup solusi backup 3 lapis untuk database OtomaX berbasis SQL Server:
- β Backup FULL harian (.bak)
- β Backup LOG transaksi per menit (.trn)
- β
Sinkronisasi otomatis ke komputer lain via network drive (
Z:
) - β Pembersihan file backup > 3 hari
ποΈ Struktur Folder Backup
Lokasi | Konten | Komputer |
---|---|---|
D:\backup\full | Backup FULL harian OtomaX | Utama |
D:\backup\logs | Backup LOG transaksi per menit | Utama |
Z:\backup\full | Mirror dari D:\backup\full | Cadangan |
Z:\backup\logs | Mirror dari D:\backup\logs | Cadangan |
π‘ Catatan:
Z:
adalah network drive yang terhubung ke komputer cadangan- Backup disimpan dalam format terkompresi (COMPRESSION)
π οΈ Langkah Implementasi
π§ Step 0: Mapping Network Drive (Z:
)
Pada Komputer Cadangan:
New-Item -Path "C:\backup" -ItemType Directory
New-SmbShare -Name "backup" -Path "C:\backup" -FullAccess "Everyone"
Pada Komputer Utama:
net use Z: \\NAMA_KOMPUTER_CADANGAN\backup /persistent:yes
Ganti NAMA_KOMPUTER_CADANGAN
dengan hostname atau IP komputer tujuan.
πΎ Step 1: Backup FULL Harian (Jam 00:01)
SQL Server Agent Job:
DECLARE @fileName NVARCHAR(255) = CONCAT('D:\backup\full\OtomaX_FULL_', FORMAT(GETDATE(), 'yyyyMMdd'), '.bak');
BACKUP DATABASE [OtomaX]
TO DISK = @fileName
WITH INIT, COMPRESSION, STATS = 10;
β±οΈ Step 2: Backup LOG Transaksi per Menit
SQL Agent Job setiap 1 menit:
DECLARE @fileName NVARCHAR(255) = CONCAT('D:\backup\logs\OtomaX_', FORMAT(GETDATE(), 'yyyyMMdd_HHmmss'), '.trn');
BACKUP LOG [OtomaX]
TO DISK = @fileName
WITH INIT, COMPRESSION;
π Step 3: Sinkronisasi ke Komputer Cadangan
Buat script PowerShell: sync-otomax.ps1
Start-Process -WindowStyle Hidden -FilePath "powershell.exe" -ArgumentList {
while ($true) {
robocopy "D:\backup\full" "Z:\backup\full" *.bak /MIR /NP /NDL /NFL /R:1 /W:1
robocopy "D:\backup\logs" "Z:\backup\logs" *.trn /MIR /NP /NDL /NFL /R:1 /W:1
Start-Sleep -Seconds 60
}
}
Auto-start: Tambahkan ke Task Scheduler dengan trigger βAt Startupβ.
Atau jalankan manual via powershell administrator:
powershell -ExecutionPolicy Bypass -File "C:\backupZ\sync-backup.ps1"
ποΈ Step 4: Pembersihan File Lama (> 3 Hari)
PowerShell script untuk SQL Agent Job:
# Hapus backup FULL lama
Get-ChildItem "D:\backup\full\*.bak" |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-3) } |
Remove-Item -Force
# Hapus backup LOG lama
Get-ChildItem "D:\backup\logs\*.trn" |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-3) } |
Remove-Item -Force
π Estimasi Penyimpanan
Jenis Backup | Frekuensi | Rata-rata Ukuran | Total 3 Hari |
---|---|---|---|
FULL | 1x/hari | ~6 GB | ~18 GB |
LOG | 1x/menit | ~10 MB/jam | ~4.3 GB |
Total | ~22.3 GB |
π§ Troubleshooting
Gagal mapping Z:
:
- Pastikan firewall membuka port 445
- Verifikasi credential sharing folder
Robocopy error:
- Tambahkan opsi
/ZB
untuk retry dengan mode backup
SQL Agent gagal:
- Pastikan account menjalankan job punya izin
sysadmin
π― Keunggulan
- β 3-Layer Protection: FULL + LOG + Mirror
- β Minimal Storage: Kompresi + Auto-cleanup
- β Zero Cost: Fitur native Windows + SQL Server
- β Point-in-Time Recovery hingga ke detik terakhir
π Backup yang baik = Auto-pilot + Redundansi + Retention Policy
Apakah sistem ini hanya untuk database OtomaX?
Secara default panduan ini memang dikhususkan untuk OtomaX, namun dengan beberapa penyesuaian kecil, sistem ini bisa diaplikasikan untuk:
- Semua database SQL Server (MySQL/MariaDB membutuhkan modifikasi script)
- Aplikasi ERP berbasis SQL seperti Accurate, Zahir, atau DacEasy
- Database custom dengan kebutuhan backup real-time
π‘ Tips: Ganti nama database di script BACKUP DATABASE dan sesuaikan path folder backup.
Apa keunggulan sinkronisasi ke drive Z?
Implementasi network drive (Z:) memberikan 3 lapis proteksi:
- Redundansi fisik - Backup tersimpan di 2 lokasi berbeda
- Auto-failover - Jika komputer utama down, data tetap aman
- Efisiensi bandwidth - Robocopy hanya transfer perubahan (delta sync)
Bagaimana monitoring robocopy yang berjalan terus-menerus?
Untuk memantau proses sinkronisasi:
Get-Process robocopy | Format-Table -AutoSize
Atau buat log aktivitas dengan menambahkan parameter:
robocopy ... /LOG+:D:\backup\log\sync_history.txt
Frekuensi sync bisa disesuaikan di parameter Start-Sleep
(dalam detik).
Bagaimana jika SQL Server Agent tidak tersedia?
Alternatif solusi tanpa SQL Agent:
Metode | Implementasi |
---|---|
Windows Task Scheduler | Jalankan script SQL via sqlcmd.exe |
PowerShell Script | Gunakan Invoke-Sqlcmd dengan trigger waktu |
Catatan: Beberapa fitur seperti backup LOG mungkin membutuhkan konfigurasi tambahan.
Bagaimana mengatur retention policy lebih dari 3 hari?
Modifikasi script pembersihan dengan:
# Untuk 7 hari retention Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-7) }Untuk 30 hari dengan pembatasan kuota
Get-ChildItem β¦ | Sort LastWriteTime | Select -Skip 30 | Remove-Item
1. Kapasitas storage
2. Kebijakan compliance perusahaan
3. Frekuensi backup