BitPage

Место на диске съели индексы, а не данные: раздувание b-tree, которое autovacuum не лечит

Дисковый алерт на базе PostgreSQL чаще означает раздувание индексов, а не таблиц: b-tree не сливает полупустые страницы, и плотность вместо дефолтных 90% падает до 13–15%. Autovacuum тут бессилен by design — помогает только REINDEX, а VACUUM FULL при нехватке места опасен, потому что пишет вторую копию таблицы целиком.

Patroni игнорирует правки patroni.yml: почему bootstrap.dcs работает один раз и как вернуть Ansible-роли управление кластером

Секция bootstrap.dcs в patroni.yml применяется один раз — при инициализации кластера, дальше правки шаблона не действуют. Разбор четырёх разошедшихся слоёв конфигурации, перенос в postgresql.parameters всего, кроме полутора десятков параметров из CMDLINE_OPTIONS, и грабли: shared_buffers: 4G молча превращается в 128 МБ после рестарта.

PostgreSQL conflict with recovery: почему hot_standby_feedback со слотами опасен, а lag= в Patroni мерит не то

Реплика отдавала около двух сотен конфликтов recovery за полторы недели и три десятка раз выпадала из HAProxy. hot_standby_feedback при включённых слотах переносит проблему на мастер, рост max_standby_streaming_delay усиливает флап. Реальное отставание — единицы миллисекунд по медиане и пара секунд в худшем случае — против порога health-check в 10 МБ.

Как вывезти живой docker-проект с умирающего диска: стрим pg_dump, pull образов, якорный exclude

Умирающий диск принимает чтение и вешает запись: pg_dump в локальный файл встал примерно на полутора гигабайтах, не сообщив об ошибке. Разбор миграции stateful docker-compose проекта на Proxmox LXC — стрим дампа через ssh -T, pull образов вместо сборки EOL-баз, якорный rsync-exclude.