Здравствуйте, wraithik, Вы писали:
W>Подскажите, есть способ делать бекапы баз остановки работы пользовтелей.
А как ты это представляешь.
Вот ты начинаешь копировать данные в момент Х, а за это время пользователи вносят изменения в объеме dX.
Должен ли этот dX попасть в бекап?
1) если нет, и вам нужна консистентность на момент X, то придется заблокировать всех (делает pg_dump)
2) если да, то надо записать состояние X, заблокировав dX, а потом дозаписать dX, блокируя изменения в (X/dX). (так делает pg_basebackup)
W>pd_dump падает на блокировках.
С какой ошибкой то?
W>Нужен способ копировать базу данных в середине рабочего дня.
Репликация же и\или pg_basebackup
насколько я понимаю вы, как и большинство, пришли в постгрес с MSSQL. К сожалению, области администрирования он работает категорически не так, как MSSQL. Все ваши привычки и ментальные модели скорее всего ошибочны.
1) В MSSQL единица администрирования — база данных. Есть даже self-contained базы, которые содержат все настройки, в том числе безопасности. В Postgres — единица администрирования — сервер. Все настройки безопасности, отказоустойчивости, быстродействия выполняются на уровне сервера в PG.
2) WAL в MS SQL свой для каждой базы, в PG один для сервера. Поэтому и бекап удобный и полноценный в PG есть только на уровне сервера (pg_basebackup)
3) Контролей целостности данных в PG примерно на порядок меньше, чем в MS SQL, поэтому для каждого продуктивного сервера PG нужна реплика. Иначе вы рано иди поздно данные потеряете.
Итого: в проде PG у вас будет мастер и реплика. Если вы снимаете pg_dump с реплики, то реплкика временно останавливает накатку логов, но мастер при этом не блокируется.