Skip to Content

Varnostne kopije baz Odoo 18 in shramb filestore

scripts/backup/backup_odoo18_dbs.sh izbere baze in poti iz /srv/pmiverse/_pmiregistry/config/pmiverse.conf; ne vsebuje seznama produkcijskih baz. Privzeti izbirnik je kratko sistemsko ime gostitelja. Neznani ali dvoumni gostitelji odpovejo pred dostopom do baz ali pisanjem kopij.

Registri

PMIVERSE_DB_REGISTRY ostaja šeststolpčni register baz/obnove. PMIVERSE_INSTANCE_REGISTRY poveže vzdevke baz z instanco v devetih poljih, ločenih z vejicami:

instance_id,host,version,filestore_base,backup_root,pg_host,pg_port,pg_user,database_aliases

ID instance mora biti enoličen, poti absolutne, vzdevki ločeni z |. Vsak vzdevek se mora enolično razrešiti v bazo iste različice Odoo. Prazna polja PostgreSQL ohranijo privzete vrednosti libpq; neprazni PGHOST, PGPORT in PGUSER iz okolja nadomestijo povezavo registra. Uporabite obstoječo avtentikacijo storitvenega računa, ne shranjujte poverilnic v registre.

ID, gostitelji in članstvo pripadajo /srv/pmiverse/_pmiregistry/config/pmiverse.conf. Polje gostitelja je sistemski hostname -s. PMIS_BACKUP_REMOTE_HOSTS izbira vire SSH za prenosnik in lahko vsebuje vzdevke SSH, različne od sistemskih imen. --host nadomesti izbirnik registra, ne začne SSH. Instanca določa poti in članstvo, seznam gostiteljev pa vire za prenos.

Za več instanc Odoo 18 na gostitelju dodajte različne ID in za vsako opravilo uporabite --instance; po potrebi ločite shrambe in povezave PostgreSQL. Instance z enoličnimi imeni baz lahko delijo koren kopij in kazalo latest, vendar morajo zaradi ključavnice teči zaporedno. Pri prekrivajočih imenih baz uporabite različne korene. Ravno kazalo prenosnika zahteva globalno enolična imena baz; ločeni koreni potrebujejo ločeno nastavljene sinhronizacije in cilje. Proizvajalec namenoma izbira le različico 18.

Predogled in zagon

scripts/backup/backup_odoo18_dbs.sh --host backup-a --dry-run
scripts/backup/backup_odoo18_dbs.sh --host backup-b --instance backup-b-18 --dry-run
scripts/backup/backup_odoo18_dbs.sh --help

--dry-run preveri in izpiše načrt brez PostgreSQL, ustvarjanja map, ključavnic ali zagona posodabljalnika latest. Konfiguracija je zaupanja vredna izvršljiva lupinska koda; druge vhode --config FILE prej preglejte. Brez --dry-run zaženite samo kot odobreno varnostno kopiranje.

Izbirniki CLI nadomestijo PMIVERSE_CONF, PMIS_BACKUP_HOST oziroma PMIS_BACKUP_INSTANCE. Podprti ostanejo neprazni BACKUP_ROOT, FILESTORE_BASE, seznam PMIS_BACKUP_DATABASES po vrsticah, BACKUP_TIMESTAMP in LATEST_UPDATER. Prve tri skupaj brez izbirnika gostitelja/instance omogočijo izrecno nastavljeno neregistrirano instanco. Imena baz morajo biti varni deli poti; podvojitve, latest, prehajanje poti in imena v obliki možnosti so zavrnjena. Časovni žig je YYYYMMDD_HHMMSS.

Zaganjalniki konkretne namestitve Odoo 18 so v /srv/pmiverse/_pmiregistry/scripts/backup/ in delegirajo temu proizvajalcu; glejte opombe namestitve. Zgornji gostitelji in ID so sintetični.

Arhivi in poti

Vsak oddaljeni strežnik še piše pod /srv/pmiverse/_pmisuite18/data/backups/:

  • <database>/<timestamp>.<database>.dump.zip: izvoz PostgreSQL po meri v korenu ZIP in, če obstajajo, datoteke filestore <database>/.
  • latest/<database>_latest.zip: relativna simbolna povezava na najnovejši arhiv.
  • Privzeto deset običajno poimenovanih navadnih arhivov na bazo. PMIS_BACKUP_RETENTION nadomesti posamezne baze po dejanskem imenu, ne vzdevku:
PMIS_BACKUP_RETENTION='demo.example,30
staging.example,3'

Števila morajo biti decimalna od 1 do 999999999 brez vodilnih ničel. Nenavedene baze ohranijo deset; nič ni dovoljena. Prazne vrstice in komentarji # se prezrejo. Podvojeni in napačni vnosi odpovejo pred dostopom ali pisanjem, tudi pri --dry-run. Vnosi drugih gostiteljev so dovoljeni, izrecni izbori uporabljajo isto politiko. Predogled izpiše število vsake baze. Po uspešni objavi se odvečni arhivi odstranijo po padajočem času spremembe, ob izenačenju po imenu. Znižanje začne veljati ob naslednji uspešni kopiji te baze.

Kanonični ZIP vsebuje en časovno označen izvoz <timestamp>.<db_name>.dump v korenu in ob obstoječem filestore mapo <db_name>/... z relativnimi potmi.

Proizvajalec preveri celovitost ZIP, objavi brez prepisovanja in uporablja eno neblokirajočo ključavnico na kanonični koren kopij. Napake vrnejo neničelno kodo, druge baze lahko dokončajo delo; uspešni arhivi ostanejo. Manjkajoča shramba povzroči opozorilo in arhiv samo z bazo. Branje baze in filestore ni usklajen transakcijski posnetek.

Potrebni so Bash, PostgreSQL pg_dump, zip, unzip, flock in GNU coreutils (realpath, stat, ln itd.). Storitveni račun potrebuje dostop do baze, branje filestore in pisanje v koren kopij.

Sinhronizacija in uvedba

Enote rsync celotne zgodovine konkretne namestitve so v /srv/pmiverse/_pmiregistry/templates/systemd/rsync/. Oddaljeni koren prenesejo v ločene mape lokalnega strežnika obnove. Sintetična primera:

Oddaljeni vir Lokalni cilj
backup-a:/srv/pmiverse/_pmisuite18/data/backups/ /srv/pmiverse/_pmisuite18/data/backups/backup-a/
backup-b:/srv/pmiverse/_pmisuite18/data/backups/ /srv/pmiverse/_pmisuite18/data/backups/backup-b/

--delete je omejen na lokalno drevo posameznega gostitelja. Izvorna imena obnove v registru vključujejo lokalno gostiteljsko podmapo. Pri neposredni obnovi na oddaljenem proizvajalcu uporabite --source za mapo baze pod nespremenjenim korenom.

Prenosnik še bere backups/latest/ vsakega oddaljenega gostitelja in objavi ravni lokalni nabor. Obnova prenosnika uporabi zadnji del izvorne mape kot prvotno ime baze.

Spremenijo se samo lokalne poti celotne zgodovine. Urejanje predlog jih ne namesti in ne premakne arhivov; oddaljeni arhivi ne potrebujejo migracije:

  1. Preglejte izbor vsakega strežnika in potrdite ime gostitelja ali nastavite PMIS_BACKUP_HOST v okolju storitve.
  2. Načrtujte hrambo obstoječih lokalnih zrcal backups/ in backups-main/; zgodovina se ne premakne samodejno. Do ločeno odobrenega prenosa jo obnavljajte z izrecnim --source. Oddaljena zgodovina ostane na mestu z obstoječo hrambo.
  3. Proizvajalca, pomočnika in skupno konfiguracijo namestite skupaj na vsak strežnik. Po potrebi posodobite okolje načrtovane storitve. Za več lokalnih instanc backup_odoo18_dbs@.service poda %i kot ID; vsako izrecno namestite in načrtujte ter prilagodite račun.
  4. Lokalni register obnove in rsync celotne zgodovine posodobite skupaj. Pred zagonom pripravite cilje zrcal s pravim lastništvom. Poti virov prenosnika ostanejo enake. Izognite se prekrivanju proizvajalcev na skupnem korenu.

Samostojni pmis-backup-latest uporablja isti privzeti izbor instance; ostajata --backup-root/BACKUP_ROOT. Na gostitelju z več instancami storitev potrebuje PMIS_BACKUP_INSTANCE ali izrecni koren.

Preverjanje vira ne vključuje dejanskega kopiranja, migracije, sinhronizacije ali namestitve enot. Izolirane primere preverjata bash tests/test_backup_registry.sh in bash tests/test_backup_locking.sh.

Skripte/enote Odoo 12 ostajajo starejši viri zunaj tega postopka. Glejte splošno obnovo in postopek prenosnika.