Postgresql
postgres - c <parameter> = <value> 不適用於 docker 中的 postgres 11
我在 docker 內執行 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
. 沒有任何參數被更改。而且我不知道我在做什麼有什麼問題?**更新:**我已經有一個正在執行的 docker 容器,我希望它將這些參數應用到它而不需要重新啟動它。
使用“-c”選項時,不能在等號周圍放置空格。所以你需要類似的東西
postgres -c max_connections=200
當我嘗試使用空格時,它根本拒絕啟動。因此,我不知道您要連接到什麼
SHOW max_connections;
。在您嘗試使用無效語法開始之前,您可能已經執行了一個伺服器?
使用 Docker 執行 Postgresql 時,啟動容器時有很多方法可以更改配置。
在我們的例子中,有一個例子:
$ docker run -d --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword postgres -c shared_buffers=256MB -c max_connections=200
所以讓我們用 Postgres 14 試試這個:
$ docker run -d --name pg14 -e POSTGRES_PASSWORD=mysecretpassword postgres:14 -c shared_buffers=256MB -c max_connections=200
用 psql 檢查它:
$ docker exec -it pg14 psql -U postgres
如果我們執行
SHOW max_connections;
,會顯示 200,所以它起作用了 👍。⚠️ 在命令行設置這個參數確實會覆蓋postgresql.conf中的配置。
我們可以檢查容器使用的配置文件:
$ docker exec pg14 cat /var/lib/postgresql/data/postgresql.conf
它包含 :
max_connections = 100 # (change requires restart)
即使
max_connections
在命令行上成功更改了參數,在日誌中我們仍然可以看到預設值(我猜來自配置文件):$ docker logs pg14 | grep max_connections ... selecting default max_connections ... 100 ...