feat(e3a): binlog enablement — gated PITR foundation (binary logging in compose.sh, ENABLE_PITR default off (Track E)#63
Merged
Conversation
… in compose.sh, ENABLE_PITR default off (Track E) Fold the binlog volume + config mount directly into the canonical compose.sh db service, gated by a new ENABLE_PITR flag (default off -> no behavior change unless enabled). When on: the dedicated mariadb_binlogs named volume at /var/log/mysql plus the standalone 99-binlog.cnf mounted at /etc/mysql/mariadb.conf.d/99-binlog.cnf, declared in the top-level volumes:. actools.sh places 99-binlog.cnf beside my.cnf (gated). Default compose output stays byte-identical to today's (golden_drift 6/6; the gated fragments render to nothing when off). Absorb + delete the docker-compose.binlog.yml overlay and the byte-identical dead-twin mariadb-binlog.cnf; repoint deploy-pitr.sh's one dangling ref to 99-binlog.cnf. Foundation only -- the full-backup producer (E3b), rotation (E3c), pitr CLI (E3d), and restore (E5) stay unwired drafts. REGISTERED stays 30. New guard tests/guards/binlog_enablement_guard_test.bats (7/7, incl. an off-tree non-vacuity arm proving the ENABLE_PITR=false gating bites). Docs: backup-format-contract.md (C binlog foundation target->live; producer/restore still target; A/B byte-true), runtime-authority-map.md (inventory 34->32: 99-binlog.cnf unwired->wired, 2 drafts removed), the inventory manifest (34->32), and PHASE0_LEDGER.md (Entry 033 + ratify Entry 032). Behavior-CHANGING (opt-in): branch e2e MUST be green before merge -- the new "Binlog enablement (E3a)" leg installs with ENABLE_PITR=true and asserts MariaDB ready. + log_bin=ON + a mysql-bin.NNNNNN file under /var/log/mysql. Declared deviations: /var/log/mysql mount is a REPLACE not ADD (named volume swaps the ./logs/db bind when on; known named-volume-permission risk gated by e2e); printf inline-append fragment technique (not the redis service-heredoc) for byte-exact in-list rendering; SC_START/SC_END canary bump in capture_golden_outputs.sh (setup_cli shifted 521->528); ENABLE_PITR threaded as a consumed env var only (no summary line), per the E2 ENABLE_ENCRYPTED_BACKUP precedent.
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.
…
Fold the binlog volume + config mount directly into the canonical compose.sh db service, gated by a new ENABLE_PITR flag (default off -> no behavior change unless enabled). When on: the dedicated mariadb_binlogs named volume at /var/log/mysql plus the standalone 99-binlog.cnf mounted at /etc/mysql/mariadb.conf.d/99-binlog.cnf, declared in the top-level volumes:. actools.sh places 99-binlog.cnf beside my.cnf (gated). Default compose output stays byte-identical to today's (golden_drift 6/6; the gated fragments render to nothing when off).
Absorb + delete the docker-compose.binlog.yml overlay and the byte-identical dead-twin mariadb-binlog.cnf; repoint deploy-pitr.sh's one dangling ref to 99-binlog.cnf. Foundation only -- the full-backup producer (E3b), rotation (E3c), pitr CLI (E3d), and restore (E5) stay unwired drafts. REGISTERED stays 30.
New guard tests/guards/binlog_enablement_guard_test.bats (7/7, incl. an off-tree non-vacuity arm proving the ENABLE_PITR=false gating bites). Docs: backup-format-contract.md (C binlog foundation target->live; producer/restore still target; A/B byte-true), runtime-authority-map.md (inventory 34->32: 99-binlog.cnf unwired->wired, 2 drafts removed), the inventory manifest (34->32), and PHASE0_LEDGER.md (Entry 033 + ratify Entry 032).
Behavior-CHANGING (opt-in): branch e2e MUST be green before merge -- the new "Binlog enablement (E3a)" leg installs with ENABLE_PITR=true and asserts MariaDB ready. + log_bin=ON + a mysql-bin.NNNNNN file under /var/log/mysql.
Declared deviations: /var/log/mysql mount is a REPLACE not ADD (named volume swaps the ./logs/db bind when on; known named-volume-permission risk gated by e2e); printf inline-append fragment technique (not the redis service-heredoc) for byte-exact in-list rendering; SC_START/SC_END canary bump in capture_golden_outputs.sh (setup_cli shifted 521->528); ENABLE_PITR threaded as a consumed env var only (no summary line), per the E2 ENABLE_ENCRYPTED_BACKUP precedent.