So verbessern Sie das PostgreSQL-Datenbanksicherungsskript - es wird mit crontab verwendet

462
zer0mode

Es gibt ungefähr 15 Datenbanken, die täglich gesichert werden. Für den Postgres- Benutzer ist ein Kennwort festgelegt .

pg_dumpallwird am Anfang des Skripts für eine vollständige Sicherung ausgeführt. pg_dumpwird im selben Skript für bestimmte Datenbanken in einer for-Schleife ausgeführt .

Da das Skript wiederholt mit der crontab verwendet wird, sollte während der Ausführung dieser Befehle eine Passphrase als zusätzlicher Parameter übergeben werden.

Aktuelle Lösung verwendet ( * ) mit 0600, im Besitz von postgres ..pgpasschmod

Wo ein Passwort erforderlich ist, besteht jeder Befehl aus:

PGPASSFILE=/path/to/.pgpass <command> <arguments pipes> 

Zum Beispiel :
PGPASSFILE=/path/to/.pgpass psql -tl | cut -d '|' -f1 | grep 'dbwildcard'

Das gleiche PGPASSFILE String wird an dem Präfix pg_dumpund pg_dumpallBefehle.

  • Kann das besser, schlanker, kürzer gemacht werden?
    Das Übergeben von PGPASSFILE=/path/to/.pgpassZeichenfolgen in einer Variablen unterbricht den Befehl.
  • Was ist mit der Sicherheit? Ist .pgpassbesser oder schlechter aus der pg_hba.confDateieinstellung:

    lokal alle postgres vertrauen

    Es gibt immer eine bessere Option.

  • Als letztes scheint Vacuumdb nicht mit PGPASSFILE zu funktionieren. Wie umgehen Sie das Passwort-Argument in diesem Fall?

(*) https://www.postgresql.org/docs/current/static/libpq-pgpass.html
https://www.postgresql.org/docs/current/static/app-pg-dumpall.html

0

0 Antworten auf die Frage