Sposta il database postgresql da un server a un altro


9

Ho creato un database (spaziale) a casa mia che è di diversi gigabyte e voglio spostare l'intero database così com'è da un computer del mio computer di lavoro.

Niente fanatico, creerò una nuova istanza db postgresql / postgis sul mio computer di lavoro. Gli utenti del db possono o non possono avere lo stesso nome in entrambi i computer.

È possibile? Di cosa dovrei stare attento? Come posso farlo senza dolore?

Sto usando postgresql v9.1.5 con estensione postgis. Ubuntu12.04 (kernel 3.2.0-31)


Vedi questo thread simile su StackOverflow, Copia del database PostgreSQL su un altro server .
Basil Bourque,

Risposte:


11

È possibile eseguire un dump del database:

pg_dump yourdatabase | gzip -9 > outfile.sql.gz

e quindi importare nuovamente in PostgreSQL sul computer di lavoro. Ci vorrà un po 'di tempo e il file risultante, anche se compresso, potrebbe trovarsi nell'intervallo di gigabyte, ma dovrebbe essere abbastanza piccolo da essere contenuto in una chiave USB.

Sul tuo computer di lavoro, crea il nuovo database e carica il dump:

zcat outfile.sql.gz | psql yournewdatabase

Se si dispone di una connessione veloce (o può richiedere del tempo), è anche possibile trasferire il database tramite Internet tramite una connessione SSH crittografata o strumenti come rsync.


1
Che dire dei privilegi di utente / gruppo? a casa ho ad esempio user1 ma al lavoro è user2. Importa?

2
Non dovrebbe. Ovviamente devi impostare l'utente corretto nella tua applicazione. Dal momento che è il tuo PC di casa, prova a rinominare user1 in user2 e verificando che tutto funzioni, prima di scaricare. Quindi il trasferimento dovrebbe essere senza problemi.

3
Utilizzare pg_dumpall per un dump dei ruoli del database.
Frank Heikens,

1
per poter scaricare il database, devi installare la stessa versione postgresql del vecchio server, vedi wiki.postgresql.org/wiki/Apt
rubo77

2

pg_dumpall è il modo più sicuro per farlo. Consiglierei comunque di fare un dumpall prima della migrazione. il grosso problema è che può essere necessario un po 'di tempo per ripristinarlo se è grande.

È inoltre possibile copiare la directory dei dati, preferibilmente dopo aver arrestato il server (è possibile utilizzare pg_start_backup () al posto dell'arresto ma visualizzare tutti i documenti sul ripristino temporizzato prima di procedere su quella route. Tale route consentirebbe un tempo di inattività quasi zero Tuttavia, tieni presente che puoi farlo solo se l'architettura del sistema operativo e della CPU è la stessa su entrambi i sistemi. Non puoi passare da Windows a Linux o da i686 a x86-64 in questo modo. Controlla anche le versioni del kernel del sistema operativo in ordine per assicurarsi che i sistemi siano compatibili.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.