Exclude the Redis AOF and MariaDB binlog from the dirty auth sync, which delivered their index without the file it names

This commit is contained in:
Gmer4Lfe
2026-08-17 05:53:37 -04:00
parent bdc2cdbadb
commit 366e2a269f
+19 -1
View File
@@ -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*"
)