Database DevOps — DevOps

Mengelola Database di Production Database adalah komponen paling kritis — data loss tidak bisa di-undo. Database DevOps memastikan database aman, performant, da

Mengelola Database di Production

Database adalah komponen paling kritis — data loss tidak bisa di-undo. Database DevOps memastikan database aman, performant, dan bisa di-recover.

Backup Strategies

# PostgreSQL backup
pg_dump -U postgres myapp > backup_2024-01-15.sql

# Automated backup script
#!/bin/bash
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
pg_dump -U postgres myapp | gzip > /backups/myapp_$TIMESTAMP.sql.gz

# Hapus backup lebih dari 30 hari
find /backups -name "*.sql.gz" -mtime +30 -delete

# Restore
psql -U postgres myapp < backup.sql

# Point-in-time recovery (PITR) — untuk critical databases
# Butuh WAL archiving enabled

Database Migrations

# Laravel
php artisan make:migration create_orders_table
php artisan migrate

# Knex.js
npx knex migrate:make create_orders
npx knex migrate:latest

# Best practices:
# - Selalu bisa rollback (up & down)
# - Jangan alter column yang sudah berisi data tanpa plan
# - Test migration di staging dulu
# - Backup sebelum migrate di production

Database Monitoring

# Slow query log (PostgreSQL)
ALTER SYSTEM SET log_min_duration_statement = 1000; -- log query > 1 detik

# Connection monitoring
SELECT count(*) FROM pg_stat_activity;

# Table sizes
SELECT relname, pg_size_pretty(pg_total_relation_size(relid))
FROM pg_catalog.pg_statio_user_tables
ORDER BY pg_total_relation_size(relid) DESC;

Replication & High Availability

Yang akan kamu pelajari