fix(deploy): run the base-backup timer's pgBackRest as the postgres role #221

Merged
developer merged 1 commits from feature/pitr-timer-fix into development 2026-07-09 00:07:52 +00:00
Owner

Follow-up to the PITR feature. The systemd base-backup timer ran docker exec … pgbackrest backup without -u postgres --pg1-user=scrabble, so it connected to the DB as a non-existent role (docker exec is root; the superuser role is scrabble). Surfaced while arming PITR on prod; archive_command (run by the postgres server itself) was unaffected and archiving works. Fixes the timer template, corrects the runbook commands, records the arming + restore drill (v1.13.0, 2026-07-09), and marks the durability work done in PLAN.md. Prod already runs the corrected timer (ansible was applied from this fix).

Follow-up to the PITR feature. The systemd base-backup timer ran `docker exec … pgbackrest backup` without `-u postgres --pg1-user=scrabble`, so it connected to the DB as a non-existent role (docker exec is root; the superuser role is `scrabble`). Surfaced while arming PITR on prod; `archive_command` (run by the postgres server itself) was unaffected and archiving works. Fixes the timer template, corrects the runbook commands, records the arming + restore drill (v1.13.0, 2026-07-09), and marks the durability work done in PLAN.md. Prod already runs the corrected timer (ansible was applied from this fix).
developer added 1 commit 2026-07-09 00:04:00 +00:00
fix(deploy): run the base-backup timer's pgBackRest as the postgres role
CI / changes (pull_request) Successful in 2s
CI / unit (pull_request) Successful in 10s
CI / integration (pull_request) Successful in 18s
CI / ui (pull_request) Successful in 1m9s
CI / conformance (pull_request) Successful in 9s
CI / gate (pull_request) Successful in 0s
CI / deploy (pull_request) Successful in 1m46s
7123ba439d
docker exec defaults to root, so the systemd base-backup timer connected to the
database as role "root" (then "postgres") — neither exists; the superuser role is
POSTGRES_USER (scrabble). Run the timer's pgBackRest as the postgres OS user (-u postgres,
for lock-dir/PGDATA consistency with archive-push) and connect with --pg1-user=scrabble.
archive_command (run by the postgres server process) was already correct.

Also record the point-in-time-recovery arming + restore drill in deploy/README.md
(correct the runbook commands to the same invocation, fill the drill log) and mark the
durability work done in PLAN.md.
owner approved these changes 2026-07-09 00:04:47 +00:00
developer merged commit a118c63411 into development 2026-07-09 00:07:52 +00:00
developer deleted branch feature/pitr-timer-fix 2026-07-09 00:07:52 +00:00
Sign in to join this conversation.
No Reviewers
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: developer/scrabble-game#221