Je vais proposer une base de données de l'ancien serveur en un nouveau.
Malheureusement, je n'ai aucune chance d'expérimenter (et du disque dur de l'ancien serveur commencer à échouer) pour que je demande les options pour pg_dump/pg_restore qui fonctionnerait dans mon cas.
J'ai terminé la migration sans problèmes.
Créer le décharge est facile:
Sudo -u postgres pg_dump --verbose --no-tablespaces --format=directory --file=/backup/path old_database_name
Restauration sur une nouvelle instance: d'abord, créez une nouvelle épisette de table et une base de données cible dans cette épisette. Ensuite, importez votre vidage comme ceci:
Sudo -u postgres pg_restore --verbose --dbname=new_database_name --jobs=8 /backup/path/
Vous pouvez ajuster le nombre d'emplois simultanés dépendant de votre matériel de processeur, des performances de sous-système d'E/S, etc.
Nous avons maintenant toutes les données dans une autre base de données, avec un nom différent, dans un espace de table dédié, sur un nouveau serveur qui exécute plus récent PostgreSQL.
Puisque vous utilisez pg_dump, il videra le schéma et les données.
pg_dump -d mydb -f dump_file_name.sql
Pour restaurer, vous devez avoir à createdb
d'abord, puis le restaurer ainsi, le nouveau problème de nom peut être résolu lors de la création de la nouvelle base de données.
createdb mynewdb
Pour l'espace de table, vous devez d'abord créer l'espace de table dans la base de données nouvellement créée.
create tablespace 'your_tablespace' location 'your_tablespace_location'
Puis modifiez le fichier de vidage (benned_file_name.sql) créé avec pg_dump et modifier SET default_tablespace = ''
à SET default_tablespace = 'your_tablespace'
.
Enfin, vous pouvez restaurer avec:
psql -d mynewdb -f dump_file_name.sql