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


20

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

Ответы:


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 для ежедневного резервного копирования.

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


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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.