刘耀杰·言

探索技术与生活的交叉点

← 返回博客

Ubuntu 安装 Postgres 单节点

PostgreSQL 是一款功能强大、稳定可靠的开源关系型数据库,具备高并发处理能力和完善的事务机制,被广泛应用于各类数据密集型系统中。

通用 #DBA#PostgreSQL#Ubuntu#Docker#数据库部署#General

前言

PostgreSQL 是一款功能强大、稳定可靠的开源关系型数据库,具备高并发处理能力和完善的事务机制,被广泛应用于各类数据密集型系统中.

在实际生产与开发过程中,单节点部署因其架构简单、部署快速、运维成本低,常用于开发测试环境或中小规模业务场景。

本文基于 Ubuntu 系统,详细介绍 PostgreSQL 单节点的安装与基础配置流程,帮助读者快速完成数据库环境搭建,为后续业务接入或高可用架构扩展提供基础。


前期准备

创建目录

创建项目目录并进入项目目录

<b>mkdir -p /data/workspace/install-postgres && cd /data/workspace/install-postgres</b>

开始部署

准备文件

以下是需要的 docker-compose.yaml 文件

  1. 需要打开postgressql.log
  2. 需要打开postgres_backup 轮周备份
<b># version: "3.8"</b>
<b>services:</b>
<b>  postgres:</b>
<b>    image: postgres:18      </b>
<b>    container_name: pg-enterprise</b>
<b>    restart: unless-stopped</b>
<b>    environment:</b>
<b>      POSTGRES_USER: postgres</b>
<b>      POSTGRES_PASSWORD: postgres@!QAZxsw2</b>
<b>      POSTGRES_DB: postgres</b>
<b>    ports:</b>
<b>      - "5432:5432"</b>
<b>    volumes:</b>
<b>      # 关键修正:只挂到 /var/lib/postgresql,让镜像自己建 18/main 子目录</b>
<b>      - pg_data:/var/lib/postgresql</b>
<b>    # 其余企业参数、健康检查、command 等保持不动</b>
<b>    command: ></b>
<b>      postgres</b>
<b>      -c max_connections=200</b>
<b>      -c shared_buffers=256MB</b>
<b>      -c effective_cache_size=1GB</b>
<b>      -c statement_timeout=30s</b>
<b>      -c log_min_duration_statement=1000</b>
<b>      -c password_encryption=scram-sha-256</b>
<b>    healthcheck:</b>
<b>      test: ["CMD-SHELL", "pg_isready -U postgres"]</b>
<b>      interval: 10s</b>
<b>      timeout: 5s</b>
<b>      retries: 5</b>
<b>      start_period: 30s</b>

<b>volumes:</b>
<b>  pg_data:</b>

编辑文件

切换到项目目录并 vim 编写 docker-compose.yaml

<b>cd /data/workspace/install-postgres && vim docker-compose.yaml</b>

将上面的 docker-compose.yaml 文件插入到当前编写的文件中


启动服务

执行启动命令

<b>cd /data/workspace/install-postgres && docker-compose up -d</b>

查看日志

<b>docker ps</b>
<b>docker logs -f <containerd id></b>

验证部署

测试连接:用自带的 pg_isready 检测端口、用 psql 执行简单 SQL 并打印版本/时间

<b>docker exec -it pg-enterprise psql -U postgres -c "select version(); select current_timestamp; select 'Hello from PG' as msg;"</b>

预计输出:

<b>                                                      version                                                       </b>
<b>--------------------------------------------------------------------------------------------------------------------</b>
<b> PostgreSQL 18.1 (Debian 18.1-1.pgdg13+2) on x86_64-pc-linux-gnu, compiled by gcc (Debian 14.2.0-19) 14.2.0, 64-bit</b>
<b>(1 row)</b>

<b>       current_timestamp       </b>
<b>-------------------------------</b>
<b> 2025-11-21 07:24:12.303782+00</b>
<b>(1 row)</b>

<b>      msg      </b>
<b>---------------</b>
<b> Hello from PG</b>
<b>(1 row)</b>

评论

回到顶部