博客
关于我
PG备份恢复(二)
阅读量:664 次
发布时间:2019-03-15

本文共 1840 字,大约阅读时间需要 6 分钟。

PostgreSQL 物理备份与恢复指南

1. 冷备(Physical Backup)

冷备是将数据库停止后,通过物理拷贝PGDATA目录完成的备份操作。其优点是简单易行,但需注意:

缺点:为了保证数据一致性,必须停止数据库。

2. 热备(Hot Backup)

2.1 快照备份(Snapshot Backup)

通过服务器的快照功能(文件系统或块设备级别)实现备份,确保数据一致性。

2.2 点时间恢复(PITR - Point-in-Time Recover)

基于WAL日志实现的恢复机制,记录数据库所有变更操作。PITR通过WAL日志恢复至指定时间点,确保数据一致性。

2.3 PG的热备方案

  • 数据文件在线拷贝:无法保证一致性。
  • WAL日志备份:确保一致性。
  • 完整备份:需结合数据文件和WAL日志备份。

3. pg_hba.conf配置

pg_hba.conf用于配置数据库认证信息,支持以下参数:

3.1 Type

  • local:Unix-domain socket。
  • host:SSL/TCP socket。
  • hostssl:必须使用SSL。
  • hostnossl:非SSL TCP socket。

3.2 Database

  • 可选值:all、sameuser、samerole、replication或具体数据库名。
  • “all”不包括“replication”,需单独规则。

3.3 User

  • 可选值:all或指定用户。
  • 多用户支持逗号分隔,可引用外部文件。

3.4 Address

  • 主机名或IP掩码,如0.0.0.0/0表示所有主机。

3.5 Method

  • 密码策略:trust、reject、md5、password等。

4. WAL日志备份

4.1 归档方式

  • WAL日志归档:总是落后一个日志,通过cp、scp等实现。
  • 流复制:同步或异步模式,准实时备份。

4.2 常用参数

  • wal_level = replica:启用归档。
  • archive_mode = on:开启归档。
  • archive_command:自定义归档命令。

4.3 配置示例

# 修改pg_data.confwal_level = replicationarchive_mode = onarchive_command = 'cp %p /data/pgsql12/archive/%f &'# 重启数据库pg_ctl -D /data/pgsql12/data stoppg_ctl -D /data/pgsql12/data start

5. pg_basebackup 工具

5.1 使用方法

  • 语法pg_basebackup [OPTIONS]...
  • 重要参数
    • -D:备份目录。
    • -F:备份格式(默认p,可选t)。
    • -X:WAL日志传输方式(推荐stream)。

5.2 常用命令示例

# 主从复制搭建pg_basebackup -h 192.168.0.175 -p5432 -D /data/pgsql12/data/ -U repl -P -v -R -X stream -C -S pgstandby_slotname

5.3 恢复命令

# 基于时间点恢复pg_ctl -D /data/pgsql12/data restore -l /data/pgsql12/logs/logfile --start-time=2020-09-05 17:34:21# 基于LSN恢复pg_ctl -D /data/pgsql12/data restore --start-lsn=0/100201A8

6. 恢复示例

6.1 基于时间点恢复

  • 停止数据库并复制基础备份。
  • 写入部分数据。
  • 模拟故障,停止数据库。
  • 恢复至指定时间点或LSN。
  • 6.2 常见错误处理

    • 错误示例
      ERROR: replication slot "pgstandby1" does not exist
    • 解决方法:检查复制槽名称是否正确,确保主从架构配置无误。

    7. 数据验证

    • 恢复完成后,验证数据完整性,检查表结构和数据是否正确。

    8. 关键点总结

    • 冷备:适合非关键时机。
    • 热备:支持高可用架构。
    • WAL日志:确保数据一致性。
    • pg_basebackup:支持主从备份与恢复。
    • 恢复策略:根据具体场景选择时间点或LSN恢复。

    通过以上方法,可以实现PostgreSQL数据库的高效备份与恢复,确保数据安全与一致性。

    转载地址:http://zgxmz.baihongyu.com/

    你可能感兴趣的文章
    OpenCV与AI深度学习 | 基于OpenCV实现模糊检测 / 自动对焦
    查看>>
    OpenCV与AI深度学习 | 基于Python和OpenCV将图像转为ASCII艺术效果
    查看>>
    OpenCV与AI深度学习 | 基于PyTorch实现Faster RCNN目标检测
    查看>>
    OpenCV与AI深度学习 | 基于PyTorch语义分割实现洪水识别(数据集 + 源码)
    查看>>
    OpenCV与AI深度学习 | 基于YOLO11的车体部件检测与分割
    查看>>
    OpenCV与AI深度学习 | 基于YoloV11自定义数据集实现车辆事故检测(有源码,建议收藏!)
    查看>>
    OpenCV与AI深度学习 | 基于YOLOv8 + BotSORT实现球员和足球检测与跟踪 (步骤 + 源码)
    查看>>
    OpenCV与AI深度学习 | 基于YOLOv8实现高级目标检测和区域计数
    查看>>
    VS2003 Front Page Server Extension
    查看>>
    OpenCV与AI深度学习 | 基于YOLOv8的停车对齐检测
    查看>>
    OpenCV与AI深度学习 | 基于YoloV8的药丸/片剂类型识别
    查看>>
    OpenCV与AI深度学习 | 基于YOLO和EasyOCR从视频中识别车牌
    查看>>
    OpenCV与AI深度学习 | 基于图像处理的火焰检测算法(颜色+边缘)
    查看>>
    OpenCV与AI深度学习 | 基于拉普拉斯金字塔实现图像融合(步骤 + 代码)
    查看>>
    OpenCV与AI深度学习 | 基于改进YOLOv8的景区行人检测算法
    查看>>
    OpenCV与AI深度学习 | 基于机器视觉的磁瓦表面缺陷检测方案
    查看>>
    OpenCV与AI深度学习 | 基于深度学习的轮胎缺陷检测系统
    查看>>
    OpenCV与AI深度学习 | 如何使用YOLO-World做目标检测
    查看>>
    OpenCV与AI深度学习 | 如何使用YOLOv9分割图像中的对象
    查看>>
    OpenCV与AI深度学习 | 如何使用YOLOv9检测图片和视频中的目标
    查看>>