【发布时间】:2021-05-11 16:19:41
【问题描述】:
在一个正在运行的 PostgreSQL 13 实例上,我尝试修改它的 wal_level 系统设置,如下所示,但没有得到尊重:
postgres@localhost:postgres> SHOW wal_level
+-------------+
| wal_level |
|-------------|
| replica |
+-------------+
SHOW
Time: 0.021s
postgres@localhost:postgres> ALTER SYSTEM SET wal_level = logical;
ALTER SYSTEM
Time: 0.007s
postgres@localhost:postgres> SHOW wal_level
+-------------+
| wal_level |
|-------------|
| replica |
+-------------+
SHOW
Time: 0.021s
postgres@localhost:postgres>
不幸的是,这是由 Postgres 人在 DockerHub 映像中设置的,因此仅修改配置文件并重新启动并非易事。确实可以解决变通办法,但我希望社区可以建议一种方法来通过 Postgres 客户端会话实时解决问题。
编辑(下方评论补充):
postgres@localhost:postgres> select * from pg_settings where name ='wal_level';
--+-----------------------------------+------------+-------------+--------------+--------------+-------------------+
| enumvals | boot_val | reset_val | sourcefile | sourceline | pending_restart |
--+-----------------------------------+------------+-------------+--------------+--------------+-------------------|
| ['minimal', 'replica', 'logical'] | replica | replica | <null> | <null> | False |
--+-----------------------------------+------------+-------------+--------------+--------------+-------------------+
【问题讨论】:
-
在已经运行的服务器上更改 wal_level 需要重新启动。没有办法解决这个问题。
-
不相关,但是:
replica是默认的 wal 级别。这并不特定于 Docker 映像 -
那个@jjanes 和@a_horse_with_no_name(听起来像是我知道的一首歌)。
=:)可惜他们没有公开那个参数。我必须从头开始构建映像,或者修改commit一个正在运行的容器。
标签: sql postgresql wal