Files
infra-borgbackup-postgresql/readme.md
T
2026-05-31 17:29:44 +00:00

135 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Borg PostgreSQL Pull Backup
Pull-basiertes Borg Backup für PostgreSQL, läuft auf einem Raspberry Pi.
## Verzeichnisstruktur
```
borg-backup/
├── config/
│ └── backup.conf ← Konfiguration (anpassen!)
├── scripts/
│ ├── setup.sh ← Einmaliges Setup (als root)
│ ├── backup-postgres.sh ← Backup-Hauptskript
│ ├── restore-postgres.sh ← Wiederherstellung
│ └── verify-backup.sh ← Integritätsprüfung
└── systemd/
├── borg-backup.service ← Systemd-Service
└── borg-backup.timer ← Systemd-Timer (täglich 02:30)
```
---
## Schnellstart
### Schritt 1 Dateien deployen
```bash
sudo cp -r borg-backup/ /opt/borg-backup
sudo nano /opt/borg-backup/config/backup.conf # Konfiguration anpassen!
```
### Schritt 2 Setup ausführen (auf dem Pi)
```bash
sudo /opt/borg-backup/scripts/setup.sh
```
Das Skript gibt am Ende die Befehle aus, die auf dem **PostgreSQL-Server** einzurichten sind.
### Schritt 3 PostgreSQL-Server einrichten
```bash
# Auf dem PostgreSQL-Server:
sudo apt install borgbackup
sudo useradd -m -s /bin/bash borgclient
sudo mkdir -p /home/borgclient/.ssh
# Öffentlichen SSH-Schlüssel des Pi einfügen (wird vom setup.sh ausgegeben):
sudo nano /home/borgclient/.ssh/authorized_keys
sudo chmod 700 /home/borgclient/.ssh
sudo chmod 600 /home/borgclient/.ssh/authorized_keys
sudo chown -R borgclient:borgclient /home/borgclient/.ssh
# sudo für pg_dump erlauben:
sudo visudo -f /etc/sudoers.d/borgclient
# Inhalt (je Datenbank eine Zeile):
# borgclient ALL=(postgres) NOPASSWD: /usr/bin/pg_dump --format=custom --no-password <dbname>
```
### Schritt 4 Ersten Backup-Test ausführen
```bash
sudo -u borgbackup /opt/borg-backup/scripts/backup-postgres.sh
```
### Schritt 5 Systemd-Timer aktivieren
```bash
sudo systemctl enable --now borg-backup.timer
sudo systemctl list-timers borg-backup.timer
```
---
## Verwendung
### Backup manuell starten
```bash
sudo -u borgbackup /opt/borg-backup/scripts/backup-postgres.sh
```
### Logs ansehen
```bash
journalctl -u borg-backup.service -f
```
### Verfügbare Archive auflisten
```bash
sudo -u borgbackup /opt/borg-backup/scripts/restore-postgres.sh --list
```
### Datenbank wiederherstellen
```bash
# In neue Datenbank wiederherstellen:
sudo -u borgbackup /opt/borg-backup/scripts/restore-postgres.sh \
--archive myapp_production-2025-01-15T02:30 \
--database myapp_production_restored
# Als .pgdump-Datei extrahieren:
sudo -u borgbackup /opt/borg-backup/scripts/restore-postgres.sh \
--archive myapp_production-2025-01-15T02:30 \
--output-dir /tmp/restore
```
### Repository-Integrität prüfen
```bash
sudo -u borgbackup /opt/borg-backup/scripts/verify-backup.sh
```
---
## Wichtige Hinweise
### Borg-Key sichern!
Nach dem ersten Backup unbedingt den Encryption-Key sichern:
```bash
sudo -u borgbackup borg key export /backup/borg-repo ~/borg-key-backup.txt
# Datei sicher aufbewahren (z.B. verschlüsselter USB-Stick, Passwortmanager)
```
### Passphrase sichern!
Die `BORG_PASSPHRASE` aus `backup.conf` sicher aufbewahren.
**Ohne Key + Passphrase sind alle Backups unbrauchbar!**
---
## Retention Policy (Standard)
| Zeitraum | Aufbewahrung |
|-------------|-------------|
| Täglich | 7 Tage |
| Wöchentlich | 4 Wochen |
| Monatlich | 6 Monate |
Anpassbar in `config/backup.conf` über `KEEP_DAILY`, `KEEP_WEEKLY`, `KEEP_MONTHLY`.