postgres -c <parameter>= <value>не работает для Postgres 11 в докере - PullRequest
0 голосов
/ 30 ноября 2018

Я запускаю Postgres внутри док-контейнера.Я хочу изменить конфигурацию Postgres по умолчанию, поэтому я запускаю:

docker container run -d postgres -c max_connections=200 -c shared_buffers=1GB -c effective_cache_size=3GB -c maintenance_work_mem=256MB -c checkpoint_completion_target=0.7 -c wal_buffers=16MB 

Но когда я подключаюсь к Postgres, работающему:

 docker exec -it container_name psql

И затем результат:

SHOW max_connections;

- это

 max_connections
-----------------
 100
(1 row)

И это не просто max_connections.Ни один из параметров не изменился.И я не знаю, в чем проблема с тем, что я делаю?

Обновление: результат

root=# SELECT *
root-# FROM   pg_settings
root-# WHERE  name = 'max_connections';

равен

      name       | setting | unit |                       category                       |                     short_desc                     | extra_desc |  context   | vartype |       source       | min_val | max_val | enumvals | boot_val | reset_val |                sourcefile                | sourceline | pending_restart
-----------------+---------+------+------------------------------------------------------+----------------------------------------------------+------------+------------+---------+--------------------+---------+---------+----------+----------+-----------+------------------------------------------+------------+-----------------
 max_connections | 100     |      | Connections and Authentication / Connection Settings | Sets the maximum number of concurrent connections. |            | postmaster | integer | configuration file | 1       | 262143  |          | 100      | 100       | /var/lib/postgresql/data/postgresql.conf |         64 | f
(1 row)

Ответы [ 2 ]

0 голосов
/ 02 декабря 2018

Если вы не можете заставить его работать при запуске сервера, попробуйте ALTER SYSTEM:

psql -c "ALTER SYSTEM SET max_connections=200; SELECT pg_reload_conf()"

, который изменяет настройку в postgresql.auto.conf.

Изменение shared_buffers, wal_buffersand max_connections` требует перезапуска сервера PostgreSQL, остальные параметры можно изменить на лету.

0 голосов
/ 02 декабря 2018

Возможно ли, что вы подключаетесь не к тому контейнеру?Когда я пытаюсь запустить psql как у вас, я получаю:

$ docker exec -it boring_hermann psql
psql: FATAL:  role "root" does not exist

... потому что стандартный пользователь - root и не имеет доступа к базе данных контейнера.Когда я работаю как пользователь 999, группа 999 (та, которая указана как postgres на этом изображении), она работает правильно:

$ docker exec -u 999:999 -it boring_hermann psql
psql (11.1 (Debian 11.1-1.pgdg90+1))
Type "help" for help.

postgres=# show max_connections;
 max_connections 
-----------------
 200
(1 row)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...