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

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

文章目录

二、物理备份

2.1 冷备

物理冷备就是将数据库停止掉后,通过对PGDATA目录进行物理拷贝进行物理备份。该方式最大的缺点就是为保证数据一致性必须停止数据库。

2.2 热备

1、快照备份

通过对服务器进行快照备份,使用文件系统或者块设备级别的快照功能完成备份,保证数据为备份时刻的一致性。

2、PITR热备份(point-in-time-recover)

RITR的实现主要是基于PG数据库的WAL日志,数据库所有的变更操作都会记录在WAL日志中。在PG数据库中WAL日志可用于做崩溃恢复,当数据库宕机重启后,数据库定位最后一次checkpoint的位点,并通过WAL日志恢复checkpoint之后的所有变更操作,以便于数据库达到一个一致性状态。也正是基于此原理,PITR也是通过WAL日志来保障数据备份的一致性。

PG的物理热备主要分为两部分,第一部分是数据文件的在线拷贝,这部分也被称为基础备份,基础备份无法保证数据的一致性;第二部分是WAL日志的备份。基础备份 + WAL日志备份 才称得上PG数据库的一个完整的备份,才能保障备份数据库的一致性。

1)pg_hba.conf 文件

pg_hba.conf文件为pg的认证配置文件,无论是我们用户登录还是主从复制,都需要在该文件下填写相关的认证配置,保证可正常联通数据库。

pg_hba.conf主要由5个参数组成:Type(主机类型)、Database(数据库名)、User(用户名)、Address(IP地址和掩码)、 Method(加密方法)

  • Type

表示允许的连接方式。

"local"表示使用 Unix-domain socket 进行连接;

“host” 表示可以使用 ssl或者非ssl加密的 TCP/IP socket 进行连接;

“hostssl” 表示必须通过ssl加密的 TCP/IP socket 进行连接;

“hostnossl” 表示通过使用非ssl的 TCP/IP socket 进行连接。

  • Database

表示可以访问数据库信息,可以为 “all”, “sameuser”, “samerole”, “replication”,或者业务数据库名称;

“all"并不包括"replication”,若需要方通replication需要单独编写放通规则;

多个数据库使用逗号分隔

  • User

表示认证配置的数据库用户信息,可以为"all"也可以指定某个数据库用户;

多个用户授权可使用逗号分隔;

可引用外部文件中配置信息信息认证配置,@${filename}

  • Address

表示认证配置的主机IP信息,可以是一个主机名,也可以是IP+掩码;

0.0.0.0/0表示所有主机

  • Method

表示密码加密策略,可以设置为"trust", “reject”, “md5”, “password”, “scram-sha-256”, “gss”, “sspi”, “ident”, “peer”, “pam”, “ldap”, “radius” or “cert”;

password表示以明文方式发送密码;

2)wal日志备份

方式 特点
wal日志归档 总是落后一个wal日志,通过cp、scp等命令实现
流复制 主要有同步和异步两种模式,准实时备份,主从复制搭建基于此方式实现
  • wal日志归档配置
# 相关参数配置,修改后需要重启数据库# 归档目录需要对postgres进行授权$ vi postgresql.confwal_level = replica             # minimal, replica, or logicalarchive_mode = on               # enables archiving; off, on, or always                                # (change requires restart)archive_command = 'cp %p /data/pgsql12/archive/%f && echo %f >> /data/pgsql12/archive/archive.list'             # command to use to archive a logfile segment# 重启数据库$ psql -D /data/pgsql12/data stop$ psql -D /data/pgsql12/data start# 查看归档wal日志$ pwd/data/pgsql12/archive$ lltotal 16388-rw------- 1 postgres postgres 16777216 Sep  5 16:44 00000001000000000000000D-rw------- 1 postgres postgres       25 Sep  5 16:44 archive.list

3)pg_basebackup 工具

pg_basebackup工具必须通过 replication协议连接数据库