Docker安装Postgresql(18.1、14)

Docker安装Postgresql

一、安装pgsql_18.1

# 查看
docker search postgres
# 拉取
docker pull postgres:18.1
docker pull postgres:latest

# 停止并删除临时容器
docker stop my-postgres && docker rm my-postgres
  • 启动容器,设置数据日志(CDC准备工作)
    • PostgreSQL 18+ 版本的 Docker 镜像期望你将一个单独的卷挂载到容器的 /var/lib/postgresql 目录,而不是像之前那样挂载到其内部的子目录 /var/lib/postgresql/data。这样做是为了兼容pg_ctlcluster和方便未来升级。
docker run --name my-postgres \
  --restart unless-stopped \
  -e POSTGRES_PASSWORD=123456 \
  -e POSTGRES_DB=source_db \
  -v /data/postgresql:/var/lib/postgresql \
  -p 5432:5432 \
  -d \
  postgres:latest \
  -c wal_level=logical \
  -c max_wal_senders=10 \
  -c max_replication_slots=10

docker run --name mypg18 \
  --restart unless-stopped \
  -e POSTGRES_USER=postgres \
  -e POSTGRES_PASSWORD=cc123456 \
  -e POSTGRES_DB=postgres \
  -v /data/docker/pgsql18:/var/lib/postgresql \
  -p 15431:5432 \
  -d \
  postgres:18.1 \
  -c wal_level=logical \
  -c max_wal_senders=10 \
  -c max_replication_slots=10
  • 参数解释
  # 上面创建容器的时候,可以指定用户(别指定:postgres,这是默认超级用户)
  -e POSTGRES_USER=postgresql \

  # 启动参数中启用逻辑复制 (CDC必需)
  -c wal_level=logical \
  -c max_wal_senders=10 \
  -c max_replication_slots=10
  • 验证安装
docker logs my-postgres --tail 10

# 验证是否安装好,查询数据库版本
docker exec my-postgres psql -U postgres -d source_db -c "SELECT version();"
docker exec my-postgres psql -U postgres -d source_db -c "SHOW wal_level;"

账号:postgres
密码:123456
端口:5432
数据库:source_db

  • 验证安装查询的sql
SELECT version();
SHOW wal_level;
SHOW max_wal_senders;
SHOW max_replication_slots;

二、手动下载镜像(自己服务器无法拉取镜像的情况下,能下的不必理会)

# 在一台可以拉取镜像的服务器拉取,然后打包到要加载的服务器
docker pull postgers:latest

docker save -o /data/docker/images/postgres.tar postgres:latest
# 将生成的postgres.tar文件传输到目标服务器(如通过SCP)

# 在目标服务器上加载镜像:
sudo docker load -i /data/tools/images/postgres.tar

三、安装pgsql_14

# 搜索镜像
docker search postgres
# 拉取镜像
docker pull postgres:14
  • 准备在服务器用14:执行:备份和恢复:pg_dump和pg_restore命令
docker run -d \
  --name mypg14 \
  --restart=always \
  -e POSTGRES_PASSWORD=cc123456 \
  -e POSTGRES_USER=postgres \
  -e POSTGRES_DB=postgres \
  -p 15432:5432 \
  -v /data/docker/pgsql14/data:/var/lib/postgresql/data \
  -v /data/docker/pgsql14/conf:/etc/postgresql \
  postgres:14
# 停止和删除容器
docker stop mypg14 && docker rm mypg14

# 直接访问docker登陆
docker exec -e PGPASSWORD='cc123456' -it mypg14 psql -U postgres

导出/导入

  • 常用参数

    参数 说明
    -U 用户名
    -d 数据库名
    -h 主机地址(默认 localhost)
    -p 端口(默认 5432)
    -f 输出文件
    -F 格式:p(纯文本)、c(自定义)、t(tar)、d(目录)
    -t 导出指定表
    -T 排除指定表
    -n 导出指定 schema
    -O 不导出 owner
    -x 不导出权限

导出

导入

posted on 2025-12-18 10:54  C_C_菜园  阅读(414)  评论(0)    收藏  举报

导航