Size: a a a

pgsql – PostgreSQL

2020 August 20

AI

Alex Ignatov in pgsql – PostgreSQL
Nikolay
Ну надо брать в руки ansible или что-то такое, и всё автоматизировать, как везде и делается
Не, ансибл не очень годится для такой динамики. Во первых для большого количества нод он очень медленный и изза этого появляется соблазн начать лимитировать его по группам , хостам и пр с вытекающим из этого конфиг дрифтом.
Да хоть он это и может (завести роли, и тд и тп) и много чего другого «динамического», тем более в последних версиях появилась сильная поддержка пг,  тут же появляется соблазн сделать чтото крутое. Вот тут на этом этапе следует остановится =) тк в конце концов мы получим неподдерживаемого гомункулуса.

Про ансибл тут,кстати, недавно был ряд очень годных статеек на хабр

https://m.habr.com/ru/post/508762/
источник

K

Kosta in pgsql – PostgreSQL
Nikolay
Можно попробовать для начала вот от этого избавиться
Filter: (gvkey = ANY ('{~1600 items}'::integer[]))
                          Rows Removed by Filter: 1536564


добавив gvkey второй колонкой в определение csco_idesind_datadate_idx

ну и напрашивается partitioning
а патиции можно добавить только через создание новой таблицы и перелив туда данные?
источник

N

Nik in pgsql – PostgreSQL
--exclude-schema=схемасхема в pg_dump - исключить и таблицы из этой схемы6 верно?
источник

РЖ

Роман Жарков... in pgsql – PostgreSQL
Nik
--exclude-schema=схемасхема в pg_dump - исключить и таблицы из этой схемы6 верно?
Да.
источник

N

Nik in pgsql – PostgreSQL
Роман Жарков
Да.
спс
источник

A

Alek in pgsql – PostgreSQL
Всем, привет, подскажите плиз, select *, pg_terminate_backend(pid) from pg_stat_activity where datname=‘caa’; просто закроет все сеансы к этой БД и все? То есть сам сервер, другие БД, и пользователи все продолжат работать? За исключением только этой БД?
источник

A

Alek in pgsql – PostgreSQL
Мне нужно ее переименовать, но пока не даёт
источник

РЖ

Роман Жарков... in pgsql – PostgreSQL
Да. Это заставит сервер завершить все рабочие процессы, связанные с этой базой.
Главное успеть пока новые не запустились :)
источник

A

Alek in pgsql – PostgreSQL
Роман Жарков
Да. Это заставит сервер завершить все рабочие процессы, связанные с этой базой.
Главное успеть пока новые не запустились :)
Понял! Спасибо большое 👍
источник

EA

Erlan A in pgsql – PostgreSQL
Alek
Всем, привет, подскажите плиз, select *, pg_terminate_backend(pid) from pg_stat_activity where datname=‘caa’; просто закроет все сеансы к этой БД и все? То есть сам сервер, другие БД, и пользователи все продолжат работать? За исключением только этой БД?
Используйте cancel
источник

A

Alek in pgsql – PostgreSQL
Erlan A
Используйте cancel
Спасибо, сейчас погуглю
источник

РЖ

Роман Жарков... in pgsql – PostgreSQL
Alek
Спасибо, сейчас погуглю
Cancel отменит один запрос и не закроет сессию.
источник

РЖ

Роман Жарков... in pgsql – PostgreSQL
В моей практике он умудрялся и один запрос не отменять. Но это было давно.
источник

EA

Erlan A in pgsql – PostgreSQL
Erlan A
Используйте cancel
Это лучше чем возможная проблема при команде terminate
источник

РЖ

Роман Жарков... in pgsql – PostgreSQL
Erlan A
Это лучше чем возможная проблема при команде terminate
Какая?
Мне правда интересно, т.к. я этих terminate сделал руками наверное для десятков тысяч сессий. Пулерных.
А ещё были автоматические, которые никто не считал.
источник

EA

Erlan A in pgsql – PostgreSQL
Не тот процесс удалит к примеру, системный
источник

РЖ

Роман Жарков... in pgsql – PostgreSQL
Erlan A
Не тот процесс удалит к примеру, системный
Это как?
источник

РЖ

Роман Жарков... in pgsql – PostgreSQL
В любом случае, чтобы получить доступ на переименование/удаление БД нужно все сессии связанные с ней завершить. Включая автовакуумы.
Это можно сделать либо рестартом сервера, но тогда это коснётся всех, либо terminate нужных рабочих процессов.
источник

A

Alek in pgsql – PostgreSQL
Переименование прошло успешно 🙂👍 правда я cancel так и не попробовал, terminate прошло
источник

AN

Alexander Nikitin in pgsql – PostgreSQL
Коллеги, а правильно я понимаю, что idle_in_transaction_session_timeout действует только на новые сессии, которые появились после того, как этот параметр был установлен?
источник