Splošna obnova baze
Starejši ukazi za posamezne baze so v _pmiregistry/scripts/restore/.
restore_database.sh obnovi eno varnostno kopijo baze Odoo PMIVerse v njeno prvotno ciljno ime. Podpira vzdevke registra, izrecno konfiguracijo, izbirno nevtralizacijo ter nevtralizacijo obstoječe baze brez obnove.
Najprej uporabite --dry-run. Obnova in nevtralizacija sta destruktivni operaciji; na dejanski bazi PostgreSQL ali shrambi filestore ju ne izvajajte brez ločene odobritve in preverjenega načrta okrevanja.
Običajna uporaba
# Inspect registry resolution without changing anything
/srv/pmiverse/_pmiconfig/scripts/restore/restore_database.sh demo --dry-run
# Inspect explicit resolution
/srv/pmiverse/_pmiconfig/scripts/restore/restore_database.sh \
--suite 18 \
--db example \
--source-file /absolute/path/example_latest.zip \
--dest /srv/pmiverse/_pmisuite18/data/dumps/example \
--filestore /srv/pmiverse/_pmisuite18/data/filestore \
--dry-run
# Restore and apply neutralization after publication
/srv/pmiverse/_pmiconfig/scripts/restore/restore_database.sh demo --neutralize
# Neutralize an existing database without reading or publishing a filestore
/srv/pmiverse/_pmiconfig/scripts/restore/restore_database.sh \
--suite 18 --db example --only-neutralize
Vzdevki, imena baz in preslikave gostiteljev se vzdržujejo v /srv/pmiverse/_pmiregistry/config/pmiverse.conf. Primeri uporabljajo sintetični vzdevek demo; nadomestite ga z vzdevkom iz svojega registra. Opombe o namestitvi opisujejo vire posamezne namestitve, povezana starejša navodila pa vedenje posameznih ciljev.
Podmape gostiteljev obstajajo na lokalnem strežniku rsync/obnove. Oddaljeni proizvajalci še vedno pišejo v data/backups/; neposredna obnova tam zahteva izrecno nadomestitev vira.
Zaženite kot običajni račun, ki je lastnik virov zbirke in ima zahtevane pravice PostgreSQL. Skripta ne uporablja sudo.
Pomembne možnosti
NAMEali--target NAME: vzdevek iz/srv/pmiverse/_pmiregistry/config/pmiverse.conf.--suite N: zbirka za nerazrešene privzete vrednosti.--db NAME: dejanska ciljna baza PostgreSQL.--source-file FILE: natanko en ZIP, ki ni simbolna povezava.--source DIR: najnovejši berljiv ZIP v mapi, ki ni simbolna povezava.--dest DIR: koren delovnega prostora za razširjanje.--filestore DIR: fizični koren filestore.--neutralize: obnova in nato nevtralizacija SQL ter ORM.--only-neutralize: sprememba samo obstoječe baze brez varnostne kopije.--dry-run: izpis razrešenih vrednosti in izhod pred dostopom do ključavnic ali cilja.
--source in --source-file se izključujeta. Vrednosti CLI imajo prednost pred starejšimi ciljnimi spremenljivkami, registrom, izpeljanimi potmi zbirke in vgrajenimi privzetimi vrednostmi.
Pogodba varnostne kopije
Izbrani ZIP mora vsebovati natanko en podprt izvoz baze:
- neprazen
dump.sqlali drugo datoteko*.sql; ali - veljaven izvoz po meri
*.dumpali*.backup.
Izbirni filestore lahko uporablja eno od podprtih postavitev baze/shrambe. Arhivi samo z izvozom objavijo bazo in ohranijo obstoječi aktivni filestore. Absolutni vnosi, prehodi poti, obrnjene poševnice, krmilni znaki, povezave ZIP, razširjene simbolne povezave ter dvoumni izvozi in shrambe so zavrnjeni.
Zaklepanje virov
Obnova uporablja dve trajni neblokirajoči svetovalni ključavnici:
- PostgreSQL:
/srv/pmiverse/.pmis-restore-locks/.pmis-restore-postgresql-<sha256>.lock, z zgoščeno vrednostjopostgresql-local-default:<effective-database-name>. - Filestore:
<physical-filestore-root>/.pmis-restore-filestore-<sha256>.lock, z zgoščeno vrednostjofilestore:<canonical-live-filestore-path>.
Vedno najprej pridobi ključavnico PostgreSQL in nato filestore. Neuspešna pridobitev ali preverjanje sprosti vse že pridobljene deskriptorje pred pregledom ali spremembo cilja. Ključavnice ostanejo pridobljene med obnovo, objavo, naknadnim delom, nevtralizacijo, povratkom in čiščenjem povratnih artefaktov. Datoteke ostanejo na disku; zaprtje deskriptorjev sprosti svetovalne ključavnice.
Zagoni tekmujejo, če souporabljajo dejansko bazo ali kanonični aktivni filestore. Zbirka, vzdevek, arhiv in delovni prostor ne spremenijo identitete vira. Različne baze z različnimi aktivnimi shrambami se lahko obnavljajo sočasno. --only-neutralize pridobi samo ključavnico PostgreSQL in zato tekmuje z običajno obnovo iste baze.
Vsi računi za obnovo morajo uporabljati isti skupni koren ključavnic PostgreSQL. Skripta ob nedostopnem ali nevarnem korenu varno zavrne izvedbo. Identiteta predstavlja lokalni/privzeti imenski prostor PostgreSQL procesa; ločeni gostitelji ali namerno različni koreni ključavnic niso usklajeni.
Objava in povratek
Skripta preveri in razširi vir v enoličen delovni prostor, obnovi v enolično začasno bazo in pripravi morebitni vhodni filestore pred objavo obeh virov. Obstoječo bazo in shrambo preimenuje v enolične povratne artefakte ter jih ohrani do uspešnega naknadnega dela in zahtevane nevtralizacije.
Ob napaki ali signalu uskladi opaženo stanje baze in datotek ter poskusi usklajen povratek. Pri dvoumnem ali nepopolnem povratku ohrani enolično poimenovane artefakte in izpiše navodila za okrevanje. Objava PostgreSQL in filestore uporablja usklajen povratek, ne ene atomarne transakcije med sistemoma.
Celotna pravila razreševanja, postavitve arhivov, nevtralizacijo in odpravljanje težav opisuje referenca obnove.