Skip to content

feat: support {db} placeholder in EXTRA_BACKUP_OPTS for split-mode ba… - #477

Open
terryzwt wants to merge 1 commit into
nfrastack:mainfrom
terryzwt:feature/dynamic-db-placeholder-extra-backup-opts
Open

feat: support {db} placeholder in EXTRA_BACKUP_OPTS for split-mode ba…#477
terryzwt wants to merge 1 commit into
nfrastack:mainfrom
terryzwt:feature/dynamic-db-placeholder-extra-backup-opts

Conversation

@terryzwt

Copy link
Copy Markdown

…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.

…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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant