feat: support {db} placeholder in EXTRA_BACKUP_OPTS for split-mode ba… - #477
Open
terryzwt wants to merge 1 commit into
Open
feat: support {db} placeholder in EXTRA_BACKUP_OPTS for split-mode ba…#477terryzwt wants to merge 1 commit into
terryzwt wants to merge 1 commit into
Conversation
…ckups
Allow dynamic substitution of the current database name in
EXTRA_BACKUP_OPTS using the {db} placeholder. When SPLIT_DB=true,
{db} is replaced with the current database name before each
backup command executes.
This enables patterns like --ignore-table={db}.logs to work
across 100+ databases without hardcoding each database name.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
terryzwt
added a commit
to davyin-co/docker-mysql-backup
that referenced
this pull request
Jul 5, 2026
Default to stripping cache_*/sessions/watchdog/queue/batch/flood/http_client_log data from MySQL dumps on tiredofit/db-backup 4.x (CREATE TABLE preserved). Implements nfrastack/container-db-backup#477 ({db} placeholder substitution) plus a per-DB information_schema expansion layer. assets/strip-cache-data.sh: sourced from backup_mysql(). Substitutes {db} in EXTRA_BACKUP_OPTS, expands STRIP_CACHE_TABLES ('%' = LIKE prefix) into concrete --ignore-table args, and pre-dumps schema-only for the stripped tables so the main dump can prepend it. assets/apply-strip-cache-patch.py: idempotently injects three sentinel blocks into upstream /assets/functions/10-db-backup at build time: (A) register STRIP_CACHE_DATA / STRIP_CACHE_TABLES with the upstream transform_backup_instance_variable (so DEFAULT_ and DB##_ prefixes work like EXTRA_BACKUP_OPTS); (B) source the helper before mysqldump and rewire ${backup_job_extra_backup_opts} -> ${extra_backup_opts}; (C) prepend the schema-only prefix file to the main dump after PIPESTATUS exit_code. Dockerfile: ships DEFAULT_STRIP_CACHE_DATA=TRUE and the cache_%, sessions, watchdog, queue, batch, flood, http_client_log default list. Per-instance override uses DB##_STRIP_CACHE_DATA (highest priority). README: new 'Drupal 临时表剥离' section covering default behaviour, disable, custom STRIP_CACHE_TABLES, {db} placeholder, internals, and troubleshooting. .github/workflows/docker-image.yml: drop 3.x from the CI matrix (3.x base image EOL upstream); replace 4.1.9 with 4.1.100. Compose files remain .gitignore'd per the project's existing convention. Replaces an earlier local commit (9e5c794) that solved the same problem via post-hook awk filtering of the dump file; the upstream-patch approach in this commit is preferred because it also enables {db} placeholder substitution and survives the upstream mysqldump pipeline transparently. Co-Authored-By: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
…ckups
Allow dynamic substitution of the current database name in EXTRA_BACKUP_OPTS using the {db} placeholder. When SPLIT_DB=true, {db} is replaced with the current database name before each backup command executes.
This enables patterns like --ignore-table={db}.logs to work across 100+ databases without hardcoding each database name.