postgresql - 无法使新的 postgres 配置文件设置生效
问题描述
我的数据库中有一个有点大的表,我正在向其中插入新记录。随着记录数量的增加,我开始遇到问题并且无法插入。
我的 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)
我仍然看到旧的默认设置。
我在这里想念什么?如何让这些设置生效?
解决方案
配置设置可以来自多个来源:
postgresql.conf
postgresql.auto.conf
(用 设置ALTER SYSTEM
)- 服务器启动时的命令行参数
- 用
ALTER DATABASE
or设置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 已被修改或构建,因此这些值是默认值。
您必须使用上面显示的任何方法覆盖这些默认值。
推荐阅读
- python - Global variable resets in Python
- bash - 在 ksh/html 中检索我的 CGI 上的 query_string
- java - Jenkins Pipeline env.JAVA_HOME differs from sh printenv
- mysql - MyRocks Compilation Issue
- spring-boot - 选定的 Json 字段忽略
- angular - how to delete and remove a Grid tile with its space from a Grid with angular
- ansible - ClamAV installation issue
- google-drive-api - 20% 的 google docs api 请求返回 401 未经授权
- html - 如何让搜索栏变大?
- javascript - 为什么 MenuItem 组件在 react material-ui 中不能作为链接工作