2.2 KiB
+++ images = ['images/blog/postgresql.jpg'] categoriesspot = ['Solutions', 'Technology'] tagsspot = ['Server', 'Database', 'PostgreSQL'] date = '2022-12-11' lastmod = '2022-12-11' title = 'Database link con PostgreSQL' published = true translationKey ='blog-postgresql-database-link' slug = 'postgresql-database-link' +++
In PostgreSQL è possibile creare dei database links e connettere due database separati, sia che risiedano sullo stesso server o su servers separati, purchè siano accessibili tramite rete.
La nomenclatura utilizzata è la seguente :
serverorig
: il server principale di originedatabaseorig
: il database sul server principale di origineserverdest
: il server secondario di destinazione sul quale verrà creato il database link che punta aserverorig
schemaorig
: lo schema di origine sul server principaleschemadest
: lo schema di destinazione sul server secondario
1. Installazione dell'estensione
Il primo passo da compiere è installare su serverdest
l'estensione postgres_fdw
come utente postgres
:
CREATE EXTENSION IF NOT EXISTS postgres_fdw;
2. Creazione utente per accesso tramite database link
Su serverorig
creare un utente che consenta la connessione da serverdest
e gli accessi
allo schema schemaorig
e tabelle interessate. Per semplicità l'utente sarà userdest
con
password passworddest
e dovrà avere accesso alla tabella tableorig
con i privilegi desiderati :
(SELECT, INSERT, UPDATE, DELETE
)
3. Creazione del database link
Su serverdest
:
CREATE serverorig FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host 'serverorig', port 'portorig', dbname 'databaseorig');
Creare su serverdest
il mapping per l'utente (myuser
) che deve poter usare il database link
CREATE USER MAPPING FOR myuser SERVER serverorig OPTIONS ( user 'userdest' , password 'passworddest');
5. Importare la struttura delle tabelle dallo schema principale ed assegnare i permessi
Su serverdest
:
IMPORT FOREIGN SCHEMA schemaorig LIMIT TO (tableorig) FROM SERVER serverorig INTO schemadest;
GRANT ALL ON TABLE schemadest.tableorig TO myuser;