Ny drafitra dia ao amin’ny docs/architecture/23-ops.md singa 8. Ity ny toro-dalana ho an’ny rindrina Docker Compose. Natao ho arahina olona tsy nanao izy; raha misy dingana tsy mazava, izany dia fahadisoan’ity dokumenty ity.
Tetibola: toeram-pamerenana ao anatin’ny 60 sekondra aorian’ny fahadisoana, ary famerenana ao anatin’ny 60 minitra ho an’ny data-by 500 GB.
Misy fahadisoan-kasokajy roa. Ny data-by mamerina tsy misy ny rakitriny dia manao pejy simba. Ny data-by mamerina tsy misy QUIRE_MASTER_KEY dia tsy afaka manala mombamomba alefa SSO, webhook sy fampifandraisana misy azy; mandraaka vita ny fanavaozana kiteny lehibe tsy misy tsy voavaha (key-rotation.md), dia ao anatiny koa ny kiteny voavelana. Roa ireo ao anatin’ny backup.
Fanatahana backup
Backup fototra an’ny cluster manontolo:
docker compose -f docker/compose.yaml --profile backup run --rm backup
Mitazona ny backup fototra vaovao indrindra QUIRE_BACKUP_KEEP (5 amin’ny toe-javatra fototra) ary manala ny WAL tsy ilain’ny taloha intsony, ka tsy afaka mitombo ampy ny arsiny. Atao isan’andro amin’ny cron na timer systemd ao amin’ny mpandray anjara:
15 2 * * * cd /srv/quire && docker compose -f docker/compose.yaml --profile backup run --rm backup >> /var/log/quire-backup.log 2>&1
Na avelao ny stack no mametraka azy: ny backup profile dia miasa amin’ny backup-scheduler, izay manao backup fototra isaky ny QUIRE_BACKUP_INTERVAL_HOURS (24 amin’ny fototra), ary ny backup-offsite, lazaina ambany.
docker compose -f docker/compose.yaml --profile backup up -d
Sary mampiasa avy any ivelany amin’ny mpandray anjara
Misy ao amin’ny mpandray anjara mitovy amin’ny data-by ny volume roa, ary tsy backup ny ao amin’ny solosaina nisy ny fahadisoana. Ny backup-offsite dia manakatra ny backup fototra tsirairay sy ny segmentin’ny WAL arsivina tsirairay mankany amin’ny tahiry manokana amin’ny alàlan’ny akanjon’ny tahirina, mampiasa, ary mitazona azy ireo eo amin’ny fotoana tahirizana:
Fampiasana. AES-256-GCM amin’ny QUIRE_BACKUP_ENCRYPTION_KEY (na ny rakitra nosoratan’ny QUIRE_BACKUP_ENCRYPTION_KEY_FILE): 32 octet, avy amin’ny openssl rand -hex 32. Misy nonce manokana sy etiketa fanamarinana isaky ny rakitra, ka tsy azo vakiana sary raha tsy misy ny kiteny ary hita ny fanovana azy rehetra. Tazomina amin’ny QUIRE_MASTER_KEY ny kiteny, lavitra an’io mpandray anjara io sy lavitra an’ny tahiry backup. Tsy misy famerenana raha tsy misy ny kiteny.
Ahoana. Ny QUIRE_BACKUP_STORAGE_DRIVER dia s3, azure na local (karatra lavitra voarakitra ao amin’ny QUIRE_BACKUP_STORAGE_ROOT). Ny filàlana dia ny filàlana tahirin-rakitra misy rambe QUIRE_BACKUP_: QUIRE_BACKUP_S3_ENDPOINT, QUIRE_BACKUP_S3_BUCKET, QUIRE_BACKUP_S3_ACCESS_KEY_ID, sns. Ampiasao bucket hafa ary, raha azo atao, kaonty hafa amin’ny rakitra, amin’ny mombamomba alefa afaka manoratra fa tsy manala raha mamerina izany ny mpanome.
Fotoana tahirizana. Ny QUIRE_BACKUP_OFFSITE_KEEP vaovao indrindra (aorian’ny QUIRE_BACKUP_KEEP, na 7 raha tsy misy) ary ny WAL ilain’ny taloha indrindra aminy; esorina ao amin’ny tahiry ny vondrona sy segmentin’ny taloha.
Ahoana. Isaky ny QUIRE_BACKUP_SHIP_INTERVAL_SECONDS (300 amin’ny fototra). Idempotenty ny fandefasana: tsy atehirizina ny efa tahirizina, ary tsy hita ho tahirizina ny backup fototra raha tsy voasoratra farany ny manifestiny.
Fehezanteny mitovy no alefa tanteraka:
docker compose -f docker/compose.yaml run --rm backup-offsite bun apps/worker/src/backups/main.ts shipdocker compose -f docker/compose.yaml run --rm backup-offsite bun apps/worker/src/backups/main.ts verify
Hanamora amin’ny mpandray anjara vaovao, alaina voalohany ny vondrona, avy eo arahao ny dingana ambany amin’ny rakitra alefan’ny toeran’ny volume pgbackup ary ny wal-archive alefan’ny toeran’ny pgwal:
bun apps/worker/src/backups/main.ts fetch base-20260924T021500Z /srv/restore
Famerenana amin’ny fotoana voafaritra
Ampiasao izany aorian’ny fahantran-karena: fampidirana diso, fampianarana nofoana, fiovana fanaprahana tokony ho afoana. Manolo ny data-by miasa izany, ka jereo aloha amin’ny fandinihana ambany.
Safidio fotoana fototra, amin’ny UTC, tsy very alohan’ny fahadisoana: 2026-09-24 09:30:00+00. Matetika mampiseho ny fotoana ny lakon’ny fitsarana (/admin/audit).
Ajeno ny rehetra manoratra: docker compose -f docker/compose.yaml stop web content worker scheduler collab
Tazomina ny cluster simba mandraaka fanamarinana ny famerenana:
docker compose -f docker/compose.yaml stop postgresdocker run --rm -v quire_postgres18-data:/from -v quire_postgres-damaged:/to alpine cp -a /from/. /to/
Sokafy ny backup fototra vaovao talohan’ny fotoana fototra ao amin’ny volume data, ary angataho famerenana voafaritra:
docker run --rm -v quire_pgbackup:/backups:ro -v quire_postgres18-data:/var/lib/postgresql postgres:18-alpine sh -euc ' base="$(ls -1d /backups/base-* | sort | tail -n 1)" # or the one before the target rm -rf /var/lib/postgresql/18/docker && mkdir -p /var/lib/postgresql/18/docker tar -xzf "$base/base.tar.gz" -C /var/lib/postgresql/18/docker touch /var/lib/postgresql/18/docker/recovery.signal chown -R postgres:postgres /var/lib/postgresql/18/docker && chmod 700 /var/lib/postgresql/18/docker'
Mamerena: manomboka ny Postgres iray amin’ny filàlana famerenana, avy amin’ny override Compose ka tsy voanova ny rakitra fototra:
Manolo ny fehezanteny manontolo ny override, ka mamerina ny filàlana roa iainan’ny famerenana: max_connections tsy ambany kokoa no an’ny voalohany (raha tsy izany, dia misakana ny famerenana amin’ny “insufficient parameter settings”) ary ny pg_hba.conf voarakitra.
docker compose -f docker/compose.yaml -f docker/compose.recover.yaml up -d postgresdocker compose -f docker/compose.yaml logs -f postgres # wait for "database system is ready"
Jereo aloha alohan’ny handefasana olona: ny rindrin’ny fitsarana (docker compose -f docker/compose.yaml run --rm worker bun tooling/audit-verify/run.ts), ary ny data very dia miverina.
Miverina amin’ny fomban’ny fahazotana: docker compose -f docker/compose.yaml up -d. Izany dia manomboka indray ny Postgres misy ny arsivana, ary manomboka daty vaovao ny filan’ny WAL. Manao backup fototra vaovao haingana.
Ny anaran’ny tetikasa quire eo ambonin’ny volume tsirairay; ny docker volume ls dia mampiseho ny anarana marina.
Ny fandinihana famaritana mirakina
Ny backup-offsite dia alefa koa fandinihana isaky ny QUIRE_BACKUP_DRILL_INTERVAL_HOURS (168 amin’ny fototra, isan-kerinandro), ary indray amin’ny fandehana manaraka raha diso iray. Maka ny backup fototra vaovao avy any etsy sy ny segmentin’ny WAL rehetra manaraky azy, manala fampiasana ny tsirairay (izay manambara fa mbola misokafa azy ny kiteny ary tsy niova na inona na inona), mampitaho ny rakitra tsirairay amin’ny manifestiny, mijery raha directory data Postgres ny arsiny, ary mijery raha misy fijanonana ny WAL avy amin’ny backup mankany. Aseho ao amin’ny tahiry ny tatitra ho reports/drill-<time>.json ary ao amin’ny log an’ny serivisy; ny fandinihana diso dia manambara ny rakitra na ny segmentin’ny voalohany very.
Ny fandinihan’ny famerenana
Tsy backup ny backup tsy mody namerena mihitsy. Mamerina ny backup fototra feno vaovao indrindra natao alohan’ny fotoana fototra, miaraka amin’ny arsin’ny WAL, ao amin’ny Postgres fandinihana tsy mizara na inona na inona amin’ny miasa, ary manamara ny vokany:
docker/scripts/restore-drill.sh # to ninety minutes agodocker/scripts/restore-drill.sh --target "2026-09-24 09:30:00+00"
UTC amin’ny endrika izy io mihitsy ny fotoana fototra. Mila backup fototra taloha kokoa azy ary WAL arsivina manaraky azy: amin’ny fampidirana vaovao, manao backup fototra ary miandry ny segmentin’ny arsivina manaraka (farany minitra iray raha misy fanoratana) alohan’ny famintinana fotoana fototra manaraky ny backup. Mila Docker sy bash ao amin’ny mpandray anjara ny fandinihana, tsy misy hafa.
Isaky ny dingana no afaka manakana ny fandinihana:
Fahatanterahana: isakin-taratry ny takelaka tsirairay amin’ny data-by miasa (tooling/restore-drill). Niova ny data-by miasa avy eo amin’ny fotoana fototra, ka mety misy sampana 500 toerana na fahatelon’ny habeny, eo amin’ny felana roa (ny fanoratana dia manakana azy, ny fanalana dia mahatonga ny famerenana hisy be kokoa); ny seza namorona aorian’ny fotoana fototra dia tsy takelaka very. Ampitombo ny fahalemena amin’ny fampandrafiana be kokaka amin’ny QUIRE_DRILL_MAX_BEHIND sy QUIRE_DRILL_MAX_DRIFT_RATIO. Manakana ny takelaka very na foana.
Fahamarinana: marinina ny rindrin’ny hash an’ny fitsarana amin’ny sary mamerina.
Fahafahana ampiasaina: mamaky amin’ny alàlan’ny fiarovana isakin-tseza ny andraikin’ny fampiharana.
Tsy manoratra mihitsy ao amin’ny data-by miasa na ny volume any: mamaritra famakarana ihany ny volume backup sy WAL ary esorina ny cluster fandinihana a farany, na vita na tsy vita.
Metrahana QUIRE_DRILL_REPORT amin’ny laza hanoratana tatitra JSON, na vita na tsy vita, ary alefa azy mirakina avy amin’ny mpandray anjara Docker:
docker run --rm -v quire_files:/files:ro -v "$PWD":/out alpine tar -czf /out/files-$(date -u +%Y%m%d).tar.gz -C /files .
Amin’ny tahirin-entana, apetraho ny version an’ny bucket ary tazomina 35 andro ny version tsy ankehitriny; ny famerenana amin’ny fotoana voafaritra ho an’ny rakitra dia ny an’ny bucket avy eo.