博客
关于我
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/

    你可能感兴趣的文章
    pyqt5教程11:绘制外观
    查看>>
    pyqt5教程12:拖放功能
    查看>>
    pyqt5教程13:客户定制组件
    查看>>
    pyqt5教程6:信号和事件
    查看>>
    PyQt5教程7:布局Layout管理
    查看>>
    pyqt5教程8:对话框
    查看>>
    pyqt5教程9:Widgets组件
    查看>>
    PyQt5教程——组件(7)
    查看>>
    pyqt5计时器的使用
    查看>>
    PyQt5设计桌面程序步骤
    查看>>
    PyQt5:检查鼠标是否在Enter-Event中按住
    查看>>
    pyqt出现“Ui_Dialog has no attribute “show””
    查看>>
    PyQt:如何使用QAxWidget引用发送参数
    查看>>
    PyQt:我可以制作一个带有图标和文本的工具栏按钮吗?
    查看>>
    pyscopg2:是否可以在循环中动态添加 %s
    查看>>
    Pyserial 缓冲区的填充速度比我读的快
    查看>>
    PySpark - 在数据框中求和一列并将结果返回为 int
    查看>>
    pyspark On Yarn 的模块依赖问题
    查看>>
    PySpeech(Python)-转录MP3文件?
    查看>>
    Pyspider WebUI 未授权访问致远程代码执行漏洞复现
    查看>>