Preskoči na vsebino

Podvajanje baze Odoo

duplicate_database.sh kopira bazo Odoo na novo ime na istem strežniku PostgreSQL, privzeto z createdb --template. Privzeto vključi tudi filestore. Obstoječe ciljne baze in v načinu polne kopije obstoječe ciljne shrambe so zavrnjene. Vir se ne spremeni in obstoječe povezave se ne prekinejo.

./duplicate_database.sh example_source example_copy
./duplicate_database.sh --nf example_source example_copy
./duplicate_database.sh --dr example_source example_copy
./duplicate_database.sh --dr --nf example_source example_copy
./duplicate_database.sh --filestore /path/to/data/filestore example_source example_copy

Privzeto kopiranje predloge se izogne izvozu in ponovnemu sestavljanju baze. Zahteva zaprte vse povezave do vira, tudi nedejavne seje, in lastništvo izvorne baze ali pravice superuporabnika PostgreSQL. Te zahteve uveljavlja PostgreSQL; skripta ne odklaplja uporabnikov in ne preide samodejno na drug način.

--dr izbere prejšnji način pg_dump/pg_restore. Ta dovoljuje povezave do vira in ustvari dosleden posnetek baze, vendar popolna skladnost baze in filestore še vedno zahteva ustavljene zapisovalce. Oba načina neodvisno podpirata --nf in ponastavita UUID kopirane baze.

Privzeti koren filestore je /srv/pmiverse/_pmisuite18/data/filestore. Nadomestite ga z FILESTORE_BASE ali --filestore; možnost CLI ima prednost. Vir je <root>/<source>, cilj <root>/<target>. V načinu polne kopije je manjkajoča izvorna shramba napaka; če je baza namenoma nima, uporabite --nf. Ta ne pregleduje ali spreminja shramb: priponke v bazi ostanejo dostopne, datotečne priponke pa ne, razen če ustrezno shrambo zagotovite ločeno.

Predpogoji in delovanje

  • Potrebni so Bash, GNU coreutils/find, PostgreSQL 13 ali novejši in združljivi odjemalci. Zaženite kot račun Odoo s pravicami branja izvorne baze in shrambe, ustvarjanja baz in pisanja v koren filestore. Nova baza in kopirane datoteke pripadajo izvajalnemu računu. Kopiranje predloge ohrani lastništvo in pravice objektov v bazi; --dr obnovi objekte pod trenutno vlogo PostgreSQL brez kopiranja lastništva in pravic.
  • Povezave uporabljajo običajne spremenljivke PostgreSQL: PGHOST, PGPORT, PGUSER, PGPASSFILE. Vzdrževalna baza je postgres. Skripta ne bere konfiguracije Odoo in ne poziva za gesla.
  • Pred kopiranjem ustavite Odoo in druge zapisovalce, vključno z načrtovanimi opravili, ter jih pustite ustavljene do zaključka. V načinu predloge zaprite tudi vse izvorne povezave. Kopija baze PostgreSQL je dosledna, kopija datotek pa ločena; sočasni zapisi ali čiščenje priponk lahko povzročijo neskladnost. Skripta storitev ne ustavi sama.
  • Cilj med operacijo ohranite nedostopen. Ime rezervirajte za to operacijo in na cilju ne izvajajte sočasne obnove ali drugega upravljanja baze oziroma filestore. Imena lahko vsebujejo črke ASCII, številke, podčrtaje, pike in vezaje, do 63 znakov, z začetno črko, številko ali podčrtajem.
  • Zagotovite prostor za novo bazo in filestore. Pri --dr tudi za začasni izvoz baze; način predloge ga ne ustvari. Začasni izvozi uporabljajo TMPDIR (privzeto /tmp) in se odstranijo ob običajnem izhodu, napaki ali obravnavanem signalu. Prisilna prekinitev ali sesutje gostitelja lahko pusti zasebno mapo pmis-duplicate.* za ročno čiščenje.

Kopija dobi nov database.uuid, kot je primerno za neodvisno bazo Odoo. Druge nastavitve, uporabniki, poverilnice, načrtovana dejanja in integracije se kopirajo nespremenjeni. Skripta kopije ne nevtralizira. Kopije produkcije morajo ostati nedostopne do nevtralizacije z obstoječim načinom obnove --only-neutralize, s pravilno ciljno bazo in konfiguracijo Odoo. Pred omogočanjem preglejte nameščene posebne integracije.

Če podvajanje odpove po ustvarjanju baze, se nova baza in kopirana shramba ohranita za pregled. Lahko sta nepopolni: pustite ju nedostopni, preglejte napako in pred ponovitvijo izrecno počistite neuspešni cilj. Skripta nikoli samodejno ne izbriše baze ali ciljne shrambe.

Dopolnjevanje Bash

Skupno dopolnjevanje PMIVerse ponuja možnosti, mape po --filestore in trenutna imena izvornih baz iz PostgreSQL. Na izvornem argumentu dvakrat pritisnite Tab za seznam ali vnesite predpono in pritisnite Tab. Poizvedba samo za branje se poveže z postgres z istimi spremenljivkami kot skripta: privzeto navede lokalne baze, upošteva pa PGHOST, PGPORT in PGUSER. Izključi predloge PostgreSQL, postgres, baze brez dovoljenih povezav in neustrezna imena.

Dopolnjevanje nikoli ne poziva za geslo in z GNU timeout omeji poizvedbo na tri sekunde. Če PostgreSQL ni na voljo, avtentikacija odpove, čas poteče ali manjkajo orodja, tiho uporabi nastavljeni register PMIVerse. Možnosti, mape in ciljni argumenti ne poizvedujejo po PostgreSQL. Ciljno ime vnesite sami, saj še ne sme obstajati. Dopolnjevanje deluje pri zagonu po imenu ali poti.

Ob nameščenem bash-completion ga omogočite v trenutni seji:

source /usr/share/bash-completion/bash_completion
source /srv/pmiverse/_pmiconfig/scripts/completion/pmiverse-completion.bash

Po spremembah ponovno naložite skupno datoteko; že odprta lupina ohrani stare definicije. Izrecno je registrirana tudi kanonična absolutna pot skripte in nadomesti morebitno predpomnjeno splošno dopolnjevanje te poti. Za ukazom vnesite presledek pred dvakratnim Tab, na primer ./duplicate_database.sh, nato Tab, Tab. Registrirano je tudi ime brez končnice duplicate_database za uporabnike z ustreznim vzdevkom ali simbolno povezavo. Dopolnjevanje te bližnjice ne ustvari.

Obstoječi namestilnik bližnjic CLI namesti posodobljeno skupno dopolnjevanje za prihodnje seje.