7
votes

Est-ce que quelqu'un connaît un bon moyen de sauvegarder des bases de données Postgres?

J'ai un script qui produira des sauvegardes à rotation quotidiennes pour MySQL, mais je ne trouve rien de même pour les postgres. J'ai également découvert qu'il possède une capacité de sauvegarde en ligne, qui devrait être utile, car il s'agit d'un site de production.

Quelqu'un peut-il connaître un programme / script qui m'aidera, voire un moyen de le faire?

Merci.


0 commentaires

8 Réponses :


19
votes

Un moyen est de Utilisez pg_dump Pour générer un vidage plat SQL, que vous pouvez gzip ou autre. C'est certainement l'option la plus simple, car les résultats peuvent être corrects dans PSQL pour ré-charger une base de données, et comme cela peut également exporter en tant que texte brut, vous pouvez rechercher ou modifier les données avant. restaurer si nécessaire.

La méthode suivante consiste à éteindre temporairement votre base de données (ou si votre système de fichiers prend en charge les instantanés atomiques, en théorie qui pourrait fonctionner) et sauvegarde Votre postgreSQL Data .

Cette page à partir du site PostgreSQL explique également comment Faites des sauvegardes en ligne et une récupération de point à l'heure, qui est définitivement la plus difficile à configurer, mais aussi la méthode optimale. L'idée est que vous effectuez une sauvegarde de base (que vous pourriez faire tous les jours, quelques jours ou une semaine) en exécutant un SQL spécial ( pg_start_backup et pg_stop_backup ) et faites un (Niveau de système de fichiers) Copie de votre répertoire de base de données. La base de données ne va pas hors ligne pendant ce temps et tout fonctionne toujours comme normal. À partir de ce moment-là, la base de données génère un journal écrit à avance (WAL) de tout changement, qui peut ensuite être poussé (automatiquement, par la base de données) à l'endroit où vous le souhaitez. Pour restaurer, vous prenez la sauvegarde de base, chargez-la dans une autre instance de base de données, puis rejouez tous les fichiers WAL. De cette façon, vous pouvez également faire une récupération à moment intégrale en ne rejouant pas tous les journaux.


3 commentaires

L'utilisation d'instantanés atomiques ne "pourrait pas fonctionner en théorie". Cela fonctionne parfaitement bien. Mais ils doivent être atomiques sur Tous les systèmes de fichiers PostgreSQL contient des données sur, y compris le répertoire PG_XLOG.


J'utilise habituellement pg_dump pour faire mes sauvegardes, mais je cherchais plus une solution complète utilisée pg_dump pour créer des sauvegardes pivotées, quelque chose comme Sourceforge.net/Projects/automysqlbackup . Ce serait encore mieux si le script utilisait des sauvegardes en ligne, mais je pense que cela ne devrait pas être difficile de le faire moi-même et de la mettre en place sur Launchpad ou quelque part. Merci pour votre réponse.


Pour une manière automatisée de faire des sauvegardes pg_dump avec le cryptage clé / mot de passe, la rotation et le téléchargement sur S3 Consultez la sécurité: Github .Com / Astrails / Safe



1
votes

Vous pouvez également jeter votre base de données PostgreSQL à l'aide de PHPPGADMIN ou PGADMIN III .


0 commentaires

2
votes

généralement le moyen de faire des sauvegardes est d'utiliser pg_dump.

Vous ne devriez pas "copier des fichiers du répertoire PostgreSQL, comme dans MySQL" - Parce que les chances sont que vous ne pourrez pas les utiliser (ces fichiers sont une architecture, un système d'exploitation et des options de compilation dépendantes).

Sauf si pg_dump est éprouvé à être insuffisant - c'est ce que vous devez utiliser. Une fois que vous serez en situation que pg_dump ne peut pas être utilisé - vous devriez vous demander: pourquoi il ne peut pas être utilisé et que pouvez-vous faire pour l'utiliser à nouveau :)

Lorsque vous utilisez pg_dump, vous pouvez choisir une vidette de fichier SQL uni (-f p) ou un format personnalisé (-f c). Le vidage SQL est plus facile à modifier / à modifier, mais le format personnalisé est beaucoup plus puissant et (depuis 8.4) plus rapidement, car vous pouvez le charger dans de nombreux travailleurs parallèles au lieu de séquentiellement.


0 commentaires


3
votes

Depuis que vous avez spécifié des bases de données, pg_dumpall sera beaucoup plus utile pour vous. Il décharge toutes les bases de données et les utilisateurs vers un fichier SQL au lieu d'un seul.


0 commentaires

1
votes

Je viens de tomber sur cette petite utilité soignée:

http://code.google.com/p/pg-rman/

de la documentation qu'il a l'air prometteuse, mais je dois encore l'essayer.


0 commentaires

4
votes

Ici, les scripts que vous pouvez utiliser pour la sauvegarde postgreSQL par crontab

http://ithelpblog.com/os / Linux / Debian / Best-Way-To-Backup-PostgreSQL-Base de données /

Cordialement, Kevin


0 commentaires

0
votes

C'est ce que je ferais pour sauvegarder mon ancienne base de données et restaurer

pour sauvegarder votre base de données p> xxx pré>

pour restaurer cette sauvegarde p>

pg_restore -v -d newdb_name db_dump_file.dump


0 commentaires