feat(books-backup): cover bookva-* tenant (db/mongo/minio)
bookva tenant (bookva-db/mongo/es/minio) поднят 26.05 при cutover-prep, а books-vds backup написан 25.05 — до bookva. Покрытие не расширили; gap висел wiki-follow-up #2 ~2.5 недели. Тот же класс, что MSSQL: новый stateful, бэкап отстал, повешен как заметка. Добавлено в scripts/books-vds-backup-daily-kreknin/run.sh (deploy == repo, бэкап .bak-pre-bookva): - bookva-db: mariadb-dump (тот же BOOKS_DB_ROOT_PASSWORD, стек клонирован) - bookva-mongo: mongodump --archive (no-auth) - bookva-minio: raw rsync named volume bookva-minio-data (immutable objects) Каждая команда протестирована изолированно ДО внесения в скрипт. Verified зелёным прогоном: BOOKS-VDS backup OK 10m42s, артефакты на kreknin (bookva-mariadb 257M, bookva-mongo 3.2M, bookva-minio 1.4G). bookva-es отложен (path.repo не сконфигурирован, нужен ES restart через Portainer) -> .tasks/bookva-es-snapshot-repo.md. Покрыт по факту: индексы epz/products идентичны slovo ES, который снапшотится. - .wiki/entities/books-vds.md: Backup-секция + follow-up #2 частично закрыт - .wiki/concepts/backup-inventory-2026-06.md: bookva row -> done - .tasks/bookva-es-snapshot-repo.md: backlog для ES-снапшота Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -119,6 +119,17 @@ docker exec books-job-scheduler-mongo mongodump --archive --quiet 2>/dev/null \
|
||||
| gzip > "$DUMP_DIR/job-scheduler-mongo.archive.gz"
|
||||
echo "job-scheduler-mongo: $(stat -c %s "$DUMP_DIR/job-scheduler-mongo.archive.gz") bytes"
|
||||
|
||||
# bookva tenant (separate cloned stack): bookva-db shares BOOKS_DB_ROOT_PASSWORD;
|
||||
# bookva-mongo is no-auth. Containers are named volumes (not bind paths) → logical dumps.
|
||||
docker exec bookva-db mariadb-dump -uroot -p"$BOOKS_DB_ROOT_PASSWORD" \
|
||||
--all-databases --single-transaction --quick 2>/dev/null \
|
||||
| gzip > "$DUMP_DIR/bookva-mariadb.sql.gz"
|
||||
echo "bookva-db (mariadb): $(stat -c %s "$DUMP_DIR/bookva-mariadb.sql.gz") bytes"
|
||||
|
||||
docker exec bookva-mongo mongodump --archive --quiet 2>/dev/null \
|
||||
| gzip > "$DUMP_DIR/bookva-mongo.archive.gz"
|
||||
echo "bookva-mongo: $(stat -c %s "$DUMP_DIR/bookva-mongo.archive.gz") bytes"
|
||||
|
||||
# === Step 2: ES snapshot via REST ===
|
||||
echo "--- ES snapshot daily-$TODAY in repo $ES_SNAPSHOT_REPO ---"
|
||||
ES_SNAP="daily-$TODAY"
|
||||
@@ -163,6 +174,7 @@ rsync -aHh --info=stats2 --delete $LINK_DEST_ARG \
|
||||
/opt/books \
|
||||
/usr/docker/elasticsearch/snapshots \
|
||||
/usr/docker/minio/data \
|
||||
/var/lib/docker/volumes/bookva-minio-data \
|
||||
/usr/docker/traefik/letsencrypt \
|
||||
/usr/docker/traefik/data \
|
||||
/etc/ssh \
|
||||
@@ -206,8 +218,9 @@ Components:
|
||||
- /usr/docker/{minio/data, elasticsearch/snapshots, traefik/{letsencrypt,data}}
|
||||
- /etc/{ssh,hosts,cron.d}
|
||||
- /root/.ssh
|
||||
- DB dumps: books-db (mariadb), mongo (shared), books-job-scheduler-mongo
|
||||
- ES snapshot: $ES_SNAP
|
||||
- DB dumps: books-db (mariadb), mongo (shared), books-job-scheduler-mongo, bookva-db (mariadb), bookva-mongo
|
||||
- bookva-minio: raw volume (bookva-minio-data)
|
||||
- ES snapshot (slovo): $ES_SNAP [bookva-es: derivative index == slovo, snapshot pending Portainer path.repo]
|
||||
|
||||
Log: $LOG"
|
||||
email_send "[$HOST_LABEL] backup OK $TODAY" "$EMAIL_BODY"
|
||||
|
||||
Reference in New Issue
Block a user