Déplacer la base de données postgresql d'un serveur à un autre

9

J'ai créé une base de données (spatiale) à mon domicile qui est de plusieurs gigaoctets et je veux déplacer la base de données entière car elle est d'un ordinateur mon ordinateur de travail.

Rien de fan, je vais créer une nouvelle instance db postgresql / postgis sur mon ordinateur de travail. Les utilisateurs db peuvent ou peuvent ne pas avoir le même nom sur les deux ordinateurs.

C'est possible? À quoi dois-je faire attention? Comment puis-je le faire sans douleur?

J'utilise postgresql v9.1.5 avec l'extension postgis. Ubuntu12.04 (noyau 3.2.0-31)

user528025
la source
Voir ce fil similaire sur StackOverflow, Copier la base de données PostgreSQL sur un autre serveur .
Basil Bourque

Réponses:

11

Vous pouvez exécuter un vidage de la base de données:

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

puis réimportez dans PostgreSQL sur votre ordinateur de travail. Cela prendra un certain temps et le fichier résultant, même s'il est compressé, peut être de l'ordre du gigaoctet, mais devrait être suffisamment petit pour être contenu sur une clé USB.

Sur votre ordinateur de travail, créez la nouvelle base de données et chargez le vidage:

zcat outfile.sql.gz | psql yournewdatabase

Si vous disposez d'une connexion rapide (ou peut prendre du temps), vous pouvez même transférer la base de données via Internet via une connexion SSH cryptée ou des outils tels que rsync.

LSerni
la source
1
Qu'en est-il des privilèges utilisateur / groupe? chez moi, j'ai par exemple user1 mais au travail son user2. Est-ce que ça importe?
2
Ça ne devrait pas. Bien sûr, vous devez définir le bon utilisateur dans votre application. Puisqu'il s'agit de votre PC personnel, essayez de renommer user1 en user2 et de vérifier que tout fonctionne, avant de vider. Ensuite, le transfert devrait être sans problème.
3
Utilisez pg_dumpall pour un vidage des rôles de base de données.
Frank Heikens
1
pour pouvoir vider la base de données, vous devez installer la même version postgresql que sur l'ancien serveur, voir wiki.postgresql.org/wiki/Apt
rubo77
2

pg_dumpall est le moyen le plus sûr de le faire. Je recommanderais de toute façon de prendre une décharge avant la migration. le gros problème avec cela est qu'il peut prendre un certain temps à restaurer s'il est gros.

Vous pouvez également copier le répertoire de données, de préférence après l'arrêt de votre serveur (vous pouvez utiliser pg_start_backup () à la place de l'arrêt, mais voir tous les documents sur la récupération à un moment donné avant de suivre cette route. Cette route permettrait un temps d'arrêt presque nul Notez également que vous ne pouvez le faire que si l'architecture du système d'exploitation et du processeur est la même sur les deux systèmes. Vous ne pouvez pas passer de Windows à Linux ou d'i686 à x86-64 de cette manière. Vérifiez également les versions du noyau du système d'exploitation dans l'ordre pour vous assurer que les systèmes sont compatibles.

Chris Travers
la source