diff --git a/Deployment/master.conf.template b/Deployment/master.conf.template index 9a14ea5..7f1596e 100644 --- a/Deployment/master.conf.template +++ b/Deployment/master.conf.template @@ -780,7 +780,25 @@ declare -A PROFILE_EXCLUDE_DIRS=( [arrs_stack]="logs *.tmp" [critical-data]="logs *.tmp *.log nginx/temp nginx/cache __pycache__ notification.txt" - [critical-fallback]="logs *.tmp *.log nginx/temp nginx/cache __pycache__ notification.txt *.db-wal *.db-shm" + # appendonlydir and mariadb-bin.* are excluded for the same reason as *.db-wal: they are + # written continuously by a database this profile copies WHILE IT RUNS. The exclusion had + # SQLite's WAL and nothing for Redis or MariaDB, and both broke the mirror on 2026-08-17. + # + # The failure is not a torn file, it is a surviving pointer to a missing one. The manifest + # and the index are a few hundred bytes and land instantly; the data files they name are + # large and are still in flight. The mirror ends up holding a promise nothing can keep: + # Redis appendonly.aof.manifest → appendonly.aof.30.base.rdb (absent) → exit 1 + # MariaDB mariadb-bin.index, 265 → mariadb-bin.000265 (absent) → Aborting + # + # Excluded rather than repaired: neither is needed for the engine to START. Redis rebuilds + # an empty AOF, MariaDB begins a new binlog sequence. On a fallback mirror that is the + # right trade — those files exist for persistence and replication, and a database that + # starts empty beats one that cannot start at all. + # + # NOT a guarantee that a live-copied InnoDB is consistent. It happened to survive both + # times. The honest fix is a DB-layer dump synced as a file; this stops the observed + # breakage without pretending to be that. + [critical-fallback]="logs *.tmp *.log nginx/temp nginx/cache __pycache__ notification.txt *.db-wal *.db-shm appendonlydir mariadb-bin.*" [important-data]="logs *.tmp" [emby]="logs transcodes cache crash*" )