Je dois déplacer et mettre à niveau une très grande base de données PostGIS (~ 320 Go) de server1 (PostgreSQL 9.1, PostGIS 1.5) vers server2 (PostgreSQL 9.3, PostGIS 2.1).
Le processus de mise à niveau est bien documenté . Le problème est que je n'ai pas assez d'espace sur server1 pour y vider le fichier, le contrôler, puis le copier sur server2 et vérifier les sommes. J'ai essayé:
- Canalisation du vidage de server1 vers server2 à l' aide de
nc
. - Écrire un fichier de vidage directement sur un système de fichiers server2 qui est monté sur server1 en utilisant
sshfs
.
Les deux fois, le fichier de vidage semble avoir été corrompu. pg_restore
s'est cassé à différents endroits avec des erreurs comme celle-ci:
pg_restore: [compress_io] could not uncompress data: incorrect data check
Quelqu'un peut-il suggérer une meilleure façon de réaliser ce mouvement et cette mise à niveau?
MISE À JOUR: A essayé NFS (et a donné à SSHFS un autre essai). Il est clair que ces systèmes de fichiers distants ne peuvent pas transférer de manière fiable autant de données . Des blocs sont visiblement manquants dans le fichier SQL résultant, provoquant des erreurs de syntaxe comme celle-ci lors de l'importation:
ERROR: invalid input syntax for integer: "8266UPDATE spatial_ref_sys o set auth_name = n.auth_name, auth_srid = n.auth_srid, srtext = n.srtext, proj4text = n.proj4text FROM _pgis_restore_spatial_ref_sys n WHERE o.srid = n.srid;"
la source
Réponses:
Je recommanderais de vider la base de données 9.1 de votre nouveau serveur 9.3 comme ceci:
Je recommande d'utiliser le 9.3
pg_dump
car ilpg_dump
est toujours rétrocompatible, mais pas compatible en amont. En d'autres termes, le plus récentpg_dump
prendra en charge toutes les modifications de syntaxe que le nouveau serveur requiert et que l'utilitaire plus ancien ne connaît pas.Assurez-vous que votre
pg_hba.conf
etlisten_addresses
inpostgresql.conf
sont configurés pour vous permettre de vous connecter et de vider à distance de manière appropriée également.Si vous vouliez essayer un vidage et restaurer en une seule étape, vous pouvez également essayer ceci:
J'espère que cela pourra aider. =)
la source