mirror of
https://github.com/kevinveenbirkenbach/docker-volume-backup.git
synced 2026-07-17 06:05:13 +00:00
116 lines
5.5 KiB
Markdown
116 lines
5.5 KiB
Markdown
# Changelog
|
||
|
||
## [2.0.0] - 2026-07-12
|
||
|
||
- Backup: renamed *--docker-compose-hard-restart-required* to
|
||
*--hard-compose-restart* and changed its default from *["mailu"]* to *[]*
|
||
(nargs="*"). The compose down/up is now opt-in: compose hosts pass
|
||
*mailu* explicitly, while swarm hosts pass nothing, since there the dir is
|
||
a stack whose overlay network collides with *compose up*. **Breaking:** the
|
||
old flag name is removed and the implicit mailu default is gone.
|
||
- Backup: *--backups-dir* is now required (no */var/lib/backup/* default) so
|
||
a run can never silently target the wrong backup root. **Breaking.**
|
||
- Restore: volume files are rsynced directly into the target volume's
|
||
mountpoint (resolved via *docker volume inspect*), mirroring the backup
|
||
path; the *alpine-rsync* helper image and the *--rsync-image* flag are
|
||
gone. The caller needs write access to the docker volume root (root on the
|
||
host, baudolo's normal privilege). **Breaking:** the restore *files*
|
||
subcommand no longer accepts *--rsync-image*.
|
||
- Tests: the e2e suite tracks *postgres:alpine* (18+, mounted at
|
||
*/var/lib/postgresql*) and *mariadb:latest* from a single source of truth.
|
||
|
||
## [1.8.1] - 2026-07-12
|
||
|
||
- Restore: the postgres empty mode also drops user-owned collations in
|
||
public; dumps containing CREATE COLLATION (e.g. OpenProject's ICU
|
||
collation versions_name) no longer abort the replay with 'collation
|
||
already exists'.
|
||
- Maintenance: base image bumped from python 3.11-slim to 3.14-slim.
|
||
|
||
## [1.8.0] - 2026-07-11
|
||
|
||
Swarm-aware backups and replayable restores.
|
||
|
||
- Backup: swarm task containers are never stopped or started manually
|
||
anymore; they are skipped visibly and backed up hot, while the sql dump
|
||
stays the consistent database backup.
|
||
- Backup: a container that vanishes between listing and inspect no longer
|
||
aborts the run; a failing inspect on a container that still exists keeps
|
||
failing loudly.
|
||
- Backup: pg_dump runs with the no-owner and no-privileges flags so dumps
|
||
are replayable by the owning app user.
|
||
- Restore: the mariadb empty mode drops all tables in one client session
|
||
with FOREIGN_KEY_CHECKS disabled; FK-linked parent tables no longer abort
|
||
the replay with ERROR 1451.
|
||
- Restore: the postgres empty mode drops only current-user-owned objects,
|
||
and the replay skips superuser-only dump lines without ever touching
|
||
COPY data blocks.
|
||
- Restore: the replay streams the dump through a temp file instead of
|
||
buffering it in memory; multi-GB dumps no longer OOM the restore.
|
||
- Tooling: the e2e runner reaches the DinD daemon via docker exec instead
|
||
of a host-published unencrypted API port.
|
||
- Tooling: new end-to-end test reproducing the swarm stop flake, plus unit
|
||
tests for the restore filters and the swarm probes; the suite is 36 unit,
|
||
9 integration and 30 e2e tests.
|
||
- Tooling: Dependabot with auto-merge for minor and patch updates.
|
||
|
||
## [1.7.1] - 2026-05-26
|
||
|
||
* 🔌 MariaDB SQL backups now connect over TCP loopback so the dump always matches the same wildcard-host grant the application uses — no more surprise `ERROR 1045 Access denied` when a localhost-bound auth row preempts.
|
||
* 🧪 New regression and bug-repro tests pin the TCP behaviour and prove it under the exact preemption setup that caused the production failure on MariaDB 12.
|
||
* 🩺 E2E test infrastructure: DinD bridge and inner daemon now default to MTU 1280 so registry pulls survive host paths with broken PMTUD (override via `E2E_DIND_MTU`).
|
||
|
||
|
||
## [1.7.0] - 2026-02-07
|
||
|
||
* 🚀 Backup jobs now support all valid Docker Compose file names – case-insensitive and hassle-free.
|
||
|
||
|
||
## [1.6.0] - 2026-02-06
|
||
|
||
* Compose handling is now fully delegated to the Infinito.Nexus compose wrapper or plain docker compose, removing all custom env and file detection to ensure a single, consistent source of truth.
|
||
|
||
|
||
## [1.5.0] - 2026-01-31
|
||
|
||
* * Make `databases.csv` optional: missing or empty files now emit warnings and no longer break backups
|
||
* Fix Docker CLI compatibility by switching to `docker-ce-cli` and required build tools
|
||
|
||
|
||
## [1.4.0] - 2026-01-31
|
||
|
||
* Baudolo now restarts Docker Compose stacks in a wrapper-aware way (with a `docker compose` fallback), ensuring that all Compose overrides and env files are applied identically to the Infinito.Nexus workflow.
|
||
|
||
|
||
## [1.3.0] - 2026-01-10
|
||
|
||
* Empty databases.csv no longer causes baudolo-seed to fail
|
||
|
||
|
||
## [1.2.0] - 2025-12-29
|
||
|
||
* * Introduced **`--dump-only-sql`** mode for reliable, SQL-only database backups (replaces `--dump-only`).
|
||
* Database configuration in `databases.csv` is now **strict and explicit** (`*` or concrete database name only).
|
||
* **PostgreSQL cluster backups** are supported via `*`.
|
||
* SQL dumps are written **atomically** to avoid corrupted or empty files.
|
||
* Backups are **smarter and faster**: ignored volumes are skipped early, file backups run only when needed.
|
||
* Improved reliability through expanded end-to-end tests and safer defaults.
|
||
|
||
|
||
## [1.1.1] - 2025-12-28
|
||
|
||
* * **Backup:** In ***--dump-only-sql*** mode, fall back to file backups with a warning when no database dump can be produced (e.g. missing `databases.csv` entry).
|
||
|
||
|
||
## [1.1.0] - 2025-12-28
|
||
|
||
* * **Backup:** Log a warning and skip database dumps when no databases.csv entry is present instead of raising an exception; introduce module-level logging and apply formatting cleanups across backup/restore code and tests.
|
||
* **CLI:** Switch to an FHS-compliant default backup directory (/var/lib/backup) and use a stable default repository name instead of dynamic detection.
|
||
* **Maintenance:** Update mirror configuration and ignore generated .egg-info files.
|
||
|
||
|
||
## [1.0.0] - 2025-12-27
|
||
|
||
* Official Release 🥳
|
||
|