Sauvegarde automatique des postgres

20

Quelle est la meilleure façon de sauvegarder automatiquement une base de données Postgres sous Linux tous les jours?

Liam
la source

Réponses:

11

Vous pouvez utiliser pg_dumpcomme ceci:

$ pg_dump -h db_host -U user_name db_name > dump_file.sql

Pensez d'abord à définir le .pgpassfichier contenant les mots de passe à utiliser si la connexion nécessite un mot de passe. Ce fichier doit avoir des lignes du format suivant:

hostname:port:database:username:password

Et chacun des quatre premiers champs peut être une valeur littérale, ou *, qui correspond à n'importe quoi. Par exemple: *:*:*:postgres:pg_password.

Ce .pgpassfichier doit résider dans le répertoire personnel ~ / et les autorisations qu'il contient doivent interdire tout accès au monde ou au groupe; réaliser cela par la commande chmod 0600 ~/.pgpass.

Ali Mezgani
la source
sauvegarde-t-il automatiquement tous les jours ??
Anuj Patel
@indyaah: non, vous devrez l'exécuter quotidiennement depuis cron (ou similaire).
Bill Weiss
12

Exécutez pg_dumpall à partir de cron.

Bill Weiss
la source
7
pg_dumpall est meilleur que les autres réponses car cela sauvegarde vos objets de base de données globaux. (Ex: utilisateurs, etc.) Vous en aurez besoin pour récupérer complètement votre base de données et si vous en avez un grand nombre, il peut être non trivial de les recréer. Cependant, pg_dumpall peut être excessif pour vous si vous souhaitez simplement sauvegarder une seule instance de base de données dans un cluster de bases de données multiples car pg_dumpall sauvegardera chaque instance. Donc ... comme avec la plupart des questions et réponses techniques, cela dépend.
KevinRae
1
J'ai tendance à confondre "base de données" et "serveur de base de données", ceci étant un bon exemple. J'ai supposé que l'affiche voudrait sauvegarder le tout. Bon point.
Bill Weiss
6

Essayez AutoPostgreSQLBackup . Il s'agit d'un fichier de script unique, peut être facilement configuré selon vos besoins, effectue une planification quotidienne, hebdomadaire et mensuelle, enregistre par e-mail, fichier journal ou stdout, etc.


la source
J'utilise également AutoPostgreSQLBackup et cela fonctionne très bien pour moi ;-)
Matthieu
4

S'il s'agit d'une base de données raisonnablement petite et que les exigences de sauvegarde sont aussi faibles qu'une seule fois par jour, exécutez simplement pg_dump de cron pour vider dans un fichier local, puis utilisez tout ce que vous avez pour sauvegarder les fichiers sur la machine pour archiver le vidage. .

Magnus Hagander
la source
4

pg_rman est un nouvel outil, offrant des sauvegardes incrémentielles, qui fonctionne pour PostgreSQL 8.4 ou plus récent.

Adam Matan
la source
2

Essayez sans danger pour les astrails . Il sait comment sauvegarder mysql (mysqldump), postgres (pg_dump), ou simplement des fichiers simples (tar) avec cryptage (gnupg) et télécharger vers S3 / Sftp.

Vitaly Kushner
la source
1

pg_dump est une bonne solution, mais si vous essayez de sauvegarder beaucoup de données, cela peut peut-être vous aider:

http://www.postgresql.org/docs/8.1/static/backup-online.html

qui est en fait une sorte de journalisation `` brute '', mais qui peut être utile comme méthode de sauvegarde incrémentielle ...

Javier Novoa C.
la source
1

Il s'agit d'un script qui sauvegardera chaque base de données individuellement ainsi que les informations GLOBALES PostgreSQL et les informations de connexion utilisateur souvent oubliées mais importantes.

L'importance de ceci est de profiter de la compression que pg_dumpall ne fournit pas et des données oubliées que pg_dump ignore.

Cela nécessitera un pgpass ou une configuration similaire comme décrit ici http://wiki.postgresql.org/wiki/Pgpass

Ceci est configuré pour OSX, mais changez simplement les chemins du programme et cela fonctionnera bien.

Sauvegarde dans / sqlbackups Le script renverra la taille du répertoire / directory et possède des points d'arrêt qui renverront un état non nul en cas d'échec. Je l'ai utilisé en combinaison avec pgAgent pour faire des sauvegardes quotidiennes.

Script expurgé, désolé :(

Silverfire
la source
1

Pourquoi s'installer avec une sauvegarde quotidienne alors que vous pouvez facilement avoir une récupération ponctuelle avec barman ?

Giovanni Toraldo
la source
Je laisserai les modérateurs décider, mais je pense que ressusciter des questions vieilles de 5 ans pour brancher des produits commerciaux est une mauvaise forme ici.
gparent
ehm, c'est open source: sourceforge.net/projects/pgbarman/files
Giovanni Toraldo
Vous avez raison, j'ai googlé la mauvaise chose. Ma principale préoccupation n'était pas que, de toute façon, il s'agissait de suggérer une réponse qui n'est pas vraiment ce que l'utilisateur a demandé 5 ans après. Cependant, après avoir lu les autres réponses, elles semblent également suggérer des solutions de sauvegarde similaires, donc je suppose que ce n'est pas si mal. Mon drapeau sera probablement refusé et nous l'appellerons un jour: D
gparent