RDS PostgreSQL erstellen
# Subnet Group erstellen (Private Subnets)
aws rds create-db-subnet-group --db-subnet-group-name firma-db-subnets --db-subnet-group-description "DB Subnets" --subnet-ids '["subnet-aaaa","subnet-bbbb"]'
# RDS Parameter Group
aws rds create-db-parameter-group --db-parameter-group-name firma-pg16-params --db-parameter-group-family postgres16 --description "Custom PostgreSQL 16 Parameters"
# Parameter anpassen
aws rds modify-db-parameter-group --db-parameter-group-name firma-pg16-params --parameters 'ParameterName=log_min_duration_statement,ParameterValue=1000,ApplyMethod=immediate'
# RDS Instance erstellen
aws rds create-db-instance --db-instance-identifier firma-prod-db --db-instance-class db.t3.medium --engine postgres --engine-version 16.2 --master-username dbadmin --master-user-password $DB_PASSWORD --allocated-storage 100 --storage-type gp3 --storage-encrypted --db-name appdb --db-subnet-group-name firma-db-subnets --vpc-security-group-ids sg-1234567890 --backup-retention-period 7 --preferred-backup-window "02:00-03:00" --no-publicly-accessible --multi-az
Multi-AZ aktivieren (Hochverfügbarkeit)
# Multi-AZ für bestehende Instanz aktivieren
aws rds modify-db-instance --db-instance-identifier firma-prod-db --multi-az --apply-immediately
# Status prüfen
aws rds describe-db-instances --db-instance-identifier firma-prod-db --query 'DBInstances[0].{Status:DBInstanceStatus,MultiAZ:MultiAZ,Endpoint:Endpoint.Address}'
Read Replica erstellen
# Read Replica für Lesezugriffe (entlastet Primary)
aws rds create-db-instance-read-replica --db-instance-identifier firma-prod-db-replica --source-db-instance-identifier firma-prod-db --db-instance-class db.t3.small --publicly-accessible false
Verbindung zur Datenbank
# Endpoint abrufen
ENDPOINT=$(aws rds describe-db-instances --db-instance-identifier firma-prod-db --query 'DBInstances[0].Endpoint.Address' --output text)
# PostgreSQL verbinden (aus EC2-Instanz im selben VPC)
psql -h $ENDPOINT -U dbadmin -d appdb
# SSL-Verbindung erzwingen
psql "postgresql://dbadmin:$DB_PASSWORD@$ENDPOINT:5432/appdb?sslmode=require"
Backups und Snapshots
# Manuellen Snapshot erstellen
aws rds create-db-snapshot --db-instance-identifier firma-prod-db --db-snapshot-identifier firma-prod-db-manual-2025-06
# Alle Snapshots anzeigen
aws rds describe-db-snapshots --db-instance-identifier firma-prod-db --query 'DBSnapshots[].{ID:DBSnapshotIdentifier,Status:Status,Date:SnapshotCreateTime}'
# Point-in-Time Recovery
aws rds restore-db-instance-to-point-in-time --source-db-instance-identifier firma-prod-db --target-db-instance-identifier firma-prod-db-restored --restore-time 2025-06-10T12:00:00Z
Performance Insights
# Performance Insights aktivieren
aws rds modify-db-instance --db-instance-identifier firma-prod-db --enable-performance-insights --performance-insights-retention-period 7
# Top-SQL-Abfragen per API abrufen
aws pi get-resource-metrics --service-type RDS --identifier db-ABCDEFG --metric-queries '[{"Metric":"db.load.avg"}]' --start-time 2025-06-10T00:00:00Z --end-time 2025-06-10T23:59:59Z
FAQ
Was kostet RDS PostgreSQL db.t3.medium?
db.t3.medium (2 vCPU, 4 GB RAM) in eu-central-1: ca. 0,068 USD/Stunde, ~49 USD/Monat. Multi-AZ verdoppelt den Preis.
Kann ich von RDS zu Self-Hosted wechseln?
Ja, mit pg_dump/pg_restore. RDS ist Standard-PostgreSQL ohne proprietäre Erweiterungen.
Fazit
AWS RDS PostgreSQL spart Datenbankadministrationsaufwand: keine Patch-Updates, automatische Backups und sofortige Failover mit Multi-AZ.
AWS RDS und Datenbankberatung für KMU in Heidelberg, Mannheim und der Rhein-Neckar-Region. Anfragen.