Skip to Content

Skripte za migracijo Odoo 14 → 18

Mapa vsebuje avtomatizacijo zaporednih migracij glavnih različic z OpenUpgrade in lokalnimi instancami po različicah. Glavna skripta migrate_14-18.sh prenese bazo Odoo 14 prek 15 → 16 → 17 → 18. Sledi večrazličicni postavitvi PMIVerse in varnostnim konvencijam splošnih smernic.

Predpogoji

  • Delovna postaja Arch Linux.
  • Lokalni PostgreSQL; uporabnik sme izvajati psql, createdb, dropdb, pg_dump, pg_restore.
  • Instance /srv/pmiverse/_pmisuite14/, _pmisuite15/, _pmisuite16/, _pmisuite17/ in _pmisuite18/.
  • Vsaka vsebuje <instance>/venv (skripta vključi venv/bin/activate), OCB z <instance>/repos/OCB/odoo-bin, za 15+ OpenUpgrade v <instance>/repos/OCB-openupgrade/<ver>-openupgrade/openupgrade_scripts/scripts in <instance>/config/pmisuite<ver>.conf s pravilnim addons_path, po potrebi z dodatki OpenUpgrade.
  • Lokalna baza PostgreSQL s podatki Odoo 14, npr. mydb14.

Delovanje migracije

  1. Preveri zahtevana orodja, odoo-bin, virtualna okolja in konfiguracije vseh različic.
  2. Preveri obstoj izvorne baze 14.0.
  3. Za izpeljana imena zamenja vezaje izvornega imena s podčrtaji.
  4. Izvede zaporedje: osnovni klon <src>_14, odstranitev opuščenih modulov, npr. pmis_stock_analytics, z lupino Odoo 14 in kopija; nato kloni <src>_15, <src>_16, <src>_17, <src>_18 z OpenUpgrade v okolju vsake različice. Pred 15 popravi npr. računovodske module in neskladja skladišč, pred 17 npr. odvezavo partnerjev uporabnikov HR. Po vsakem koraku izdela kopijo.
  5. Dnevnike piše v /srv/pmiverse/logs/openupgrade_<ver>.log, izvoze pg_dump -Fc pa po korakih v /srv/pmiverse/backups, razen ob --skip-backups.

Uporaba

cd /srv/pmiverse/_pmiconfig/scripts/migrate
./migrate_14-18.sh -d <source_db>
# Optional: overwrite intermediate DBs if they already exist
./migrate_14-18.sh -d <source_db> --force
# Optional: skip backups between versions for speed
./migrate_14-18.sh -d <source_db> --skip-backups
# Help
./migrate_14-18.sh --help
  • -d, --database <source_db>: obvezno ime obstoječe baze Odoo 14.
  • -f, --force: izbriše in ponovno ustvari obstoječe ciljne/vmesne baze, npr. <src>_15.
  • --skip-backups: preskoči .dump po posameznih korakih; možnost za zelo velike baze.
  • --up15-path, --up16-path, --up17-path, --up18-path: nadomestijo poti skript OpenUpgrade.
  • -h, --help: pomoč brez ustvarjanja map ali dostopa do baz.

Skripta ustvari in uporablja <src>_14 do <src>_18; vezaje v <src> pri izpeljavi zamenja s podčrtaji.

Po migraciji

Končna baza je <src>_18. Lokalni zagon:

# Activate the 18.0 venv
source /srv/pmiverse/_pmisuite18/venv/bin/activate
# Run Odoo 18 with the pinned config
/srv/pmiverse/_pmisuite18/repos/OCB/odoo-bin \
  -c /srv/pmiverse/_pmisuite18/config/pmisuite18.conf \
  -d <src>_18 \
  --logfile=/srv/pmiverse/logs/odoo18_<src>_18.log

Pred prvim zagonom aplikacije na produkcijski kopiji nevtralizirajte pošto, URL, cron in integracije. Primer lupine Odoo:

params = env["ir.config_parameter"].sudo()
params.set_param("web.base.url", "http://localhost:18069")
params.set_param("mail.smtp_host", "localhost")
params.set_param("mail.smtp_port", 1025)  # mailhog

Celoten seznam ukrepov določajo splošne smernice varnega ravnanja s produkcijskimi izvozi v razvoju.

Produkcijski postopek 14 → 18

Postopek nadgradi dejansko produkcijsko bazo na nadzorovanem gostitelju in jo vrne v produkcijo; dopolnjuje lokalna navodila po smernicah PMIVerse.

Produkcijsko občutljivo in destruktivno: ukazi so primeri, ne preverjena imena storitev ali celoten načrt za vsak gostitelj. Potrdite baze, enote, poti, kopije, nevtralizacijo in povratek ter pred izvedbo pridobite izrecno operativno odobritev.

Vedno kopirajte bazo in filestore skupaj. Ohranite skladnost konfiguracije s produkcijo (vrata, proxy_mode = True, širok addons_path). Integracije kopij naj ostanejo nevtralizirane do uvedbe. Delajte v odobrenem oknu z jasnim načrtom povratka.

1) Priprava

Na migracijskem gostitelju (postaja ali pripravljalni VM) zagotovite /srv/pmiverse/_pmisuite{14,15,16,17,18} z okolji, Odoo, OpenUpgrade in konfiguracijami pmisuite{15,16,17,18}.conf. Preverite odjemalce PostgreSQL. Izberite osnovno ime <src> za izpeljane baze _14 do _18.

2) Kopija produkcije na produkcijskem strežniku

Ustavite zapisovanje; dejanska imena enot se lahko razlikujejo:

sudo systemctl stop odoo
# or: sudo systemctl stop odoo14

Izvoz baze po meri:

pg_dump -Fc -d <prod_db> > /srv/pmiverse/backups/<prod_db>_pre_migration_$(date +%Y%m%d_%H%M%S).dump

Kopija filestore po dejanskem produkcijskem data_dir:

rsync -aHAX --info=stats2 /path/to/filestore/<prod_db>/ \
      /srv/pmiverse/backups/filestore_<prod_db>_pre_migration/

Če poslovanje zahteva, med prenosom kopij ponovno zaženite Odoo:

sudo systemctl start odoo

3) Prenos kopij na migracijski gostitelj

rsync -aHAX user@prod:/srv/pmiverse/backups/<prod_db>_pre_migration_*.dump \
      /srv/pmiverse/backups/
rsync -aHAX user@prod:/srv/pmiverse/backups/filestore_<prod_db>_pre_migration/ \
      /srv/pmiverse/backups/filestore_<prod_db>_pre_migration/

4) Lokalna obnova in nevtralizacija

Obnovite v lokalno ime za -d, na primer <src>:

createdb <src>
pg_restore -d <src> /srv/pmiverse/backups/<prod_db>_pre_migration_*.dump

Če dodatki med nadgradnjo potrebujejo filestore, ga obnovite pod data_dir ustrezne konfiguracije, da filestore/<db> ustreza obnovljenemu imenu. Pred zagonom strežnikov za preverjanje nevtralizirajte zunanje učinke v lupini Odoo:

# Odoo shell connected to <src> (or <src>_14 later)
params = env["ir.config_parameter"].sudo()
params.set_param("web.base.url", "http://localhost:18069")
params.set_param("mail.smtp_host", "localhost")
params.set_param("mail.smtp_port", 1025)  # mailhog
# Review connectors, acquirers, and crons; disable non‑essential ones

5) Migracija na migracijskem gostitelju

cd /srv/pmiverse/_pmiconfig/scripts/migrate
./migrate_14-18.sh -d <src>
# Add --force if intermediate targets already exist and can be overwritten

Skripta ustvari osnovo <src>_14 in postopno nadgradi do <src>_18, z dnevniki in kopijami vsakega prehoda pod /srv/pmiverse/logs ter /srv/pmiverse/backups.

6) Lokalno sprejemno preverjanje Odoo 18

source /srv/pmiverse/_pmisuite18/venv/bin/activate
/srv/pmiverse/_pmisuite18/repos/OCB/odoo-bin \
  -c /srv/pmiverse/_pmisuite18/config/pmisuite18.conf \
  -d <src>_18 --logfile=/srv/pmiverse/logs/odoo18_<src>_18.log

Preverite ključne postopke, prilagojene module in poročila. Odpravite težave in po potrebi ponovite z --force.

7) Priprava produkcijskega Odoo 18

Zagotovite repozitorije, okolje, pmisuite18.conf, systemd, nginx/proxy, vrata, proxy_mode = True in addons_path, skladen z migracijskim gostiteljem. Poti ohranite pod /srv/pmiverse. Načrtujte okno in pred obnovo ustavite staro storitev:

sudo systemctl stop odoo
# or: sudo systemctl stop odoo14

8) Prenos migrirane baze in shrambe v produkcijo

Na migracijskem gostitelju kopirajte končno bazo:

pg_dump -Fc -d <src>_18 > /srv/pmiverse/backups/<src>_18_migrated_$(date +%Y%m%d_%H%M%S).dump

Prenesite izvoz in migrirani filestore:

rsync -aHAX /srv/pmiverse/backups/<src>_18_migrated_*.dump \
      user@prod:/srv/pmiverse/backups/
rsync -aHAX /srv/pmiverse/_pmisuite18/data/filestore/<src>_18/ \
      user@prod:/srv/pmiverse/_pmisuite18/data/filestore/<target_db>/

Če se filestore ni spremenil, mora produkcijska instanca 18 vseeno kazati na pravo lokacijo, skladno z <target_db>.

9) Produkcijska obnova in nastavitev za uvedbo

Ustvarite in obnovite ciljno ime, prvotno ali novo:

createdb <target_db>
pg_restore -d <target_db> /srv/pmiverse/backups/<src>_18_migrated_*.dump

Parametre nastavite na produkcijske gostitelje in poštne releje, ponovno omogočite cron/integracije ter preverite web.base.url. Preglejte dbfilter/nginx/proxy za pravilno usmerjanje. Zaženite in spremljajte:

sudo systemctl start odoo18
sudo journalctl -u odoo18 -f

10) Preverjanje po uvedbi in povratek

Preverite prijave, ključne postopke, načrtovana dejanja, vhodno/odhodno pošto in integracije. Spremljajte zmogljivost, delavce ter dnevnike in ohranite kopije. Povratek: ustavite Odoo 18, obnovite zadnji dober par Odoo 14 in zaženite staro storitev.

Kontrolni seznam:

  • [ ] Produkcijska kopija baze in shrambe ter prenos.
  • [ ] Lokalna obnova, nevtralizacija in migrate_14-18.sh.
  • [ ] Preverjanje 18 in odprava težav.
  • [ ] Pripravljena produkcija 18 in ustavljena stara storitev.
  • [ ] Prenos ter produkcijska obnova migriranega para.
  • [ ] Produkcijske nastavitve, cron/integracije in zagon 18.
  • [ ] Spremljanje in pripravljen povratek.

Dnevniki in kopije

Dnevniki so /srv/pmiverse/logs/uninstall_pmis_stock_analytics.log za osnovni korak ter openupgrade_15.log, openupgrade_16.log, openupgrade_17.log, openupgrade_18.log v isti mapi. Kopije so /srv/pmiverse/backups/<db>_<tag>_<timestamp>.dump, oblika -Fc. Manjkajoče lokacije se ustvarijo. Kopije baze in filestore hranite skupaj; filestore posamezne instance je pod njenim data_dir.

Varnost

Izvorna baza se ne spreminja; skripta dela na izpeljanih klonih. Brez --force obstoječi cilj ustavi izvedbo; z njim se vmesne baze izbrišejo. Skupnih konfiguracij instanc ne urejajte za enkratne prilagoditve; uporabite možnosti CLI v konfiguracijah IDE.

Odpravljanje težav

  • »Source database '' does not exist«: potrdite z psql -lqt | cut -d '|' -f 1 | grep -w <name>.
  • »Missing file: …/odoo-bin« ali »Missing upgrade path dir: …/openupgrade_scripts/scripts«: preverite repozitorije posameznih različic in zgornje poti.
  • Pravice createdb/dropdb/pg_restore: zagotovite pravice lokalne gruče ali uporabite ustrezno vlogo.
  • Kodiranje/collation: cilji morajo imeti isto kodiranje in locale kot vir. Skripta uporablja privzete vrednosti createdb; po potrebi uredite privzete nastavitve gruče.
  • Napaka prehoda OpenUpgrade: preglejte ustrezni openupgrade_<ver>.log, odpravite vzroke po priporočilih OCA/OpenUpgrade (dodatki, priprava podatkov) in nato ponovite z --force.

Čiščenje

Po uspešni migraciji lahko za prostor izbrišete vmesne baze:

dropdb <src>_14
dropdb <src>_15
dropdb <src>_16
dropdb <src>_17

To naredite šele po potrditvi zdravja in kopije <src>_18.

Povezana dokumentacija

  • Splošne večrazličicne smernice: /srv/pmiverse/_pmiguidelines.
  • Projekt OpenUpgrade: https://github.com/OCA/OpenUpgrade.

Licenca in avtorstvo

  • Copyright (c) 2025. LUXIM d.o.o., Slovenia — Matjaž Mozetič.
  • Interna skripta in dokumentacija avtomatizacije okolja PMIVerse.