Я считаю утомительным делать резервные копии баз данных каждую неделю. И я также думаю, что еженедельные резервные копии должны быть превращены в ежедневные резервные копии. Если бы мне пришлось это сделать, я бы не хотел делать это вручную. Какой лучший способ автоматизировать резервное копирование баз данных PostgreSQL ежедневно?
22
Ответы:
так же, как вы делаете для любой другой повторяющейся задачи, которая может быть автоматизирована - вы пишете скрипт для резервного копирования, а затем настраиваете задачу cron для ее запуска.
например, скрипт, подобный следующему:
(Примечание: он должен запускаться от имени пользователя postgres или любого другого пользователя с такими же привилегиями)
РЕДАКТИРОВАТЬ:
pg_dumpall -D
переключатель (строка 27) устарел, теперь заменен на--column-inserts
https://wiki.postgresql.org/wiki/Deprecated_Features
источник
DBS=$($PSQL -l -t | egrep -v 'template[01]' | awk '{print $1}' | egrep -v '^\|' | egrep -v '^$')
Перезагрузить с
или
Использование
split
. Командаsplit
позволяет вам разбить вывод на части, приемлемые по размеру для базовой файловой системы. Например, чтобы сделать куски по 1 мегабайту:Перезагрузить с
Вы могли бы бросить один из тех, кто в
/etc/cron.hourly
Источник: http://www.postgresql.org/docs/8.1/interactive/backup.html#BACKUP-DUMP-ALL
источник
split -C
, чтобы строка никогда не разбивалась. Отладка неудачного восстановления проще.Какие бы команды вы ни вводили «вручную», запишите их в скрипт и поместите вызов этого скрипта в cron или любой другой планировщик, который вы используете.
Конечно, вы можете сделать сценарий более причудливым, но в целом, я думаю, вы доберетесь до него - начните с простого, а потом уточните.
Самый простой из возможных сценариев:
Сохраните его как /home/randell/bin/backup.sh и добавьте в cron:
источник
Если вы хотите сделать резервную копию всего кластера с минимальной загрузкой системы, вы можете просто заархивировать корневой каталог кластера postgresql. например:
это основная часть моего резервного скрипта.
источник
на случай, если кто-то должен будет сделать резервную копию своих postgres на машине с Windows без помощи cygwin и т. д., у меня есть пакетный файл, который делает эту работу довольно хорошо.
это будет резервировать базы данных в отдельные файлы в своем собственном каталоге каждый день
источник