部署


配置


postgresql.conf 配置模板

postgresql.conf

修改最大连接数

  1. 更改 postgresql.conf 配置中的 max_connections 即可,默认为 100
  2. 按需(如连接数超过 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