pgsql 手册
部署
配置
postgresql.conf 配置模板
修改最大连接数
- 更改 postgresql.conf 配置中的 max_connections 即可,默认为 100
- 按需(如连接数超过 500)更改配置中的 shared_buffers ,默认为 128MB 一般情况下不用管,不要超过系统内存一半,否则会和系统进程抢内存
docker compose
docker compose 模板
name: docker-pgsql-dev
services:
# The postgres database.
pgsql:
container_name: docker_pgsql_dev
image: postgres:15-alpine
restart: always
# 也可以更改此处指定配置文件
command: [ "postgres", "-c", "config_file=/conf/postgresql.conf" ]
environment:
PGUSER: postgres
# The password for the default postgres user.
POSTGRES_PASSWORD: xxxxxxxx
# postgres data directory
PGDATA: /var/lib/postgresql/data/pgdata
volumes:
- ./data:/var/lib/postgresql/data
# 初次启动可以不挂载 postgresql.conf ,正常启动 pgsql 服务
# 尔后利用 docker cp 将配置 /var/lib/postgresql/data/pgdata/postgresql.conf 复制出来
# 以免提示 /var/lib/postgresql/data/pgdata 路径非空不能启动服务
- ../volumes/db/conf/postgresql.conf:/conf/postgresql.conf:rw
ports:
- "5432:5432"
healthcheck:
test: [ "CMD", "pg_isready" ]
interval: 1s
timeout: 3s
retries: 30
networks:
default:
ipam:
config:
- subnet: 172.16.0.1/28
常用 sql 语句
当前配置信息查询
同时可以看到相关配置在具体哪个配置文件
SELECT name,sourcefile,sourceline,setting,applied
FROM pg_file_settings
ORDER BY name;
当前连接数查询
SELECT count(*) FROM pg_stat_activity;
当前连接信息查询
SELECT
pid,
usename,
datname,
client_addr,
client_port,
backend_start,
xact_start,
query_start,
state_change,
state,
query
FROM
pg_stat_activity;
关闭指定数据库连接
-- 替换 your_database_name 为实际数据库名
SELECT pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE datname = 'your_database_name'
-- AND pid <> pg_backend_pid(); -- 排除当前连接
参考文档
- https://hub.docker.com/_/postgres
- https://www.postgresql.org/docs/14/app-postgres.html#id-1.9.5.14.6.3