Советую к прочтению данную статью, так как вышел новый Veeam и там уже есть нормальный бэкап.

С помощью veeam вы можете делать бэкап баз данных PostgreSql, хотя оговорюсь сразу что это не совсем тот бэкап, который хотят видеть многие. Не буду сразу говорить о чём речь так как после прочтения всей статьи будет более понятна мысль, которую я хочу донести.

Так вот для того чтобы делать бэкап PostgreSql нужно будет установить на сервере с PostgreSql - Veeam Agent for Linux. Об этом у меня есть отдельная статья.

Добавляем задачу в Veeam Backup and Replication

После того как вы установили Veeam Agent for Linux можно приступать к созданию задачи. Для этого:

  1. Переходим в Jobs > Backup и добавляем новую задачу enter image description here
  2. Добавляем сервер с PostgreSql enter image description here
  3. Ставим галочку напротив Enable application-aware processing и настраиваем бэкап PostgreSql, а именно добавляем пользователя для подключения к PostgreSql. enter image description here
  4. Дальше выставляем время запуска и завершаем мастер создания задачи

Восстановление

UPDATE: В этом году планируется выпуск новой версии Veeam Backup and Replication, а именно v12 где собственно поработали как раз над бэкапом PostgreSQL. В итоге в новой версии уже не нужен будет никакой Veeam Agent и появиться Veeam Explorer for PostgreSQL, благодаря которому можно будет восстановить полностью инстанс или отдельную БД. Как только появится возможность проверить я это использую и обновлю статью.

И вот мы дошли до восстановления, которое обычно никто не проверяет, главное, что бэкап есть. Так вот как привык восстанавливать обычный администратор бд ему всегда нужна возможность восстановить отдельные бд или даже отдельные таблицы. Часто еще восстановить нужно уже на имеющемся кластере PostgreSql.

Так вот в Veeam так сделать не получиться, суть в том, что хоть Veeam и создаёт checkpoint в PostgreSql при бэкапе он всё еще использует систему snapshot, т.е. он просто также бэкапит всю виртуальную машину, а точнее диски. И в таком случае для восстановления вам придётся либо восстановить полностью виртуальную машину, либо только тот диск, на котором у вас была бд, при этом если там их куча, то восстановятся тоже все, а не только одна нужная. Считаю, что это очень большой недостаток.

Восстановление в целом ничем не отличается от того же восстановления виртуальной машины и описывать всё в подробностях я не вижу особого смысла.

Вариант на просторах интернета

Изучая тему, я нашел решение, в котором человек делал бэкап используя Scripts. Т.е. перед началом бэкапа он выполнял скрипт, который делал бэкап используя встроенную утилиту в PostgreSql и потом уже делал бэкап дисков. Весь механизм описан в этой статье и использовал он pg_dumpall, хотя в сети много тем о том, что dump это не бэкап.

По моему мнению такая схема имеет место быть если вы хотите делать бэкап всего через Veeam и не хотите ломать голову над другими решениями. Но я бы немного исправил его подход, а именно:

  1. Использовал бы другую утилиту для бэкапа, например, pgbackrest
  2. С помощью veeam делал бы бэкап только диска куда делал бэкап с помощью утилиты pgbackrest
  3. Каким-то образом удалял бэкап с хоста после проверки

Чем хорош такой подход

Немного размышлений на тему почему может быть выгоден такой подход:

  1. Вы всё также можете делать выборочный бэкап
  2. Вы можете вести статистику бэкапов (провален или выполнен), но это если у вас нет никакого мониторинга
  3. У вас все бэкапы в одном месте