From c9c8f9e7ce94e860f4b926cc39947ab1707848a7 Mon Sep 17 00:00:00 2001 From: Micha Date: Sun, 31 May 2026 21:45:58 +0200 Subject: [PATCH] docs: add post migration burn-in check --- docs/POST_MIGRATION_BURN_IN_2026-05-31.md | 122 ++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 docs/POST_MIGRATION_BURN_IN_2026-05-31.md diff --git a/docs/POST_MIGRATION_BURN_IN_2026-05-31.md b/docs/POST_MIGRATION_BURN_IN_2026-05-31.md new file mode 100644 index 0000000..7801f75 --- /dev/null +++ b/docs/POST_MIGRATION_BURN_IN_2026-05-31.md @@ -0,0 +1,122 @@ +# Post-Migration Burn-in Check - 2026-05-31 + +Stand: 2026-05-31 21:45 MESZ + +## Ergebnis + +Der Nachlauf nach den Stateful-Migrationen ist gruen. Es gibt keine offenen Renovate-PRs, keine `unhealthy` Container und die aktuellen Dump-Artefakte wurden nach den Migrationen neu erzeugt und auf Lesbarkeit geprueft. + +## Renovate + +- Manueller Lauf: `2026-05-31T19-39-01Z` +- Ergebnis: `rc=0` +- Gitea: keine offenen PRs +- Renovate entfernte die verwaisten Branches: + - `renovate/major-major-updates` + - `renovate/postgres-18.x` + - `renovate/redis-8.x` + +## Live Burn-in + +- `docker ps --filter health=unhealthy`: keine Treffer +- Relevante Laufzeitstaende: + - `postgresql17`: `postgres:18.4` + - `mealie-postgres`: `postgres:18.4` + - `nextcloud-postgres`: `postgres:18.4` + - `immich_postgres`: `ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0` + - `Redis`, `nextcloud-redis`, `immich_redis`: `redis:8.8.0-alpine` + - `monitoring-grafana`: `grafana/grafana:13.0.1` + +HTTP-Smoke vom Host: + +| Dienst | Status | +|---|---:| +| `https://monitoring.kaleschke.info` | 302 | +| `https://immich.kaleschke.info` | 200 | +| `https://cloud.kaleschke.info` | 302 | +| `https://paperless.kaleschke.info` | 302 | +| `https://mealie.kaleschke.info` | 200 | +| `https://mail.kaleschke.info` | 302 | + +Log-Nachlauf: + +- `mail-archiver`: fruehere transienten `57P01`-Fehler stammen vom DB-Restart; spaeterer Sync meldet `New: 0, Failed: 0, Deleted: 0`. +- `monitoring-grafana`: nach Härtung keine neuen `level=error`, `permission denied`, `fatal` oder `panic` Treffer. + +## Backup- und Dump-Frische + +`ops/borg-ui/scripts/pre-backup-dumps.sh` wurde nach den Migrationen erneut ausgefuehrt. Dabei wurde ein Drift behoben: `grafana.sqlite` wird jetzt aus dem aktiven Docker-Volume `monitoring_grafana_data` gelesen, nicht mehr aus dem historischen Pfad `/mnt/user/appdata/grafana`. + +Aktuelle relevante Dump-Zeiten: + +| Artefakt | Zeit | +|---|---| +| `postgresql17-globals.sql` | 2026-05-31 21:41 | +| `mealie.dump` | 2026-05-31 21:42 | +| `nextcloud.dump` | 2026-05-31 21:42 | +| `immich.dump` | 2026-05-31 21:42 | +| `postgresql17-authelia.dump` | 2026-05-31 21:42 | +| `postgresql17-mailarchiver.dump` | 2026-05-31 21:42 | +| `postgresql17-paperless.dump` | 2026-05-31 21:42 | +| `grafana.sqlite` | 2026-05-31 21:42 | +| `komodo-mongo.archive.gz` | 2026-05-31 21:42 | + +Lesbarkeit: + +- `pg_restore -l`: ok fuer Mealie, Nextcloud, Immich, Authelia, Mailarchiver, Paperless +- `sqlite3 PRAGMA quick_check`: ok fuer Grafana, Gitea, Vaultwarden, Speedtest, Borg UI +- `gzip -t`: ok fuer `komodo-mongo.archive.gz` + +Borg-UI letzter vollstaendiger Backup-Job: + +- `#41 completed`, Start `2026-05-31 02:30:13`, Ende `2026-05-31 02:31:26` +- Hinweis: Dieser Borg-Lauf war vor den Tagesmigrationen. Die Dumps sind jetzt frisch; der naechste regulaere Borg-Lauf muss sie off-site aufnehmen. + +## Restore-Drill-Vorbereitung + +- `run-restore-checks.sh freshness`: Critical `0`, Warnings `0` +- `immich --what-if`: ok, nutzt VectorChord/pgvector-Test-Postgres und Redis 8 +- `paperless --what-if`: ok nach Fix der fehlenden Execute-Bits +- Naechster sinnvoller echter Restore-Drill: Paperless, weil er jetzt den shared PostgreSQL-18-Dump und Redis-8-Testpfad abdeckt. + +Nebenbefund behoben: + +- Mehrere Restore-Test-Skripte waren im Git nicht ausfuehrbar. Dateimodus auf `100755` korrigiert. + +## Monitoring / Grafana 13 + +- `/api/health`: `database=ok`, `version=13.0.1` +- SQLite/Unified-Storage-Check: + - `data_source=3` + - `resource` enthaelt `4` Dashboards und `1` Folder + - `unifiedstorage_migration_log=3` +- Grafana-13-Fixes: + - `GF_PLUGINS_PREINSTALL_DISABLED=true` + - leere Provisioning-Verzeichnisse `alerting/` und `plugins/` versioniert + - `user: "0"` gesetzt, damit hostseitige `600 root` Secret-Dateien lesbar bleiben + +## Alt-Volumes fuer spaetere Freigabe + +Nicht vor Burn-in-Freigabe loeschen. + +| Pfad | Zweck | Groesse | +|---|---|---:| +| `/mnt/user/appdata/postgresql17` | Shared PostgreSQL-17-Rollback | 1.8G | +| `/mnt/user/appdata/mealie/postgres` | Mealie PostgreSQL-17-Rollback | 70M | +| `/mnt/user/appdata/nextcloud/postgres` | Nextcloud PostgreSQL-17-Rollback | 71M | +| `/mnt/user/appdata/immich_postgres` | Immich pgvecto.rs-Rollback | 460M | + +Aktive Vergleichspfade: + +| Pfad | Zweck | Groesse | +|---|---|---:| +| `/mnt/user/appdata/postgresql18` | Shared PostgreSQL 18 aktiv | 2.2G | +| `/mnt/user/appdata/mealie/postgres18` | Mealie PostgreSQL 18 aktiv | 70M | +| `/mnt/user/appdata/nextcloud/postgres18` | Nextcloud PostgreSQL 18 aktiv | 72M | +| `/mnt/user/appdata/immich_postgres_vectorchord` | Immich VectorChord aktiv | 633M | + +## Offene bewusste Punkte + +- Alt-Volumes bleiben bis zur Erinnerung am 2026-06-02 gesperrt. +- Der naechste regulaere Borg-Lauf soll nachziehen; danach kann die Alt-Volume-Freigabe fundierter entschieden werden. +- Ein echter Paperless-Restore-Drill ist der beste naechste risikoarme Test.