Ho ereditato un vecchio server (Ubuntu 12.04.5) con un database in esecuzione su PostgreSQL 8.3.8 con l'estensione PostGIS 1.3.5. Questo server verrà sostituito da un nuovo server (4.14.12-1-ARCH) in cui utilizzo la finestra mobile per separare diverse istanze PostgreSQL. Per una prima prova ho usato il mdillon / postgis: ultima immagine per creare il nuovo setup. Ciò dovrebbe comportare PostgreSQL 10.1 + PostGIS 2.4.
Quando provo a ripristinare un dump del vecchio database sul nuovo server, ricevo molti errori come il seguente:
...
pg_restore: creating FUNCTION "public.st_box2d_in(cstring)"
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 626; 1255 1052513 FUNCTION st_box2d_in(cstring) postgres
pg_restore: [archiver (db)] could not execute query: ERROR: could not access file "/usr/lib/postgresql/8.3/lib/liblwgeom": No such file or directory
Command was: CREATE FUNCTION st_box2d_in(cstring) RETURNS box2d
LANGUAGE c IMMUTABLE STRICT
AS '/usr/lib/postgresql/8.3/lib/liblwgeom', 'BOX2DFLOAT4_in';
pg_restore: creating FUNCTION "public.st_box2d_out(box2d)"
pg_restore: [archiver (db)] Error from TOC entry 628; 1255 1052515 FUNCTION st_box2d_out(box2d) postgres
pg_restore: [archiver (db)] could not execute query: ERROR: could not access file "/usr/lib/postgresql/8.3/lib/liblwgeom": No such file or directory
Command was: CREATE FUNCTION st_box2d_out(box2d) RETURNS cstring
LANGUAGE c IMMUTABLE STRICT
AS '/usr/lib/postgresql/8.3/lib/liblwgeom', 'BOX2DFLOAT4_out';
pg_restore: creating TYPE "public.box2d"
pg_restore: [archiver (db)] Error from TOC entry 2331; 1247 1052511 TYPE box2d postgres
pg_restore: [archiver (db)] could not execute query: ERROR: function st_box2d_in(cstring) does not exist
Command was: CREATE TYPE box2d (
INTERNALLENGTH = 16,
INPUT = st_box2d_in,
OUTPUT = st_box2d_out,
ALIGNMENT = int4,
STORAGE = plain
);
...
Il vecchio database necessita di librerie che non sono più disponibili con la nuova versione di Postgres-Postgis. Qual è il modo migliore per affrontarlo?
Mentre sto usando la finestra mobile potrei forse semplicemente creare un contenitore con il vecchio software e mantenerlo in esecuzione senza toccare il database. Il database viene utilizzato solo internamente: nessun problema di sicurezza qui. D'altro canto, vorrei utilizzare le nuove versioni di Postgres-Postgis per essere meglio preparati per il futuro. Ma è realisticamente possibile eseguire un aggiornamento del database e delle sue funzionalità?
Qual è il modo migliore per affrontarlo?