@Dannerty

Резервное копирование Postgresql, можно ли настроить?

Здравствуйте. Подскажите, возможно ли настроить резервное копирование в Postgresql раздельно?
Имеется база данных, в ней есть несколько таблиц, которые представляют собой логи\статистику. Необходимо настроить раздельное резервное копирование для основной базы и для этих таблиц. Было бы все просто, если бы данные в таблицах были фиксированы, но некоторые поля в этих таблицах изменяются. Поэтому надо каким-то образом еще учитывать произведенные изменения.
В идеале хотелось настроить схему копирования следующим образом:
В какой-то определенный день делать полную резервную копию базы и статистики, а во все остальные дни\часы делать копию основной базы без статистики + (новые записи и произведенные изменения в таблицах статистики).
Подскажите, реально ли в Postgresql сделать подобное?

UPD. Предположим в понедельник у меня делается полный бэкап все базы и статистики. В таблице статистики, скажем, 20 миллионов записей.
Следующий бэкап происходит через 3 часа. За эти 3 часа в таблицу статистики прилетело 50 тысяч записей и было изменено еще 5 тысяч. Бэкап должен включать в себя саму базу без статистики (это понятно как сделать) и вот только эти 50 тысяч новых записей и информацию об изменении этих 5 тысяч, а саму таблицу полностью не копировать.
Чтобы в случае чего, была возможность восстановить сначала саму базу, потом восстановить полный бэкап статистики, созданный в тот же понедельник, а потом подтянуть только новые записи и внести изменения в таблицы статистики, которые произошли после создания бэкапа в понедельник.
  • Вопрос задан
  • 160 просмотров
Пригласить эксперта
Ответы на вопрос 3
sergey-gornostaev
@sergey-gornostaev Куратор тега PostgreSQL
Седой и строгий
Да, возможно. Посмотрите на параметры -t и -T
Ответ написан
ky0
@ky0
Миллиардер, филантроп, патологический лгун
Посмотрите в сторону PITR - это по-моему как раз то, что вам нужно, то есть возможность откатывать (точнее, наоборот, докатывать) базу на конкретный момент времени. Делается полный бэкап, а все изменения, происходящие после него, складываются в WAL-файлы.
Ответ написан
Комментировать
@Dannerty Автор вопроса
В общем решил сделать такой вариант:
Создать дополнительные таблицы для сбора изменений в таблицах статистики. На таблицы статистики повесить триггеры на insert\update, которые будут вставлять\изменять записи в дополнительных таблицах. А затем из этих доп. таблиц будут данные переноситься куда нужно через insert on conflict.
Вроде все в теории выглядит работоспособным.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы