когда нельзя? Нужно ли тормозить сервер или нет?
да ничего ненужно останавливать, pg_dump берет снимок на начало дампа, и все оконченные транзакции на момент снимка попадают в дамп. Всё.
а какую цель преследуете используя pg_dump? как часто его будете запускать? какой размер базы?
просто бекаплю раз в день сервисные базы, разного размера, от 200мб до десятков гигабайт. Сейчас есть технологическое окно для этого, но хочется его убрать
ну если вам/бизнесу достаточно бекапов раз в сутки, то какая разница, что к окончанию бекапа какие-то транзакции, даже если они завершились после начатия бекапа, в сам бекап не попадут? Главное в бекап войдут все консистентные данные на момент начала бекапа. И никого выгонять ненадо
из создаваемых дампов приходится делать восстановление? есть pg_probackup который можно использовать в инкрементальном режиме, но восстанавливать нужно будет весь кластер, а не выборочную базу
у pg_dump есть неприятная особенность - он вымывает кэш у ПГ и на уровне ФС, пока сделает COPY на все таблицы.
вот тут есть неудобный момент, если крякнула только одна база то восстановлением из инкремента мы снесем часть полезной информации из рабочих баз?
pg_probackup - восстановит весь кластер, а не отдельную базу. Либо восстанавливать в другое место, а оттуда делать pg_dump нужной базы
восстановить можно "рядом" и оттуда выдернуть то что нужно но если у вас нет цели досконально во всем этом разбираться, то вероятность наделать ошибок - весьма велика
более неприятной особенностью наверное можно считать потерю статистики, а буферный кеш у постгреса имеет особенность, кольцевой буфер. Кеш же ОС, скорее всего вымоется, но влияет ли кеш ОС на скажем cache_hit_ratio я не нашел инфы в документации
после выполнения pg_dump какое-то время запросы становятся медленнеее, пока база опять не прогреется
интересное наблюдение, т.е. вы мониторите или как-то замеряли скорость выполнения одних и тех-же запросов на одних и тех же данных? Интересует как со стороны мониторинга это можно увидеть
снять статистику до выполнения pg_dump, и после выполнения. Но если носители быстрые, то разогрев достаточно быстро выполняется. Больше тормозов именно во время выполнения самого pg_dump, pg_probackup в этом плане более щадящий
он обычными SQL запросами выбирает все записи из таблиц. Т.е. вычитывает всю базу в память
Сергей, не обязательно весь кластер, можно только указанную базу - это намного быстре если баз много. Но в другое место и потом или там с ней работать или дамп/ресторе
Обсуждают сегодня