J'espérais pouvoir obtenir une réponse claire sur la façon de garantir une sauvegarde Postgres complète comme vous le feriez avec MS SQL Server, puis de prendre soin des utilisateurs orphelins.
D'après ce que j'ai lu, et cela pourrait être faux, trouver un bon blog PostgreSQL a été difficile, alors n'hésitez pas à m'en recommander, j'ai besoin de comprendre comment cette application fonctionne pour que je puisse avoir confiance en mes sauvegardes et Slony réplication. Un développeur a restauré une sauvegarde que j'ai prise de PgadminIII via le format custom
, directory
et tar
tout en sélectionnant OID
s mais il a dit que deux d'entre eux ne l'ont pas fait '' t load, tar
l'a fait mais ce n'était que le répertoire, pas les données. Je suis vraiment confus maintenant.
pg_dump
et pg_dumpall
option. Je veux sauvegarder tout dont j'ai besoin pour tester restaurer cette base de données quelque part et vérifier que oui, toutes les données dont nous avons besoin et notre sauvegarde est bonne. Finalement, je veux écrire un script de restauration automatique, mais un jour à la fois.pg_dumpall
a apparemment un -globals
option censée tout sauvegarder, mais l'aide pour pg_dumpall
montre un -g, --globals-only dump only global objects, no databases
, pas un --globals
option.
J'ai pensé pg_dumpall
sauvegarderait au moins les clés étrangères, mais même cela semble être une "option". Selon la documentation , même avec pg_dumpall
Je dois utiliser un -o
option pour sauvegarder les clés étrangères, je ne peux pas vraiment imaginer quand je ne voudrais pas sauvegarder les clés étrangères et cela aurait plus de sens comme options par défaut.
J'avais un serveur PostgreSQL mais je n'arrive toujours pas à comprendre pourquoi l'application ne sauvegarderait pas OID
s par défaut! Il semble que 99,9% du temps vous le voudriez.
MISE À JOUR 1:
Postgres documentation mentionne que l'option globals
que je cherchais semble être une option par défaut sur cette version, mais elle a toujours besoin de -o
option. Si quelqu'un peut vérifier ou me donner un exemple de commande pour restaurer une base de données unique ailleurs avec tout ce dont il a besoin, je l'apprécierais.
Edit: être invité par le site à montrer le caractère unique de cette question en modifiant ma question. Cette question soulève le problème et clarifie les OID dans les sauvegardes, la différence entre les globaux et les non globaux, ainsi que les tests de restauration des recommandations pour s'assurer que la sauvegarde est bonne plutôt que de simplement sauvegarder. En raison des réponses, j'ai pu sauvegarder, comprendre les globaux/oids et commencé un test de restauration tous les soirs sur Postgres à l'aide de tâches cron. Merci pour l'aide!
Vous pouvez vider l'intégralité du cluster PostgreSQL avec pg_dumpall. C'est toutes les bases de données et tous les globaux pour un seul cluster. À partir de la ligne de commande sur le serveur, je ferais quelque chose comme ça. (Le mien écoute sur le port 5433, pas sur le port par défaut.) Vous pouvez ou non avoir besoin de l'option --clean.
$ pg_dumpall -U postgres -h localhost -p 5433 --clean --file=dump.sql
Cela inclut les informations globales - informations sur les utilisateurs et les groupes, les espaces disque logiques, etc.
Si je devais sauvegarder une seule base de données et la déplacer vers un serveur de travail , je viderais la base de données avec pg_dump, et viderais les globales avec
pg_dumpall --globals-only
, Oupg_dumpall --roles-only
(Si vous n'avez besoin que de rôles)comme ça.
$ pg_dump -U postgres -h localhost -p 5433 --clean --file=sandbox.sql sandbox
$ pg_dumpall -U postgres -h localhost -p 5433 --clean --globals-only --file=globals.sql
Les sorties ne sont que des fichiers texte.
Après avoir déplacé ces fichiers vers un autre serveur, chargez d'abord les globaux, puis le vidage de la base de données.
$ psql -U postgres -h localhost -p 5433 < globals.sql
$ psql -U postgres -h localhost -p 5433 < sandbox.sql
Je pensais que pg_dumpall sauvegarderait au moins les clés étrangères, mais même cela semble être une "option". Selon: http://www.postgresql.org/docs/9.1/static/app-pg-dumpall.html même avec pg_dumpall, je dois utiliser une option -o pour sauvegarder les clés étrangères
Non, cette référence indique "Utilisez cette option si votre application référence les colonnes OID d'une manière ou d'une autre (par exemple, dans une contrainte de clé étrangère) . Sinon, cette option ne doit pas être utilisée. " (Je souligne.) Je pense qu'il est peu probable que votre application fasse référence aux colonnes OID. Vous n'avez pas besoin d'utiliser cette option pour "sauvegarder des clés étrangères". (Lisez le fichier de vidage dans votre éditeur ou visualiseur de fichiers.)