首页主机资讯如何利用pgAdmin进行Linux数据库备份计划

如何利用pgAdmin进行Linux数据库备份计划

时间2025-12-12 15:34:03发布访客分类主机资讯浏览911
导读:在 Linux 上,pgAdmin 的备份计划通常通过“图形化备份 + Cron 定时执行脚本”的组合来实现。下面给出可直接落地的步骤与模板,覆盖单机、容器与全库场景,并配套日志、保留与告警。 一、方案总览与前置准备 工具与方式 逻辑备...

在 Linux 上,pgAdmin 的备份计划通常通过“图形化备份 + Cron 定时执行脚本”的组合来实现。下面给出可直接落地的步骤与模板,覆盖单机、容器与全库场景,并配套日志、保留与告警。

一、方案总览与前置准备

  • 工具与方式
    • 逻辑备份:使用 pg_dump / pg_dumpall,适合按库/全库备份与灵活恢复。
    • 物理备份:使用 pg_basebackup,适合时间点恢复与整实例迁移。
  • 备份格式选择
    • Custom(.dump):压缩与恢复灵活,支持并行恢复,推荐日常使用。
    • Tar:跨平台迁移友好。
    • Plain(.sql):便于版本控制与审查。
    • Directory:适合超大数据,支持并行处理。
  • 前置检查
    • 确认 PostgreSQL 主机、端口、数据库名、用户名 与访问方式(本地套接字或 TCP)。
    • 规划 备份目录(如 /backups)与 日志目录(如 /var/log),并确保运行备份任务的系统用户对相关目录有读写权限。
    • 如走密码认证,准备 ~/.pgpass 或使用环境变量 PGPASSWORD(注意权限与安全性)。

二、方案一 脚本化备份 + Cron(推荐)

  • 步骤 1 准备配置与脚本
    • 创建环境配置(示例:/data/backup_config.env
      DB_HOST=localhost
      DB_PORT=5432
      DB_USER=postgres
      DB_NAME=mydb
      BACKUP_DIR=/backups
      RETENTION_DAYS=7
      LOG_FILE=/var/log/pg_backup.log
      
    • 创建备份脚本(示例:/usr/local/bin/pg_backup.sh
      #!/bin/bash
      set -Eeuo pipefail
      source /data/backup_config.env
      
      TIMESTAMP=$(date +%Y%m%d_%H%M%S)
      BACKUP_FILE="${
      BACKUP_DIR}
      /${
      DB_NAME}
      _${
      TIMESTAMP}
      .dump"
      
      mkdir -p "$BACKUP_DIR"
      
      export PGPASSWORD="${
      PGPASSWORD:-}
          "
      pg_dump --host="$DB_HOST" --port="$DB_PORT" --username="$DB_USER" \
        --format=c --blobs --verbose --file="$BACKUP_FILE" "$DB_NAME"
      
      echo "[$(date)] Backup completed: $BACKUP_FILE (size=$(stat -c%s "$BACKUP_FILE"))" >
          >
       "$LOG_FILE"
      
      # 保留策略
      find "$BACKUP_DIR" -name "${
      DB_NAME}
          _*.dump" -mtime +$RETENTION_DAYS -delete
      
    • 赋权
      chmod +x /usr/local/bin/pg_backup.sh
      
  • 步骤 2 配置 Cron 定时
    • 编辑当前用户的计划任务
      crontab -e
      
    • 示例:每天 02:00 执行并将输出追加到日志
      0 2 * * * /usr/local/bin/pg_backup.sh >
          >
           /var/log/pg_cron.log 2>
          &
          1
      
  • 说明
    • 如需备份全库(所有数据库),可用 pg_dumpall 替代 pg_dump,并相应调整脚本与保留策略。

三、方案二 在 pgAdmin 图形界面中生成命令并脚本化

  • 在 pgAdmin 左侧选择数据库 → 右键 Backup… → 选择格式(如 Custom)、输出路径、勾选需要的选项(如包含大对象) → 点击 Backup 后在 Processes 标签页查看完整命令行参数(如 pg_dump --host=localhost --port=5432 --username=postgres --format=c --blobs --verbose --file=…)。
  • 将该命令抽取为脚本(如上节),再用 Cron 定时执行,即可把“图形化一次备份”转化为“可重复的自动化任务”。

四、容器与特殊环境

  • Docker 场景
    • 方式 A(推荐):在宿主机定时执行脚本,通过 docker exec 调用容器内 pg_dump
      • 宿主机脚本(示例:/usr/local/bin/pg_back.sh
        #!/usr/bin/env bash
        set -Eeuo pipefail
        LOG=/var/log/pg_backup_docker.log
        TS=$(date +%F_%H-%M-%S)
        BACKUP_DIR=/backups
        mkdir -p "$BACKUP_DIR"
        echo "[$(date)] Start backup" >
            >
             "$LOG"
        docker exec pgadmin4 /bin/sh -c '
          export PGPASSWORD=postgres
          /usr/local/pgsql-16/pg_dump --host 127.0.0.1 --port 5432 \
            --username postgres --format=c --blobs --verbose \
            --file "/var/lib/pgadmin/storage/pga_user_example.com/backup/db_'"$TS"'.backup" postgres
        ' >
            >
             "$LOG" 2>
            &
            1
        echo "[$(date)] Done" >
            >
             "$LOG"
        
      • Cron
        0 2 * * * /usr/local/bin/pg_back.sh
        
    • 方式 B:把脚本放入 pgAdmin 容器内,宿主机 Cron 仅负责触发容器内脚本。
  • 安全建议
    • 避免在脚本中硬编码密码,优先使用 ~/.pgpass 或受控的 环境变量文件;若使用 PGPASSWORD,确保文件权限为 600 且仅对必要用户可读。

五、恢复、校验与运维要点

  • 恢复
    • Custom 格式:先创建空库(如 createdb),再用 pg_restore 恢复
      createdb -h localhost -p 5432 -U postgres mydb_restored
      pg_restore -h localhost -p 5432 -U postgres -d mydb_restored mydb_20250101.dump
      
    • 物理备份:将备份目录作为数据目录启动新实例,或使用 pg_basebackup 配套流程进行恢复。
  • 校验与监控
    • 定期做恢复演练(如每周一次在测试库恢复并校验关键表行数/校验和)。
    • 监控 备份文件大小变化、执行耗时、日志中的 ERROR;脚本中可加入失败告警(如 mail 或企业微信/钉钉机器人)。
  • 保留与存储
    • 结合业务 RPO/RTO 设置 RETENTION_DAYS(如 7 天),并执行定期清理
    • 重要备份建议同步到 离线或云端存储,提升容灾能力。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 如何利用pgAdmin进行Linux数据库备份计划
本文地址: https://pptw.com/jishu/770583.html
Linux pgAdmin的多数据库管理实践 Linux pgAdmin的图形化界面优势分析

游客 回复需填写必要信息