Рецепты PostgreSQL
- Переключить сегмент WALWAL и Checkpoint
- Выполнить ручной CHECKPOINTWAL и Checkpoint
- Показать размер WAL и текущий LSNWAL и Checkpoint
- Показать отставание архивирования (ещё не заархивированный WAL)WAL и Checkpoint
- Добавить новое табличное пространствоХранение
- Перенести таблицу в другое табличное пространствоХранение
- Перенести индекс в другое табличное пространствоХранение
- Запросить размер базы данных и таблицХранение
- Оценить раздувание (bloat) таблицХранение
- Выполнить VACUUM ANALYZE для конкретной таблицыОбслуживание
- Выполнить агрессивный VACUUM FREEZEОбслуживание
- Перестроить индекс без блокировки (REINDEX CONCURRENTLY)Обслуживание
- Настроить autovacuum для конкретной таблицыОбслуживание
- Увеличить statistics target столбцаОбслуживание
- Изменить параметр и перечитать конфигурацию (ALTER SYSTEM)Параметры
- Изменить параметр для сессии (SET)Параметры
- Показать текущее значение параметраПараметры
- Создать физическую реплику (pg_basebackup)Репликация
- Повысить реплику до primaryРепликация
- Показать отставание репликацииРепликация
- Создать и удалить слот репликацииРепликация
- Настроить публикацию и подписку логической репликацииРепликация
- Завершить backend (pg_terminate_backend)Сессии
- Отменить выполняющийся запрос (pg_cancel_backend)Сессии
- Показать активные и блокирующие запросыСессии
- Добавить расширениеРасширения
- Показать установленные расширенияРасширения
- Показать состояние, топологию и историю кластера PatroniPatroni
- Выполнить плановый switchover через PatroniPatroni
- Выполнить ручной failover через PatroniPatroni
- Пересоздать сломанную реплику через Patroni (reinit)Patroni
- Изменить параметры всего кластера в Patroni (edit-config) и применить ожидающие перезапускиPatroni
- Перевести Patroni в режим обслуживания и обратно (pause/resume)Patroni
- Проверить работоспособность DCS Patroni (etcd/Consul) и REST APIPatroni
- Настроить архивирование WAL для pgBackRest (archive-push/archive-get)Бэкап и PITR
- Создать stanza pgBackRest и проверить архивирование (stanza-create/check)Бэкап и PITR
- Снять полный, дифференциальный и инкрементальный бэкапы через pgBackRestБэкап и PITR
- Показать каталог бэкапов pgBackRest и диапазон архива WAL (info)Бэкап и PITR
- Восстановить последний бэкап через pgBackRestБэкап и PITR
- Восстановить на момент времени через pgBackRest (PITR, --type=time)Бэкап и PITR
- Быстро пересоздать standby через delta restore pgBackRestБэкап и PITR
- Настроить политику хранения pgBackRest и выполнить expireБэкап и PITR
- Настроить standby вручную (standby.signal + primary_conninfo)Репликация
- Мониторинг задержки получения и воспроизведения WAL на standby (pg_stat_wal_receiver)Репликация
- Вернуть старый primary как реплику после failover через pg_rewindРепликация
- Настроить синхронную репликацию с кворумом (ANY) или по приоритету (FIRST)Репликация
- Мониторинг WAL, удерживаемого слотами репликации, и безопасное удаление заброшенного слотаРепликация
- Ограничить WAL, который могут удерживать слоты (max_slot_wal_keep_size)Репликация
- Добавить таблицу в публикацию и обновить подписку (REFRESH PUBLICATION)Логическая репликация
- Мониторинг логической репликации (pg_stat_subscription, ошибки apply, отставание слота)Логическая репликация
- Разрешить конфликт логической репликации (disable_on_error, SKIP)Логическая репликация
- Синхронизировать значения последовательностей на подписчике при логической репликацииЛогическая репликация
- Удалить подписку и очистить осиротевший логический слот на издателеЛогическая репликация
- Обновление мажорной версии через pg_upgrade --link (сквозной runbook)Обновление
- Обновление мажорной версии почти без простоя через логическую репликациюОбновление
- Показать пулы, статистику и подключения PgBouncer (SHOW POOLS/STATS/CLIENTS/SERVERS)PgBouncer
- Удерживать подключения во время обслуживания через PgBouncer (PAUSE/RESUME) и перечитать конфигурацию (RELOAD)PgBouncer
- Выбор pool_mode в PgBouncer и базовое определение размеровPgBouncer
- Найти самые дорогие запросы (pg_stat_statements: общее и среднее время)Производительность
- Найти запросы, создающие дисковый I/O, временные файлы и WAL (pg_stat_statements)Производительность
- Сбросить статистику pg_stat_statements (полностью или для одного запроса)Производительность
- Журналировать планы выполнения медленных запросов через auto_explainПроизводительность
- Детально разобрать план через EXPLAIN (ANALYZE, BUFFERS, SETTINGS, WAL)Производительность
- Выявить регрессии планов по queryid (сравнение снимков pg_stat_statements)Производительность
- Проверить ёмкость параллельных запросов и текущее использование рабочих процессовПроизводительность
- Измерить влияние JIT-компиляции на время запросаПроизводительность
- Построить дерево блокировок (найти корневой блокирующий процесс)Сессии
- Детально изучить ожидания блокировок по объектам и режимам блокировки (pg_locks)Сессии
- Найти долгие транзакции и транзакции в состоянии 'idle in transaction'Сессии
- Контролируемо массово завершить долгие сессии 'idle in transaction'Сессии
- Задать statement_timeout / lock_timeout для роли и базы данныхСессии
- Безопасно применять DDL с lock_timeout и повторными попытками (избегать очередей блокировок)Сессии
- Измерить использование подключений относительно max_connectionsСессии
- Мониторинг хода выполняющихся операций autovacuum/VACUUMОбслуживание
- Измерить риск wraparound идентификаторов транзакций (возраст XID по базам данных и таблицам)Обслуживание
- Найти держателей горизонта xmin, мешающих VACUUM удалять мёртвые кортежиОбслуживание
- Измерить раздувание таблиц и индексов через pgstattupleОбслуживание
- Реорганизовать раздутую таблицу без долгих блокировок (pg_repack)Обслуживание
- Найти и удалить индексы INVALIDОбслуживание
- Создать расширенную статистику для коррелированных столбцов (CREATE STATISTICS)Обслуживание
- Найти таблицы с устаревшей статистикой (стратегия ANALYZE)Обслуживание
- Проверить покрытие visibility map и эффективность Index Only ScanОбслуживание
- Создать таблицу с помесячным range-секционированием (генерация секций в цикле)Секционирование
- Подключить подготовленную таблицу как секцию с короткой блокировкой (ATTACH PARTITION)Секционирование
- Отключить старую секцию, не блокируя рабочий трафик (DETACH CONCURRENTLY)Секционирование
- Ловушка секции по умолчанию: создание новой секции завершается ошибкой 'would be violated by some row'Секционирование
- Проверить, что работает отсечение секций (partition pruning) на этапе планирования и выполненияСекционирование
- Автоматизировать создание секций и их хранение через pg_partmanСекционирование
- Построить иерархию ролей с минимальными привилегиями (GRANT + ALTER DEFAULT PRIVILEGES)Безопасность
- Настроить изоляцию арендаторов (tenant) через row-level securityБезопасность
- Проверить порядок правил pg_hba.conf и безопасно перечитать конфигурациюБезопасность
- Включить SSL/TLS и проверить шифрование подключений (pg_stat_ssl)Безопасность
- Перейти с паролей md5 на scram-sha-256Безопасность
- Вести журналы аудита на уровне ролей и объектов через pgauditБезопасность
- Проверить настройки памяти (shared_buffers, work_mem, maintenance_work_mem)Параметры
- Показать параметры, ожидающие перезапуска, и ошибки файлов конфигурацииПараметры
- Проверить поведение checkpoint (PG17+ pg_stat_checkpointer, PG16 и ранее pg_stat_bgwriter)Параметры
- Вывести размер таблиц с разбивкой на heap / индексы / TOAST и самые большие индексыХранение
- Найти расширения с ожидающими обновлениями и обновить ихРасширения
- Проанализировать источники I/O через pg_stat_io (тип backend, объект, контекст)Расширения