Пока процедура бэкапа в моей голове представляется примерно так:
Полный бэкап:
- SELECT pg_start_backup('label', true);
- Делаем копию нужного PG_DATA, исключая содержимое pg_xlog
- SELECT pg_stop_backup();
Инкрементальный бэкап:
- Настраиваем archive_mode = on, archive_command = копировать подлежащий удалению при ротации pg_xlog в каталог $BACKUP_DIR/wals
- ???? PROFIT ????
В моём скрипте содержимое wals копируется ещё в другое место rsync'ом, но... какой в этом смысл - тоже непонятно.
Главная загвоздка вот в чём: если wals'ы будут просто тупо накапливаться, то восстановление из бэкапа будет неоправданно затрудняться тем, что нужно будет скопировать в PG_DATA, развёрнутый из полного бэкапа, кучу ненужного хлама.
Скажите, если я в archive_command пропишу скрипт, который определит $TIMESTAMP последнего полного бэкапа и будет копировать подлежащие ротации pg_xlog в $BACKUP_DIR/wals/$TIMESTAMP - то достаточно ли будет содержимого соотв. подкаталога для восстановления? Предыдущие pg_xlog'и не будут ведь нужны, верно?