LINUX.ORG.RU

Вопрос к специалистам по PostgreSQL

 ,


1

2

Добрый день.

Вот я сижу, изобретаю велосипеды , а хочется в итоге простого, чтобы WAL создавался для каждой базы в отдельности.

Неужели такого нет ни через плагин какой, ни дописать до сих пор никто не смог? Почему нельзя как у MS SQL?

Нет, посгрес мне очень нравится, но вот этот момент раздражает.

Спасибо.



Последнее исправление: Shulman (всего исправлений: 3)

Присоединяюсь к вопросу

anonymous
()

У одного инстанса один wal. Нужно несколько wal - запускай несколько инстансов.

iliyap ★★★★★
()

Какую задачу решаем, что надо писать wal для каждой базы отдельно? У postgresql другая идеология, там один инстанс - минимальная единица, и уже из инстансов собирается кластер.

ma1uta ★★★
()
Ответ на: комментарий от ma1uta

у меня в кластере 100 баз, и все они бухгалтерские, разных организаций, вал я конечно собираю, но это скорее на случай развала рейда, внезапного, то есть просто на всякий случай.

А мне иногда нужно просто откатить одну базу из кластера, для этого я лью каждую базу в дамп каждые 2 часа

Shulman
() автор топика
Ответ на: комментарий от ma1uta

cluster это набор баз данных, в терминологии постгреса, расскажите что вы имеете в виду, уж очень наболело

Shulman
() автор топика
Ответ на: комментарий от Shulman

а хочется в итоге простого, чтобы WAL создавался для каждой базы в отдельности.

но ты ведь его хочешь?

darkenshvein ★★★★★
()
Ответ на: комментарий от Shulman

а в чем оверхед на твой взгляд? Как я понял из твоего кейса, базы маленькие и без нагрузки особой? Снимай бекап через walg, а при необходимости делай time to point recovery и бери оттуда уже то, что тебе надо было. walg удивишься как быстро тебе это сделает, а то про какие-то 2 часа и дамп пишешь, непонятно..

v9lij ★★★★★
()
Ответ на: комментарий от Shulman

Попробуй pgbackrest он позволяет восстанавливать как кластер целиком так и отдельно конкретную БД в нем, кластер на время восстановления останавливается (два года назад такое условие было, возможно что-то поменялось)

Pechorin
()
Последнее исправление: Pechorin (всего исправлений: 1)
Ответ на: комментарий от byko3y

ну во первых если развернуть 100 инстансев, это сколько в них воркеров будет? если у меня сейчас 10 ядер и десять воркеров?

Потом как это админить? 100 портов нужно знать и помнить.

Потом, шаредмемори сколько выделять?

И так далее…

Или именно это и нужно сделать?

Shulman
() автор топика
Ответ на: комментарий от Shulman

ну во первых если развернуть 100 инстансев, это сколько в них воркеров будет? если у меня сейчас 10 ядер и десять воркеров?

Если несколько баз постоянно заняты работой, то можно и меньше десяти. Ну а так — да, по количеству ядер в системе.

Потом как это админить? 100 портов нужно знать и помнить

Ну типа это твоё дело. Ты ж одмин.

Потом, шаредмемори сколько выделять?

Старые доки приводили примерные цифры:

https://www.postgresql.org/docs/9.2/kernel-resources.html
«Connections (1800 + 270 * max_locks_per_transaction) * max_connections»

Но это такие себе расчеты, потому что большую часть разделяемой памяти использует буфер, а буфер должен быть такой, чтобы в него влазили индекса и данные из твоей транзакции — иначе база будет «свопаться». Потому эта цифра может составлять от единиц мегабайт до единиц гигабайт в зависимиости от размеров базы. Конечно, можно сделать предел размера разделяемой памяти больше, чем размер БД, но в итоге это закончится тем, что постгрес засунет всю базу в память и будет использовать примерно столько памяти, не больше.

byko3y ★★★★
()

database per cluster is best practice!

uspen ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.