Size: a a a

pgsql – PostgreSQL

2021 February 22

IZ

Igor Zinovik in pgsql – PostgreSQL
Я каким-то образом сменил владельца своей БД и теперь не могу выставить его обратно, чтобы смочь удалить БД.
dropdb базу не удаляет, т.к. к ней есть коннекты которые я не могу закрыть из под роли postgres (роль не является
суперпользователем). Подскажите как быть?
[Mon Feb 22 23:46:17 2021] psql://postgres@iz-x1:6432/msoa_adstxt                                                                                   
> \l msoa_adstxt                                                                                                                                    
                                      List of databases
┌─────────────┬─────────────┬──────────┬────────────┬────────────┬─────────────────────────────┐
│    Name     │    Owner    │ Encoding │  Collate   │   Ctype    │      Access privileges      │
├─────────────┼─────────────┼──────────┼────────────┼────────────┼─────────────────────────────┤
│ msoa_adstxt │ msoa_adstxt │ UTF8     │ en_US.UTF8 │ en_US.UTF8 │ =Tc/msoa_adstxt            ↵│
│             │             │          │            │            │ msoa_adstxt=CTc/msoa_adstxt │
└─────────────┴─────────────┴──────────┴────────────┴────────────┴─────────────────────────────┘
(1 row)                                                                                                                                            

[Mon Feb 22 23:46:22 2021] psql://postgres@iz-x1:6432/msoa_adstxt                                                                                  
> \dt                                                                                                                                              
                   List of relations                                                                                                              
┌────────┬────────────────────────────┬───────┬──────────┐                                                                                          
│ Schema │            Name            │ Type  │  Owner   │                                                                                          
├────────┼────────────────────────────┼───────┼──────────┤                                                                                          
│ public │ adstxt_adstxt              │ table │ postgres │                                                                                          
...
└────────┴────────────────────────────┴───────┴──────────┘                                                                                          
(16 rows)                                                                                                                                          
                                                                                                                                                   

[Mon Feb 22 23:46:26 2021] psql://postgres@iz-x1:6432/msoa_adstxt
> ALTER DATABASE msoa_adstxt OWNER TO postgres;
ERROR:  42501: must be owner of database msoa_adstxt
LOCATION:  aclcheck_error, aclchk.c:3416

[Mon Feb 22 23:46:49 2021] psql://postgres@iz-x1:6432/msoa_adstxt
> \c msoa_adstxt msoa_adstxt                                                                                                                        
psql (12.6 (Ubuntu 12.6-0ubuntu0.20.04.1), server 9.6.19)
You are now connected to database "msoa_adstxt" as user "msoa_adstxt".
                                                                                                                                                   
[Mon Feb 22 23:46:57 2021] psql://msoa_adstxt@iz-x1:6432/msoa_adstxt                                                                                
> ALTER DATABASE msoa_adstxt OWNER TO postgres;                                                                                                    
ERROR:  42501: permission denied to change owner of database                                                                                        
LOCATION:  AlterDatabaseOwner, dbcommands.c:1634
источник

VY

Victor Yegorov in pgsql – PostgreSQL
Igor Zinovik
Я каким-то образом сменил владельца своей БД и теперь не могу выставить его обратно, чтобы смочь удалить БД.
dropdb базу не удаляет, т.к. к ней есть коннекты которые я не могу закрыть из под роли postgres (роль не является
суперпользователем). Подскажите как быть?
[Mon Feb 22 23:46:17 2021] psql://postgres@iz-x1:6432/msoa_adstxt                                                                                   
> \l msoa_adstxt                                                                                                                                    
                                      List of databases
┌─────────────┬─────────────┬──────────┬────────────┬────────────┬─────────────────────────────┐
│    Name     │    Owner    │ Encoding │  Collate   │   Ctype    │      Access privileges      │
├─────────────┼─────────────┼──────────┼────────────┼────────────┼─────────────────────────────┤
│ msoa_adstxt │ msoa_adstxt │ UTF8     │ en_US.UTF8 │ en_US.UTF8 │ =Tc/msoa_adstxt            ↵│
│             │             │          │            │            │ msoa_adstxt=CTc/msoa_adstxt │
└─────────────┴─────────────┴──────────┴────────────┴────────────┴─────────────────────────────┘
(1 row)                                                                                                                                            

[Mon Feb 22 23:46:22 2021] psql://postgres@iz-x1:6432/msoa_adstxt                                                                                  
> \dt                                                                                                                                              
                   List of relations                                                                                                              
┌────────┬────────────────────────────┬───────┬──────────┐                                                                                          
│ Schema │            Name            │ Type  │  Owner   │                                                                                          
├────────┼────────────────────────────┼───────┼──────────┤                                                                                          
│ public │ adstxt_adstxt              │ table │ postgres │                                                                                          
...
└────────┴────────────────────────────┴───────┴──────────┘                                                                                          
(16 rows)                                                                                                                                          
                                                                                                                                                   

[Mon Feb 22 23:46:26 2021] psql://postgres@iz-x1:6432/msoa_adstxt
> ALTER DATABASE msoa_adstxt OWNER TO postgres;
ERROR:  42501: must be owner of database msoa_adstxt
LOCATION:  aclcheck_error, aclchk.c:3416

[Mon Feb 22 23:46:49 2021] psql://postgres@iz-x1:6432/msoa_adstxt
> \c msoa_adstxt msoa_adstxt                                                                                                                        
psql (12.6 (Ubuntu 12.6-0ubuntu0.20.04.1), server 9.6.19)
You are now connected to database "msoa_adstxt" as user "msoa_adstxt".
                                                                                                                                                   
[Mon Feb 22 23:46:57 2021] psql://msoa_adstxt@iz-x1:6432/msoa_adstxt                                                                                
> ALTER DATABASE msoa_adstxt OWNER TO postgres;                                                                                                    
ERROR:  42501: permission denied to change owner of database                                                                                        
LOCATION:  AlterDatabaseOwner, dbcommands.c:1634
а у вас суперы остались в базе?
источник
2021 February 23

IZ

Igor Zinovik in pgsql – PostgreSQL
Victor Yegorov
а у вас суперы остались в базе?
у меня есть пользователь cloudsqladmin к которому у меня нет доступа, т.к. я работаю ограниченном окружении (CloudSQL - DBaaS от гугла).
[Tue Feb 23 00:01:11 2021] psql://postgres@iz-x1:6432/msoa_adstxt 
> SELECT usename FROM pg_user WHERE usesuper=true;
┌───────────────┐
│    usename    │
├───────────────┤
│ cloudsqladmin │
└───────────────┘
(1 row)
источник

VY

Victor Yegorov in pgsql – PostgreSQL
Igor Zinovik
у меня есть пользователь cloudsqladmin к которому у меня нет доступа, т.к. я работаю ограниченном окружении (CloudSQL - DBaaS от гугла).
[Tue Feb 23 00:01:11 2021] psql://postgres@iz-x1:6432/msoa_adstxt 
> SELECT usename FROM pg_user WHERE usesuper=true;
┌───────────────┐
│    usename    │
├───────────────┤
│ cloudsqladmin │
└───────────────┘
(1 row)
а подключиться как `msoa_adstxt` вы можете?
источник

IZ

Igor Zinovik in pgsql – PostgreSQL
я даже не могу через гугловое апи удалить БД.
% gcloud beta sql databases delete msoa_adstxt --instance=postgresql...
The database will be deleted. Any data stored in the database will be
destroyed. You cannot undo this action.

Do you want to continue (Y/n)?  Y

ERROR: (gcloud.beta.sql.databases.delete) HTTPError 400: Invalid request: failed to delete database "msoa_adstxt". Detail: pq: must be owner of database msoa_adstxt. (Please use psql client to delete database that is not owned by "cloudsqlsuperuser").
источник

IZ

Igor Zinovik in pgsql – PostgreSQL
Victor Yegorov
а подключиться как `msoa_adstxt` вы можете?
Да, могу
источник

VY

Victor Yegorov in pgsql – PostgreSQL
Igor Zinovik
Да, могу
ну подключитесь и дропните базу
источник

IZ

Igor Zinovik in pgsql – PostgreSQL
Victor Yegorov
ну подключитесь и дропните базу
не тут-то было:
% dropdb -U msoa_adstxt msoa_adstxt
Password:
dropdb: error: database removal failed: ERROR:  database "msoa_adstxt" is being accessed by other users
DETAIL:  There are 6 other sessions using the database.
источник

DO

Do c Tor O r` Ry in pgsql – PostgreSQL
Igor Zinovik
не тут-то было:
% dropdb -U msoa_adstxt msoa_adstxt
Password:
dropdb: error: database removal failed: ERROR:  database "msoa_adstxt" is being accessed by other users
DETAIL:  There are 6 other sessions using the database.
Стопните бекенды, чтобы закрыть соединения
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Igor Zinovik
не тут-то было:
% dropdb -U msoa_adstxt msoa_adstxt
Password:
dropdb: error: database removal failed: ERROR:  database "msoa_adstxt" is being accessed by other users
DETAIL:  There are 6 other sessions using the database.
А какая версия PostgreSQL (и как Вам удалось сменить владельца, вот что интересно)?
А вообще, покажите \du
источник

IZ

Igor Zinovik in pgsql – PostgreSQL
Do c Tor O r` Ry
Стопните бекенды, чтобы закрыть соединения
Бинго! Помогло!
источник

VY

Victor Yegorov in pgsql – PostgreSQL
Igor Zinovik
не тут-то было:
% dropdb -U msoa_adstxt msoa_adstxt
Password:
dropdb: error: database removal failed: ERROR:  database "msoa_adstxt" is being accessed by other users
DETAIL:  There are 6 other sessions using the database.
alter database msoa_adstxt allow_connections false;
select pg_terminate_backend(pid) from pg_stat_activity where datname='msoa_adstxt';
dropdb -U msoa_adstxt -d postgres msoa_adstxt
источник

IZ

Igor Zinovik in pgsql – PostgreSQL
Victor Yegorov
alter database msoa_adstxt allow_connections false;
select pg_terminate_backend(pid) from pg_stat_activity where datname='msoa_adstxt';
dropdb -U msoa_adstxt -d postgres msoa_adstxt
ага, спасибо. Я так и сделал
источник

DO

Do c Tor O r` Ry in pgsql – PostgreSQL
Igor Zinovik
Бинго! Помогло!
ох))))
источник

МШ

Михаил Шурутов... in pgsql – PostgreSQL
Shamil Sabirov
это разделение труда. каждый занимается своим делом. чем больше гранулярность тем лучше
Данное утверждение верно для техников со средне-специальным/средне-техническим образованием (советским, нынешним - высшим). Инженер же обязан уметь быстро въехать в новый продукт и научить ему техников. Так что...
источник

МШ

Михаил Шурутов... in pgsql – PostgreSQL
Do c Tor O r` Ry
любой личный круг знакомств - очень маленькая выборка
Ну да, личный круг знакомств - полстраны сисадминов, с кем дебаты дискутировал на зелёном, когда там ещё было комфортно для тех, кто думает головой :( Но такое время быстро закончилось.
источник

IK

Ivan Karniyenka in pgsql – PostgreSQL
всем привет. вопрос по времени. не хочется лезть с замерами в базу и еще коряво проверить(потому что с перового раза не получится у меня корректно все сделать)

есть у меня такая строка  - (lower(car), color) IN %((bmv, red), (audi, blue))s и я хочу понять насколько быстрее будет делать каждый запрос в отдельности типа есть у меня такая строка  - (lower(car), color) IN %((bmv, red)s)

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

Z

ZHU in pgsql – PostgreSQL
привет всем!  поставил настройки в postgres
max_connections = 1000
max_files_per_process = 1000
default_statistics_target = 1000
maintenance_work_mem = 2050MB
effective_cache_size = 20GB
work_mem = 1200MB
wal_buffers = 16MB
temp_buffers = 256MB
shared_buffers = 4GB
bgwriter_delay = 20ms
bgwriter_lru_maxpages = 400
bgwriter_lru_multiplier = 4.0
effective_io_concurrency = 333
max_worker_processes = 8
max_parallel_workers_per_gather = 4
max_parallel_workers = 8
max_parallel_maintenance_workers = 4
seq_page_cost = 0.5
random_page_cost = 0.5
autovacuum = on
autovacuum_max_workers = 8
autovacuum_naptime = 20s
min_wal_size = 512MB
max_wal_size = 2GB
но при запросе
SELECT "account_profile"."user_id",
      "account_profile"."division_id",
      "account_profile"."tel",
      "account_profile"."update_pass",
      "account_profile"."gas_stations_id",
      "account_profile"."ldap",
      "account_profile"."main_unit_id"
 FROM "account_profile"
WHERE "account_profile"."user_id" = 1
LIMIT 21
Время: 65,09089469909668 ms
какие настройки не правильно сделал где нужно увеличить или сжать подскажите
источник

DO

Do c Tor O r` Ry in pgsql – PostgreSQL
ZHU
привет всем!  поставил настройки в postgres
max_connections = 1000
max_files_per_process = 1000
default_statistics_target = 1000
maintenance_work_mem = 2050MB
effective_cache_size = 20GB
work_mem = 1200MB
wal_buffers = 16MB
temp_buffers = 256MB
shared_buffers = 4GB
bgwriter_delay = 20ms
bgwriter_lru_maxpages = 400
bgwriter_lru_multiplier = 4.0
effective_io_concurrency = 333
max_worker_processes = 8
max_parallel_workers_per_gather = 4
max_parallel_workers = 8
max_parallel_maintenance_workers = 4
seq_page_cost = 0.5
random_page_cost = 0.5
autovacuum = on
autovacuum_max_workers = 8
autovacuum_naptime = 20s
min_wal_size = 512MB
max_wal_size = 2GB
но при запросе
SELECT "account_profile"."user_id",
      "account_profile"."division_id",
      "account_profile"."tel",
      "account_profile"."update_pass",
      "account_profile"."gas_stations_id",
      "account_profile"."ldap",
      "account_profile"."main_unit_id"
 FROM "account_profile"
WHERE "account_profile"."user_id" = 1
LIMIT 21
Время: 65,09089469909668 ms
какие настройки не правильно сделал где нужно увеличить или сжать подскажите
Explain покажи
источник

D

Dmitriy in pgsql – PostgreSQL
ZHU
привет всем!  поставил настройки в postgres
max_connections = 1000
max_files_per_process = 1000
default_statistics_target = 1000
maintenance_work_mem = 2050MB
effective_cache_size = 20GB
work_mem = 1200MB
wal_buffers = 16MB
temp_buffers = 256MB
shared_buffers = 4GB
bgwriter_delay = 20ms
bgwriter_lru_maxpages = 400
bgwriter_lru_multiplier = 4.0
effective_io_concurrency = 333
max_worker_processes = 8
max_parallel_workers_per_gather = 4
max_parallel_workers = 8
max_parallel_maintenance_workers = 4
seq_page_cost = 0.5
random_page_cost = 0.5
autovacuum = on
autovacuum_max_workers = 8
autovacuum_naptime = 20s
min_wal_size = 512MB
max_wal_size = 2GB
но при запросе
SELECT "account_profile"."user_id",
      "account_profile"."division_id",
      "account_profile"."tel",
      "account_profile"."update_pass",
      "account_profile"."gas_stations_id",
      "account_profile"."ldap",
      "account_profile"."main_unit_id"
 FROM "account_profile"
WHERE "account_profile"."user_id" = 1
LIMIT 21
Время: 65,09089469909668 ms
какие настройки не правильно сделал где нужно увеличить или сжать подскажите
Там индекс на user_id висит?
источник