docker compose中的PostgreSQL 16升级到18自用方案

使用 pg_dumpall 备份迁移,适合数据量不大或跨版本跨度较大的情况(比如 16→18 ),需要停机升级,适合业务不大或者晚上不影响业务的时候操作。

以下是16和18的docker compose配置:

Postgres 16

docker-compose-16.yml

name: postgres16

services:
  postgres16: # 服务名称
    image: postgres:16.1-alpine
    container_name: postgres16
    restart: always
    environment:
      TZ: Asia/Shanghai
      POSTGRES_USER: postgres
      POSTGRES_DB: postgres
      POSTGRES_PASSWORD: password
      PGDATA: /var/lib/postgresql/data
    ports: # 端口映射,这里需要修改下映射端口,避免与18冲突
      - "5433:5432"
    volumes: # 数据持久化的配置
      - ./data:/var/lib/postgresql/data
      - ./backup:/backup # 备份目录
    logging:
      options:
        max-size: "10m"
        max-file: "3"

Postgres 18

docker-compose-18.yml

name: postgres18

services:
  postgres18: # 服务名称
    image: postgres:18-alpine
    container_name: postgres18
    restart: always
    environment:
      TZ: Asia/Shanghai
      POSTGRES_USER: postgres
      POSTGRES_DB: postgres
      POSTGRES_PASSWORD: password
      PGDATA: /var/lib/postgresql/data
    ports: # 端口映射
      - "5432:5432"
    volumes: # 数据持久化的配置
      - ./pg18_data:/var/lib/postgresql
      - ./backup:/backup
    logging:
      options:
        max-size: "10m"
        max-file: "3"
  1. 先启动pgsql 16的容器,然后执行以下命令备份全部数据库及用户配置:
# 启动容器
docker compose -f ./docker-compose-16.yml up -d
# 备份数据
docker exec -t postgres16 pg_dumpall -U postgres > /backup/dumpall.sql
  1. 然后启动pgsql 18的容器,执行以下命令恢复数据:
# 启动容器
docker compose -f ./docker-compose-18.yml up -d
# 备份数据
docker exec -i postgres18 psql -U postgres < /backup/dumpall.sql

注意其中映射的 backup 为同一个文件夹,及两个docker-compose.yml 需要在同一目录下(或者自行修改映射路径)

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇