Re: Бекапы PostresSQL 15 без блокировок работы
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 28.10.24 10:03
Оценка: 6 (1) +1 -1
Здравствуйте, 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 с реплики, то реплкика временно останавливает накатку логов, но мастер при этом не блокируется.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.