Je trouve fastidieux d'avoir à sauvegarder des bases de données chaque semaine. Et je pense aussi que les sauvegardes hebdomadaires devraient être transformées en sauvegardes quotidiennes. Si je devais le faire, je ne veux pas le faire manuellement. Quelle est la meilleure façon d'automatiser quotidiennement la sauvegarde des bases de données PostgreSQL?
22
Réponses:
de la même manière que pour toute autre tâche répétitive pouvant être automatisée - vous écrivez un script pour effectuer la sauvegarde, puis configurez un travail cron pour l'exécuter.
un script comme le suivant, par exemple:
(Remarque: il doit être exécuté en tant qu'utilisateur postgres, ou tout autre utilisateur avec les mêmes privilèges)
EDIT:
pg_dumpall -D
switch (ligne 27) est obsolète, maintenant remplacé par--column-inserts
https://wiki.postgresql.org/wiki/Deprecated_Features
la source
DBS=$($PSQL -l -t | egrep -v 'template[01]' | awk '{print $1}' | egrep -v '^\|' | egrep -v '^$')
Recharger avec
ou
Utilisez
split
. Lasplit
commande vous permet de diviser la sortie en morceaux dont la taille est acceptable pour le système de fichiers sous-jacent. Par exemple, pour faire des morceaux de 1 mégaoctet:Recharger avec
Vous pourriez jeter l'un de ceux
/etc/cron.hourly
Provenant de http://www.postgresql.org/docs/8.1/interactive/backup.html#BACKUP-DUMP-ALL
la source
split -C
, afin qu'une ligne ne soit jamais divisée. Le débogage d'une restauration ayant échoué est plus facile.Quelles que soient les commandes que vous émettez "à la main", - écrivez-les dans le script et appelez ce script dans cron ou dans le planificateur que vous utilisez.
Vous pouvez bien sûr rendre le script plus sophistiqué, mais en général, je pense que vous y arriverez - commencez simplement et affinez plus tard.
Script le plus simple possible:
Enregistrez-le sous /home/randell/bin/backup.sh, ajoutez-le à cron:
la source
Si vous souhaitez sauvegarder un cluster entier avec une charge système minimale, vous pouvez simplement tarer le répertoire racine du cluster postgresql. par exemple:
c'est l'essentiel de mon script de sauvegarde.
la source
au cas où quelqu'un devrait sauvegarder leurs postgres sur une machine Windows sans l'aide de cygwin, etc. J'ai un fichier batch qui fait très bien le travail.
cela sauvegardera les bases de données dans des fichiers individuels dans son propre répertoire tous les jours
la source