Sauvegarder un serveur PostgreSQL sous Windows

 

Documentation de PostgreSQL

On peut tout d'abord lire sur la documentation officielle de PostgreSQL que plusieurs possibilités s'offrent à nous pour sauvegarder une base de données. Pour ce faire, une excellente méthode semble être l'utilitaire pg_dump ou pg_dumpall qui extrait les données de la base pour les enregistrer dans un fichier, appelé fichier de dump. Voici un exemple de commande en situation.

SET PGPASSWORD="mot-de-passe-de-la-base"
C:\PostgreSQL\9.3\bin\pg_dumpall.exe -U utilisateur-de-la-base >dump.sql

Cependant dans notre cas de figure, nous ne connaissons ni l'utilisateur du SGBD ni son mot de passe associé. Nous allons donc utiliser la sauvegarde au niveau du système de fichiers. Le principal point à connaitre est que cette sauvegarde se fait à froid, c'est à dire en éteignant le SGBD. Nous allons procéder à la sauvegarde en éteignant le serveur PostgreSQL un minimum de temps.

Sauvegarde du système de fichiers

Nous utilisons un script bat, exécutable par le planificateur des tâches, pour copier les fichiers de données à froid dans un répertorie temporaire. Ensuite ce répertoire temporaire peut être sauvegardé selon la méthode voulue (copie sur disque, copie sur NAS, sauvegarde OutBackup, ...).

@echo on
mkdir "C:\_SAUV\"
del /S /F /Q "C:\_SAUV\data"
rd /S /Q "C:\_SAUV\data"
mkdir "C:\_SAUV\data"
sc stop postgresql-x64-9.3
xcopy /C /D /E /H /I /R /Y "C:\PostgreSQL\9.3\data" "C:\_SAUV\data\"
sc start postgresql-x64-9.3 

Le fonctionnement de ce script est très simple. Il copie le répertoire data de PostgreSQL dans un autre répertoire C:\_SAUV\data. Avant de procéder à la copie, le répertoire C:\_SAUV\data est entièrement purgé. Dans cet exemple le programme de copie est xcopy. En pratique, on utilise le plus souvent un logiciel de copie différentielle qui tire partie des blocs de fichiers communs entre la cible et la source pour accélérer le traitement.

On remarque que postgresql-x64-9.3 est le nom du service tel que précisé dans l'utilitaire Windows services.msc aussi appelé "Services, démarre, arrête et configure les services Windows".

Il est important d'utiliser la commande sc stop postgresql-x64-9.3 (le service controller windows) plutôt que net stop postgresql-x64-9.3. Le contrôleur de service permet un paramétrage plus fin, mais son réel avantage est de s'exécuter correctement lorsqu'il est intégré à un script bat lancé automatiquement (par le planificateur des tâches ou par une pré/post commande). Ce n'est pas le cas de la commande net stop et net start.

 

Conclusion

Cette manière de procéder n'éteint le serveur de base de données qu'un minimum de temps. Cela se compte en secondes voire minutes selon la taille des bases de données et la rapidité du disque dur de la machine. Nous disposons ensuite de tout notre temps pour sauvegarder les bases de données à l'endroit voulu.

Qui sommes nous ?

alt=

PCStreet SAS est une société issue du monde Unix. Elle s'inscrit depuis 1997 dans le monde du libre et de l'Open Source avec une forte compétence d'architecture réseau.

Nous contacter

PCStreet SASPCStreet SAS

Tél. : 01 39 04 20 20

Appels anonymes basculés sur répondeur.

Formulaire de contact

Suivez-nous sur Twitter           

Actualités Facebook

Témoignages client

"Nous confirmons, grâce aux sauvegardes effectuées par vos soins, avoir retrouvé l'ensemble de nos données perdues."

Source

Vous êtes ici : Accueil Blog Le Blog OutBackup Sauvegarder un serveur PostgreSQL sous Windows