Автоматическое резервное копирование postgres

20

Каков наилучший способ автоматического резервного копирования базы данных Postgres в Linux каждый день?

Liam
источник

Ответы:

11

Вы можете использовать pg_dumpкак это:

$ pg_dump -h db_host -U user_name db_name > dump_file.sql

Пожалуйста, подумайте сначала, чтобы установить .pgpassфайл, который содержит пароли, которые будут использоваться, если соединение требует пароль. Этот файл должен иметь строки следующего формата:

hostname:port:database:username:password

И каждое из первых четырех полей может быть буквальным значением или *, которое соответствует чему угодно. Например: *:*:*:postgres:pg_password.

Этот .pgpassфайл должен находиться в домашнем каталоге ~ /, а разрешения на него должны запрещать любой доступ к миру или группе; добиться этого по команде chmod 0600 ~/.pgpass.

Али Мезгани
источник
резервное копирование автоматически каждый день ??
Ануй Патель
@indyaah: нет, вам придется запускать это ежедневно из cron (или аналогичного).
Билл Вайс
12

Запустите pg_dumpall из cron.

Билл Вайс
источник
7
pg_dumpall лучше других ответов, потому что это создает резервные копии ваших глобальных объектов базы данных. (Например: пользователи и т. Д.). Они понадобятся вам для полного восстановления вашей БД, и если у вас их много, их воссоздание может быть нетривиальным. Тем не менее, pg_dumpall может быть излишним для вас, если вы просто хотите сделать резервную копию одного экземпляра базы данных в кластере нескольких баз данных, потому что pg_dumpall будет резервировать каждый экземпляр. Так что ... как и в большинстве технических вопросов и ответов, это зависит.
KevinRae
1
Я склонен объединять «базу данных» и «сервер базы данных», и это хороший пример. Я предполагал, что постер захочет подтвердить все это Хорошая мысль.
Билл Вайс
6

Попробуйте AutoPostgreSQLBackup . Это отдельный файл сценария, который можно легко настроить в соответствии с вашими потребностями, выполнять ежедневное, еженедельное и ежемесячное планирование, журналы по электронной почте, файл журнала или стандартный вывод и т. Д.


источник
Я также использую AutoPostgreSQLBackup, и он работает очень хорошо для меня ;-)
Матье
4

Если это достаточно небольшая база данных и такие низкие требования к резервному копированию, как раз в день, просто запустите pg_dump из cron, чтобы создать дамп в локальный файл, а затем используйте все, что вам нужно, для резервного копирования файлов на машине, чтобы архивировать дамп. ,

Магнус Хагандер
источник
4

pg_rman - это новый инструмент, предлагающий инкрементные резервные копии, который работает для PostgreSQL 8.4 или новее.

Адам Матан
источник
2

Попробуйте astrails-safe . Он знает, как сделать резервную копию mysql (mysqldump), postgres (pg_dump) или просто простых файлов (tar) с шифрованием (gnupg) и загрузить их в S3 / Sftp.

Виталий Кушнер
источник
1

pg_dump - хорошее решение, но если вы пытаетесь сделать резервную копию большого количества данных, возможно, это может помочь:

http://www.postgresql.org/docs/8.1/static/backup-online.html

который на самом деле является своего рода «необработанным» журналированием, но это может быть полезно в качестве метода инкрементного резервного копирования ...

Хавьер Новоа С.
источник
1

Это скрипт, который будет резервировать каждую базу данных в отдельности, а также часто забываемые, но важные GLOBALS PostgreSQL и информацию для входа пользователя.

Важность этого состоит в том, чтобы воспользоваться преимуществами сжатия, которое pg_dumpall не предоставляет, и забытых данных, которые pg_dump игнорирует.

Для этого потребуется настройка pgpass или аналогичная, как описано здесь http://wiki.postgresql.org/wiki/Pgpass

Это настройка для OSX, но просто измените пути программы, и она будет работать нормально.

Резервное копирование в / sqlbackups Сценарий вернет размер каталога / каталог и имеет точки останова, которые в случае сбоя вернут ненулевой статус. Я использовал его в сочетании с pgAgent для ежедневного резервного копирования.

Сценарий отредактирован, извините за это :(

Silverfire
источник
1

Зачем соглашаться на ежедневное резервное копирование, если вы можете легко восстановить данные на определенный момент времени с барменом ?

Джованни Торальдо
источник
Я позволю модераторам принять решение, но я считаю, что воскрешать 5-летние вопросы по подключению коммерческих продуктов - плохая форма.
gparent
это открытый исходный код: sourceforge.net/projects/pgbarman/files
Джованни Торальдо,
Ты прав, я погуглил не то. Моя главная забота была не в том, чтобы, во всяком случае, предлагать ответ, который на самом деле не тот, который пользователь задал 5 лет спустя. Тем не менее, после прочтения других ответов, они также предлагают аналогичные решения для резервного копирования, так что я думаю, что это не так уж плохо. Мой флаг, вероятно, будет отклонен, и мы назовем его днем: D
gparent
0

Как уже говорили другие: pg_dumpall.

Также обратите внимание на доставку журналов. Затем вы можете получить больше резервных копий на определенный момент времени, которые вы можете воспроизвести: http://www.postgresql.org/docs/8.3/static/runtime-config-wal.html

Или как насчет раздела о резервных копиях в руководстве:

http://www.postgresql.org/docs/8.3/static/backup.html

Томас
источник