J'espérais pouvoir obtenir une réponse claire sur la manière de garantir une sauvegarde Postgres complète, comme vous le feriez avec MS SQL Server, puis de prendre en charge les utilisateurs orphelins.
D'après ce que j'ai lu, et cela peut être faux, trouver un bon blog PostgreSQL a été un défi, alors n'hésitez pas à m'en recommander, je dois comprendre comment cette application fonctionne pour pouvoir faire confiance à mes sauvegardes et à Slony. réplication. Un développeur a restauré une sauvegarde de PgadminIII via custom
, directory
et le tar
format tout en sélectionnant OID
s, mais il a dit que deux d’entre eux ne se sont pas chargés, tar
mais que c’était uniquement le répertoire, pas les données. Je suis vraiment confus maintenant.
- J'utilise PGAdminIII, il a une option
pg_dump
etpg_dumpall
. Je veux sauvegarder tout ce 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 sont bonnes. Finalement, je veux écrire un script de restauration automatique, mais un jour à la fois.
pg_dumpall
a apparemment une -globals
option censée tout sauvegarder, mais l’aide pour pg_dumpall
affiche -g, --globals-only dump only global objects, no databases
une --globals
option , pas une option.
Je pensais pg_dumpall
au moins sauvegarder les clés étrangères, mais même cela semble être une "option". Selon la documentation , même si pg_dumpall
je dois utiliser une -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.
- Comment puis-je prendre en charge les utilisateurs orphelins et valider que j'ai tout? J'aimerais effectivement restaurer mon fichier de sauvegarde sur un autre serveur et vérifier que tout fonctionne. Si quelqu'un a des suggestions sur la manière de réaliser une sauvegarde réelle dans PostgreSQL et de la restaurer, je vous en serais très reconnaissant.
J'avais un serveur PostgreSQL mais je n'arrive toujours pas à comprendre pourquoi l'application ne sauvegarde pas OID
par défaut! Il semble que 99,9% du temps, vous voudriez cela.
MISE À JOUR 1:
La documentation de Postgres mentionne que l' globals
option que je cherchais semble être une option par défaut pour cette version, mais qu'elle en a toujours besoin -o
. Si quelqu'un peut vérifier ou me donner un exemple de commande pour restaurer une seule base de données ailleurs avec tout ce dont il a besoin, je l'apprécierais.
Éditer: le site demande au site de montrer le caractère unique de cette question en modifiant ma question. Cette question soulève la question et donne de la clarté sur les OID dans les sauvegardes, la différence entre globals et non globals, ainsi que sur les recommandations de restauration des tests pour garantir la qualité de la sauvegarde, par opposition à une simple sauvegarde. Grâce aux réponses que j’ai pu sauvegarder, comprendre globals / oids, et lancé un processus de restauration test toutes les nuits sur Postgres à l’aide de tâches cron. Merci pour l'aide!
la source
Réponses:
Vous pouvez vider l'intégralité du cluster PostgreSQL avec pg_dumpall. C'est toutes les bases de données et tous les globals pour un seul cluster. À partir de la ligne de commande sur le serveur, je ferais quelque chose comme ceci. (Mine écoute sur le port 5433 et non sur le port par défaut.) Vous pouvez ou non avoir besoin de l'option --clean.
Cela inclut les éléments globaux - informations sur les utilisateurs et les groupes, les espaces de table, etc.
Si je devais sauvegarder une base de données unique et la déplacer sur un serveur de travail , je viderais la base de données avec pg_dump, puis les fichiers globaux avec
pg_dumpall --globals-only
, oupg_dumpall --roles-only
(si vous avez seulement besoin de rôles)comme ça.
Les sorties ne sont que des fichiers texte.
Après avoir déplacé ces fichiers vers un autre serveur, chargez d'abord les globales, puis le vidage de la base de données.
Non, cette référence indique "Utilisez cette option si votre application fait référence aux colonnes OID d'une manière ou d'une autre (par exemple, dans une contrainte de clé étrangère). Sinon, cette option ne devrait 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 les clés étrangères". (Lisez le fichier de vidage dans votre éditeur ou votre visionneuse de fichiers.)
la source
psql -U postgres -h localhost -p 5433 sandbox < sandbox.sql
pg_dumpall
version 9.5 ne fonctionne pas correctement avec lesNULL
valeurs lors de l'utilisationCOPY
. Je reçois beaucoup d'erreurs comme celle-ci:psql:/tmp/dumpall.sql:4133559: invalid command \N psql:/tmp/dumpall.sql:4133560: invalid command \.
Lors de l'importation dans Postgres 10 avecpsql -f /tmp/dumpall.sql