跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
  • 世界
  • 用户
  • 群组
皮肤
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠

乐达

  1. 主页
  2. 软件工程
  3. 开源好项目
  4. 一键安装: PostgreSQL主从读写分离定时备份

一键安装: PostgreSQL主从读写分离定时备份

已定时 已固定 已锁定 已移动 开源好项目
1 帖子 1 发布者 1 浏览 1 关注中
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • Z 离线
    Z 离线
    zhongfangxiong
    写于 最后由 编辑
    #1

    📖 第二台机器(默认端口)(读写分离 + 每日备份)

    主库 5432,从库 5433,镜像走 docker-hk.loda.net.cn
    每日 03:00 自动 dump 主库 → /mnt/disk5t/backup/(保留 7 天)


    1. 目录准备

    # SSD
    sudo mkdir -p /srv/pg-ha/data
    sudo chown -R $USER:$USER /srv/pg-ha
    
    # HDD
    sudo mkdir -p /mnt/disk5t/backup
    sudo chown -R $USER:$USER /mnt/disk5t/backup
    

    2. 文件清单(放进 /srv/pg-ha)

    2.1 .env

    POSTGRES_DB=appdb
    POSTGRES_USER=appuser
    POSTGRES_PASSWORD=AppUser123
    REPL_USER=repl_user
    REPL_PASS=ReplPass123
    

    2.2 docker-compose.yml

    version: "3.9"
    
    services:
      pg-primary:
        image: docker-hk.loda.net.cn/bitnami/postgresql:latest
        container_name: pg-primary
        restart: unless-stopped
        environment:
          POSTGRESQL_DATABASE: ${POSTGRES_DB}
          POSTGRESQL_USERNAME: ${POSTGRES_USER}
          POSTGRESQL_PASSWORD: ${POSTGRES_PASSWORD}
          POSTGRESQL_REPLICATION_MODE: master
          POSTGRESQL_REPLICATION_USER: ${REPL_USER}
          POSTGRESQL_REPLICATION_PASSWORD: ${REPL_PASS}
        volumes:
          - /srv/pg-ha/data:/bitnami/postgresql
        ports:
          - "5432:5432"
        networks:
          - pg-net
    
      pg-replica:
        image: docker-hk.loda.net.cn/bitnami/postgresql:latest
        container_name: pg-replica
        restart: unless-stopped
        environment:
          POSTGRESQL_MASTER_HOST: pg-primary
          POSTGRESQL_MASTER_PORT_NUMBER: 5432
          POSTGRESQL_REPLICATION_MODE: slave
          POSTGRESQL_REPLICATION_USER: ${REPL_USER}
          POSTGRESQL_REPLICATION_PASSWORD: ${REPL_PASS}
          POSTGRESQL_DATABASE: ${POSTGRES_DB}
          POSTGRESQL_USERNAME: ${POSTGRES_USER}
          POSTGRESQL_PASSWORD: ${POSTGRES_PASSWORD}
        volumes:
          - /mnt/disk5t/postgre-r:/bitnami/postgresql
        ports:
          - "5433:5432"
        depends_on:
          - pg-primary
        networks:
          - pg-net
    
      # 每日备份服务
      pg-backup:
        image: docker-hk.loda.net.cn/bitnami/postgresql:latest
        container_name: pg-backup
        restart: unless-stopped
        environment:
          PGPASSWORD: ${POSTGRES_PASSWORD}
        volumes:
          - /mnt/disk5t/backup:/backup
        command: |
          bash -c '
            echo "0 3 * * * pg_dump -h pg-primary -U ${POSTGRES_USER} ${POSTGRES_DB} | gzip > /backup/backup_$$(date +\%Y\%m\%d_\%H\%M\%S).sql.gz && find /backup -name "*.sql.gz" -mtime +7 -delete" | crontab -
            crond -f'
        depends_on:
          - pg-primary
        networks:
          - pg-net
    
    networks:
      pg-net:
        driver: bridge
    

    3. 一键启动

    cd /srv/pg-ha
    docker compose up -d
    

    4. 验证备份

    # 手动触发一次
    docker exec pg-backup bash -c 'pg_dump -h pg-primary -U appuser appdb | gzip > /backup/test.sql.gz'
    
    # 查看文件
    ls -lh /mnt/disk5t/backup/
    

    5. 常用命令

    # 看日志
    docker compose logs -f pg-primary
    docker compose logs -f pg-replica
    docker compose logs -f pg-backup
    
    # 停集群
    docker compose down
    

    完事! 默认端口 + 每日备份 + 自建镜像源,全齐了。

    1 条回复 最后回复
    0
    回复
    • 在新帖中回复
    登录后回复
    • 从旧到新
    • 从新到旧
    • 最多赞同


    • 登录

    • 登录或注册以进行搜索。
    • 第一个帖子
      最后一个帖子
    0
    • 版块
    • 最新
    • 标签
    • 热门
    • 世界
    • 用户
    • 群组