Skip to Content

Arhitektura obnove in pogodba vzdrževanja

Dokument opisuje trenutno izvorno arhitekturo splošne obnove PMIVerse. Je vzdrževalna referenca, ne operativna odobritev. Avtoritativni javni ukaz ostaja /srv/pmiverse/_pmiconfig/scripts/restore/restore_database.sh.

Vstopna točka in nalaganje knjižnic

restore_database.sh lastno kanonično pot razreši z readlink -f. Neposredni zagon, zagon iz druge mape in prek povezave zato nalagajo knjižnice iz sosednje kanonične scripts/restore/lib/. Vsaka mora biti berljiva navadna datoteka; manjkajoča ali neberljiva vključitev vrne neničelno kodo z napako konkretne knjižnice.

Lokalna scripts/restore/.shellcheckrc omogoča analizo virov. Direktive vstopne točke označijo sosednje knjižnice za ShellCheck in IDE, tudi skupno stanje objave in povratka.

Pet knjižnic se vključi v isti proces. Vključitev tiho definira samo funkcije, ne obnavlja, ne pridobiva ključavnic, ne odpira trajnih deskriptorjev in ne namešča pasti. Knjižnice niso izvedljive (0644); javni ukaz in omejeni lupinski testi so (0755).

Zemljevid odgovornosti

scripts/restore/lib/restore_config.bash

Inicializacija konfiguracije, pomoč in argumenti, izrecna konfiguracija pripravljalnih primerov, starejše ciljno in registrsko razreševanje, izpeljava zbirke, preverjanje vhodov in izpis suhega zagona. Starejši ukazi uporabljajo tudi izolirani razreševalnik vira, ki upošteva register samo ob ujemanju različice in ohrani stanje klicatelja. Ne izbere/pregleda arhiva in ne obnavlja.

scripts/restore/lib/restore_archive.bash

Izbor točnega ali najnovejšega arhiva, varnost delov poti in vnosov ZIP, pregled razširjenega drevesa za povezave, odkrivanje/preverjanje enega izvoza in prednostno odkrivanje filestore. Podpira SQL in izvoz po meri PostgreSQL, ne objavlja virov.

scripts/restore/lib/restore_postgresql.bash

Nizkonivojsko opazovanje obstoja in točnega stanja baz, preverjanje vloge/lastništva pred objavo, prekinjanje povezav, ustvarjanje začasnih baz, obnova SQL in *.dump/*.backup, varno preimenovanje identifikatorjev ter točno brisanje. Zagotavlja primitive, ne določa vrstnega reda objave/povratka.

scripts/restore/lib/restore_neutralization.bash

Nevtralizacija SQL in vgrajeno naknadno izvajanje v lupini Odoo: zaščita odhodne in vhodne pošte, izklop cron in nameščenih integracij, podprto odklapljanje bank, čiščenje IAP in website.robots. Izbirne modele obravnava izrecno. Zahtevane napake ORM zbere med vsemi poskusi in jih sproži skupaj.

scripts/restore/lib/restore_publication.bash

Inicializacija in opazovanje stanja objave, vrstni red baza pred filestore, razvrstitev/izvedba povratka, okrevanje pred objavo, diagnostika ter točni pogoji lastništva/stanja. Najprej ugotovi povratek baze, nato datotek; dvoumne artefakte ohrani.

scripts/restore/restore_database.sh

Javni orkestrator nalaga knjižnice in določa faze. Upravlja identiteto ključavnic, vrstni red PostgreSQL pred filestore, dinamične deskriptorje, pridobivanje/sproščanje, pasti in signale, lastništvo čiščenja delovnega prostora in pripravljenih artefaktov, vrstni red konfiguracije/arhiva/obnove/nevtralizacije/objave/končnega čiščenja, politiko nevtralizacije, mejo uspeha ter javne statuse, stdout/stderr in izhodne kode. Pasti preslikajo SIGINT v 130 in SIGTERM v 143.

Varnost in lastništvo

Običajno razvojno preverjanje uporablja lažne meje, ne dejanskega PostgreSQL, Odoo, namestitve, obnove, nevtralizacije ali ciljnega datotečnega sistema. Lažni izvršljivi ukazi morajo biti prvi v PATH, po potrebi uporabite sintetične module Odoo in vse spremenljive artefakte omejite na začasne pripravljalne korene.

Vrednosti SQL in identifikatorji PostgreSQL ostanejo podatki. Imena baz se podajajo kot argumenti ali prek psql -v; preimenovanje uporablja format(... %I ...). Prepovedani so eval, sestavljeni lupinski ukazi in nevarna neposredna interpolacija SQL.

Pred razširjanjem se zavrnejo nevarni deli poti in povezave vira, v ZIP pa absolutne poti, prehajanje map, obrnjene poševnice, krmilni znaki in povezave. Razširjeno drevo se ponovno pregleda. Obnova zahteva natanko en podprt berljiv neprazen izvoz in nedvoumen podprt filestore.

Objava vedno preimenuje bazo pred filestore. Povratek najprej ugotovi izid baze, nato spreminja datoteke. Preimenovanje, brisanje, premik in rekurzivno odstranjevanje temeljijo na točnih pogojih prisotnosti baze in neposredno podrejenih poti. Dvoumno opazovanje, nepričakovano lastništvo ali nevarna pot povzročijo zavrnitev in ohranitev začasnih, pripravljenih ter povratnih artefaktov z diagnostiko.

Orkestrator upravlja pasti, signale, čiščenje in življenjsko dobo ključavnic. Pred stanjem objave velja pripravljalno čiščenje; napake objave in naknadnega dela preda knjižnici objave, napake čiščenja pa ohranijo povratne artefakte in izpišejo navodila. Ključavnice ostanejo do uspeha ali obravnave napake in se sprostijo z zaprtjem dinamičnih deskriptorjev.

Zaščiti odhodne in vhodne pošte sta pri naknadni obdelavi Odoo obvezni. Zahtevana nevtralizacija doda obvezno delo cron, integracij in robots. Vgrajeni program poskusi vse ustrezne operacije in poroča skupne zahtevane napake.

Objava baze in filestore je usklajen povratek, ne atomarnost med sistemoma. Posamezne operacije PostgreSQL in preimenovanja na istem datotečnem sistemu imajo lastna jamstva; par ni ena transakcija. Okrevanje temelji na opaženem točnem stanju in ohranitvi artefaktov.

Konfiguracija, združljivost in izvorne poti

Aktivna konfiguracija je privzeto /srv/pmiverse/_pmiregistry/config/pmiverse.conf; PMIVERSE_CONF izbere drugo zaupanja vredno konfiguracijo Bash. Repozitorijski config/pmiverse.conf je splošna predloga in se nikoli ne naloži implicitno. Neposredni testi knjižnic podajo sintetične poti, ukazni testi pa jih izberejo s PMIVERSE_CONF. Shemo, prednost, izpeljavo in register opisuje splošni postopek obnove.

Javna vstopna točka ostaja nespremenjena, enako podprte postavitve ZIP ter SQL, *.dump in *.backup. Starejši ukazi v _pmiregistry/scripts/restore/ so ločene izvedbe, ne ovoji splošnega ukaza; glejte njihovo referenco.

Obnova sinhroniziranih kopij je scripts/laptop-backup/restore_latest_backup.sh. Pet sosednjih scripts/restore/lib/*.bash so notranje knjižnice za vključevanje iz obstoječe vstopne točke, ne novi javni ukazi.

Zemljevid omejenih testov

Področje Lastniški test
CLI, konfiguracija, izpeljava, suhi zagon tests/test_restore_config_library.sh, tests/test_restore_cli_contract.sh
Lokalna zrcala, starejši viri in različice _pmiregistry/tests/test_restore_local_sources.sh
Izbor/varnost arhiva in odkrivanje izvoza/shrambe tests/test_restore_archive_library.sh
Opazovanje in primitivi PostgreSQL tests/test_restore_postgresql_library.sh
SQL/Odoo nevtralizacija, izbirni modeli, skupne napake tests/test_restore_neutralization_library.sh
Objava, povratek, okrevanje, razvrstitev stanja tests/test_restore_publication_library.sh
Ključavnice, pasti, signali, čiščenje, vrstni red, uspeh tests/test_restore_safety.sh
Arhitektura, dovoljenja, aktivne poti, starejši ukazi, dopolnjevanje tests/test_restore_docs_completion.sh

Po omejeni spremembi zaženite lastniški test, poleg tega tests/test_restore_cli_contract.sh pri vplivu na javno nalaganje ali CLI ter tests/test_restore_safety.sh pri vplivu na orkestracijo, stanje, čiščenje ali vrstni red. Za dokumentacijo/postavitev uporabite tests/test_restore_docs_completion.sh in navigacijski test spremenjene poti.

Testi ne smejo doseči dejanskih PostgreSQL, Odoo, namestitev, obnov ali ciljnih datotek. Operativni ukazi se izvajajo samo za pregledanimi lažnimi programi in začasnimi koreni.

Omejitve vzdrževanja

Ohranite stabilni javni restore_database.sh ter sosednje knjižnice samo za vključevanje. Novo izločanje utemeljite s skladnim lastništvom, ne številom vrstic. Ohranite prednost konfiguracije, formate arhivov, identiteto/vrstni red ključavnic, objavo baza pred filestore, povratek baze najprej, točno lastništvo, kode signalov, nevtralizacijo in javni izhod/status. Spremembe zahtevajo omejeno karakterizacijo in integrirano varnostno zbirko; dokumentacija sama ne sme na novo določiti izvajalnega vedenja.