Не удается получить новые настройки файла конфигурации postgres для вступления в силу - PullRequest
1 голос
/ 17 января 2020

В моей базе данных есть довольно большая таблица, и я добавляю в нее новые записи. По мере роста количества записей у меня начались проблемы, и я не могу вставить.

Мои postgresql файлы журналов предлагают увеличить размер WAL:

[700] LOG: checkpoints are occurring too frequently (6 seconds apart)
[700] HINT: Consider increasing the configuration parameter "max_wal_size".

Я получил путь к своему файл конфигурации с =# show config_file; и внес некоторые изменения с помощью vim:

max_wal_senders = 0
wal_level = minimal
max_wal_size = 4GB

Когда я проверяю файл, я вижу внесенные изменения.
Затем я попытался перезагрузить и перезапустить базу данных: (Я получаю каталог данных с =# show data_directory ;)

Я попытался перезагрузить:

pg_ctl reload -D path
server signaled

Я попытался перезагрузить

pg_ctl restart -D path
waiting for server to shut down.... done
server stopped
waiting for server to start....
2020-01-17 13:08:19.063 EST [16913] LOG:  listening on IPv4 address 
2020-01-17 13:08:19.063 EST [16913] LOG:  listening on IPv6 address 
2020-01-17 13:08:19.079 EST [16913] LOG:  listening on Unix socket 
2020-01-17 13:08:19.117 EST [16914] LOG:  database system was shut down at 2020-01-17 13:08:18 EST
2020-01-17 13:08:19.126 EST [16913] LOG:  database system is ready to accept connections
 done
server started

Но когда я подключаюсь к базе данных и проверяю мои настройки :

      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_wal_senders | 10      |      | Replication / Sending Servers | Sets the maximum number of simultaneously running WAL sender processes. |            | postmaster | integer | default | 0       | 262143     |                           | 10       | 10        |            |            | f
 max_wal_size    | 1024    | MB   | Write-Ahead Log / Checkpoints | Sets the WAL size that triggers a checkpoint.                           |            | sighup     | integer | default | 2       | 2147483647 |                           | 1024     | 1024      |            |            | f
 wal_level       | replica |      | Write-Ahead Log / Settings    | Set the level of information written to the WAL.                        |            | postmaster | enum    | default |         |            | {minimal,replica,logical} | replica  | replica   |            |            | f
(3 rows)

Я все еще вижу старые настройки по умолчанию.
Что мне здесь не хватает? Как я могу заставить эти настройки вступить в силу?

1 Ответ

3 голосов
/ 17 января 2020

Настройки конфигурации могут поступать из нескольких источников:

  • postgresql.conf
  • postgresql.auto.conf (устанавливается с помощью ALTER SYSTEM)
  • аргументы командной строки на сервере start
  • устанавливается с помощью ALTER DATABASE или ALTER USER

Более того, если параметр встречается дважды в файле конфигурации, выигрывает вторая запись.

Для рисунка откуда в этом беспорядке происходят ваши настройки, запустите

SELECT name, source, sourcefile, sourceline, pending_restart
FROM pg_settings
WHERE name IN ('wal_level', 'max_wal_size', 'max_wal_senders');

Если source равен database или user, вы можете использовать команду psql \drds для выяснения деталей.


Результат запросов показывает, что ваш PostgreSQL был изменен или построен так, что эти значения являются значениями по умолчанию.

Вы должны были бы переопределить эти значения по умолчанию любым из методов, показанных выше.

...