2010-05-09 5 views
4

Oublié de faire une sauvegarde. Maintenant, j'ai un disque dur avec des bases de données et un nouveau système avec des postgres vides. Puis-je restaurer des bases de données? par simple copie de fichiers etc?comment restaurer DB postgresql sans sauvegarde

+0

Devrait probablement aller à ServerFault. –

+2

Et assurez-vous de faire ces sauvegardes dans le futur ;-) – ChristopheD

Répondre

5

Si vous avez les données répertoire compléte de votre ancien système de postgresql (et si elle était la même version, ou qui ne diffèrent que dans un numéro de révision), vous pouvez juste essayer de le mettre à la place de vos données annuaire dans votre nouvelle installation postgresql. (Bien sûr, arrêtez le serveur postgres avant de faire cela).

C'est fondamentalement la même procédure utilisée quand upgrading postgresql, quand il n'y a pas besoin de faire une sauvegarde-restauration.

Edit: Comme indiqué dans les commentaires, je suppose que non seulement même (ou presque identiques) version, mais même architecture (32 - 64 bits, Linux - Windows, etc.)

+2

S'il vous plaît noter que doit également être la même arche (32 ou 64 bits) et I * think * la même plate-forme (Linux, Solaris, Windows, etc .). –

+1

thx) cela fonctionne) –

3

En plus de la réponse du leonbloy , vous pouvez essayer pg_migrator, surtout si vous avez besoin de mettre à niveau de 8.3 à 8.4 (et 9.0 éventuellement).

2

Dans votre cas, vous avez les fichiers, mais si vous n'avez pas, Peut-être, seulement peut-être, vous pouvez faire quelque chose avec les journaux de la base de données, vous pouvez essayer de voir le journal des déclarations dans la base de données normalement /var/log/postgresql/postgresql.log, si elle est là ou à proximité, et si log_statements = 'mod' ou 'all' est configuré avant, vous pouvez récupérer certaines de vos données. Table par table, en recherchant par insertion dans dans ces tables dans tout ou l'historique récent de la base de données. Vous pouvez couper du texte avec quelques outils Unix pour obtenir seulement les instructions et mettre un ";" à la fin de chaque instruction, et d'autres requêtes importantes comme supprimer, etc.

Mais vous devez le faire table par table, et les données doivent être là, et la base de données ne fonctionne pas trop longtemps sans sauvegarde.

Dans certains cas, vous avez juste besoin de la dernière opération ou quelque chose comme ça pour sauver la journée.

Ceci, cependant, c'est juste pour Apolo 13 moment de catastrophes et ne peut jamais remplacer une bonne sauvegarde.

Questions connexes