LINUX.ORG.RU
ФорумAdmin

PostgreSQL backup: что делать с pg_xlogs'ами?


0

1

Пока процедура бэкапа в моей голове представляется примерно так:
Полный бэкап:

  1. SELECT pg_start_backup('label', true);
  2. Делаем копию нужного PG_DATA, исключая содержимое pg_xlog
  3. SELECT pg_stop_backup();

Инкрементальный бэкап:

  1. Настраиваем archive_mode = on, archive_command = копировать подлежащий удалению при ротации pg_xlog в каталог $BACKUP_DIR/wals
  2. ???? PROFIT ????

В моём скрипте содержимое wals копируется ещё в другое место rsync'ом, но... какой в этом смысл - тоже непонятно.

Главная загвоздка вот в чём: если wals'ы будут просто тупо накапливаться, то восстановление из бэкапа будет неоправданно затрудняться тем, что нужно будет скопировать в PG_DATA, развёрнутый из полного бэкапа, кучу ненужного хлама.

Скажите, если я в archive_command пропишу скрипт, который определит $TIMESTAMP последнего полного бэкапа и будет копировать подлежащие ротации pg_xlog в $BACKUP_DIR/wals/$TIMESTAMP - то достаточно ли будет содержимого соотв. подкаталога для восстановления? Предыдущие pg_xlog'и не будут ведь нужны, верно?

★★★★★
Ответ на: комментарий от ventilator

А где этот pg_archivecleanup искать-то?

$ ls /opt/PostgreSQL/current/bin/
clusterdb   dropuser        pg_ctl          pgsql2shp     shp2pgsql
createdb    ecpg            pg_dump         postgres      vacuumdb
createlang  initdb          pg_dumpall      postmaster
createuser  pg_basebackup   pg_receivexlog  psql
dropdb      pg_config       pg_resetxlog    raster2pgsql
droplang    pg_controldata  pg_restore      reindexdb

DRVTiny ★★★★★
() автор топика
Ответ на: комментарий от ventilator

Может, вот это имелось в виду?

$ TS=$(date +%Y%m%d_%H%M%S); mkdir ~/backup/base/9.2/$TS; pg_basebackup -D  ~/backup/base/9.2/$TS -P -v --xlog-method stream -l $TS
Весьма красиво выводит статус бэкапа :) Понять бы только, что он делает и как это можно использовать.

DRVTiny ★★★★★
() автор топика
Ответ на: комментарий от DRVTiny

pg_archivecleanup если это центос инсталляция c yum.postgresql.org находится в /usr/pgsql-9.1/bin/pg_archivecleanup

если это дебиан - /usr/lib/postgresql/9.1/bin/pg_archivecleanup

а если вы собирали сами - то тут уж сами ищите. Эта тулза появилась с 9.0 версии.

http://www.postgresql.org/docs/9.2/static/pgarchivecleanup.html - тут описано как работает. Идеально подходит если вы делаете файловый бекап используя pg_start_backup().

ventilator ★★★
()
Ответ на: комментарий от ventilator

Несколько раз перечитал, но так и не понял из документации, что полезного и зачем делает этот cleanup.

DRVTiny ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.