powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите удалить БД
17 сообщений из 17, страница 1 из 1
Помогите удалить БД
    #39458812
Константин Сергеевич Дерерк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть БД, которую надо удалить, но к ней есть коннекты.

Коннекты сразу новые генерятся после кила.
остановить приложение возможности нет.


Такая конструкция не работает, т.к. успевыают образоваться новые коннекты:

SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'db1';
DROP DATABASE db1;




Подскажите как удалить БД?

Можно ли запретить коннект только к одной БД? (типа сингл_юзер_моде мс)
...
Рейтинг: 0 / 0
Помогите удалить БД
    #39458824
ursido
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Константин Сергеевич Дерерк,

Можно ограничить кол-во соединений к одной БД:

Код: sql
1.
ALTER DATABASE name CONNECTION LIMIT connlimit;



Можно ограничить кол-во соединений на одного пользователя БД:

Код: sql
1.
ALTER USER role_specification CONNECTION LIMIT connlimit;



Можно запретить новые соединения к этой БД через pg_hba.conf - выставить reject для этой БД.

Потом отшибить имеющиеся соединения и далее по тексту.

Кстати, в момент удаления БД нужно быть подключенным к ДРУГОЙ бд на этом сервере (например, template1).
...
Рейтинг: 0 / 0
Помогите удалить БД
    #39458835
Константин Сергеевич Дерерк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за ответ :)

pg_hba.conf - править не получится, нет доступа к ОС
быть подключенным к ДРУГОЙ бд на этом сервере - это само собой.


А скажите,
ALTER DATABASE name CONNECTION LIMIT connlimit; -можно ли ноль поставить?
...
Рейтинг: 0 / 0
Помогите удалить БД
    #39458836
ursido
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Константин Сергеевич Дерерк,

Вы не настолько сильно хотите удалить БД, чтобы попробовать самостоятельно? ;-)
...
Рейтинг: 0 / 0
Помогите удалить БД
    #39458839
p2.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Константин Сергеевич Дерерк,

revoke
...
Рейтинг: 0 / 0
Помогите удалить БД
    #39458840
Константин Сергеевич Дерерк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ursidoКонстантин Сергеевич Дерерк,

Вы не настолько сильно хотите удалить БД, чтобы попробовать самостоятельно? ;-)

я ее уже удалил, выдернув сетевой кабель из сервера на пару сек


Однако хочется удалять базы впердь менее радикально, хочу разобраться.

Пока это нашел, но про 0 там нет:

Ограничение CONNECTION LIMIT действует только приблизительно; если одновременно запускаются два сеанса, тогда как в базе остаётся только одно "свободное место", может так случиться, что будут отклонены оба подключения. Кроме того, это ограничение не распространяется на суперпользователей.
...
Рейтинг: 0 / 0
Помогите удалить БД
    #39458842
Константин Сергеевич Дерерк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
p2.
revoke


скажите конкретнее
...
Рейтинг: 0 / 0
Помогите удалить БД
    #39458854
ursido
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Константин Сергеевич Дерерк,

Почитайте сами . Вас должен интересовать пунк revoke connect...
...
Рейтинг: 0 / 0
Помогите удалить БД
    #39458858
ursido
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Константин Сергеевич ДереркПока это нашел, но про 0 там нет:


То что там есть -1 не вызывает никаких эмоций.
...
Рейтинг: 0 / 0
Помогите удалить БД
    #39458860
ursido
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Константин Сергеевич Дерерк,

Кстати, начиная с версии 9.5 появился параметр ALLOW_CONNECTIONS.

https://www.postgresql.org/docs/9.5/static/sql-createdatabase.html ...
[ ALLOW_CONNECTIONS [=] allowconn ]
...
allowconn

If false then no one can connect to this database. The default is true, allowing connections (except as restricted by other mechanisms, such as GRANT/REVOKE CONNECT).
...
Рейтинг: 0 / 0
Помогите удалить БД
    #39458865
Константин Сергеевич Дерерк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ursidoКонстантин Сергеевич Дерерк,

Кстати, начиная с версии 9.5 появился параметр ALLOW_CONNECTIONS.

https://www.postgresql.org/docs/9.5/static/sql-createdatabase.html ...
[ ALLOW_CONNECTIONS [=] allowconn ]
...
allowconn

If false then no one can connect to this database. The default is true, allowing connections (except as restricted by other mechanisms, such as GRANT/REVOKE CONNECT).


это хорошо, но интересует версия 8.4
...
Рейтинг: 0 / 0
Помогите удалить БД
    #39458868
Константин Сергеевич Дерерк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ursidoКонстантин Сергеевич Дерерк,

Почитайте сами . Вас должен интересовать пунк revoke connect...

Код: sql
1.
REVOKE CONNECT ON DATABASE database_name FROM PUBLIC;




вы это имели ввиду?
...
Рейтинг: 0 / 0
Помогите удалить БД
    #39458869
Константин Сергеевич Дерерк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ursidoКонстантин Сергеевич ДереркПока это нашел, но про 0 там нет:


То что там есть -1 не вызывает никаких эмоций.

-1 - это анлимитед
...
Рейтинг: 0 / 0
Помогите удалить БД
    #39458875
ursido
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Константин Сергеевич Дерерк,

Вы категорически не хотите делать свое домашнее задание. Хотите, чтобы все сделал кто-то за Вас.

Надо бы Вам в жбан профилактический на сутки. Для осмысления полученной информации.
...
Рейтинг: 0 / 0
Помогите удалить БД
    #39458878
Константин Сергеевич Дерерк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо.
...
Рейтинг: 0 / 0
Помогите удалить БД
    #39459281
big-trot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Константин Сергеевич Дерерк,

можно попробывать таким скриптом bash
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
#!/bin/bash
psql -c "
 DO
 '
 DECLARE 
 m_record_pid RECORD;
 BEGIN
   FOR m_record_pid IN SELECT pid FROM pg_stat_activity WHERE datname = ''database' LOOP
   PERFORM pg_terminate_backend(m_record_pid.pid);
 END LOOP;
 END;
';
"
dropdb --if-exists database
...
Рейтинг: 0 / 0
Помогите удалить БД
    #39459499
Константин Сергеевич Дерерк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
big-trotКонстантин Сергеевич Дерерк,

можно попробывать таким скриптом bash
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
#!/bin/bash
psql -c "
 DO
 '
 DECLARE 
 m_record_pid RECORD;
 BEGIN
   FOR m_record_pid IN SELECT pid FROM pg_stat_activity WHERE datname = ''database' LOOP
   PERFORM pg_terminate_backend(m_record_pid.pid);
 END LOOP;
 END;
';
"
dropdb --if-exists database




Это равнозначно этому:

SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'db1';
DROP DATABASE db1;
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите удалить БД
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]