Uważam, że tworzenie kopii zapasowych baz danych co tydzień jest uciążliwe. Myślę też, że cotygodniowe kopie zapasowe powinny zostać przekształcone w codzienne kopie zapasowe. Gdybym musiał to zrobić, nie chcę tego robić ręcznie. Jaki jest najlepszy sposób automatyzacji codziennego tworzenia kopii zapasowych baz danych PostgreSQL?
22
Odpowiedzi:
tak samo jak w przypadku każdego innego powtarzalnego zadania, które można zautomatyzować - piszesz skrypt do wykonania kopii zapasowej, a następnie konfigurujesz zadanie crona, aby je uruchomić.
skrypt taki jak na przykład:
(Uwaga: musi być uruchamiany jako użytkownik postgres lub jakikolwiek inny użytkownik z tymi samymi uprawnieniami)
EDYCJA:
pg_dumpall -D
przełącznik (wiersz 27) jest przestarzały, teraz zastąpiony przez--column-inserts
https://wiki.postgresql.org/wiki/Deprecated_Features
źródło
DBS=$($PSQL -l -t | egrep -v 'template[01]' | awk '{print $1}' | egrep -v '^\|' | egrep -v '^$')
Załaduj ponownie za pomocą
lub
Zastosowanie
split
.split
Komenda pozwala podzielić wyjście na kawałki, które są dopuszczalne w rozmiarze do bazowego systemu plików. Na przykład, aby utworzyć fragmenty o wielkości 1 megabajta:Załaduj ponownie za pomocą
Możesz wrzucić jednego z nich
/etc/cron.hourly
Źródło: http://www.postgresql.org/docs/8.1/interactive/backup.html#BACKUP-DUMP-ALL
źródło
split -C
, aby linia nigdy nie była dzielona. Debugowanie nieudanego przywracania jest łatwiejsze.Bez względu na to, jakie polecenia wydajesz „ręcznie”, - zapisz je w skrypcie i wywołaj ten skrypt w cronie lub dowolnym używanym harmonogramie.
Możesz oczywiście uczynić skrypt bardziej fantazyjnym, ale ogólnie myślę, że tam dotrzesz - zacznij od prostych, a później dopracuj.
Najprostszy możliwy skrypt:
Zapisz go jako /home/randell/bin/backup.sh, dodaj do crona:
źródło
Jeśli chcesz wykonać kopię zapasową całego klastra przy minimalnym obciążeniu systemu, możesz po prostu spakować katalog główny klastra postgresql. na przykład:
to większość mojego skryptu zapasowego.
źródło
na wypadek, gdyby ktoś musiał wykonać kopię zapasową swoich postgresów na komputerze z systemem Windows bez pomocy cygwina itp. Mam plik wsadowy, który całkiem dobrze sobie z tym radzi.
spowoduje to tworzenie kopii zapasowych baz danych do poszczególnych plików we własnym katalogu każdego dnia
źródło