PostgreSQL教程:备份与恢复(物理备份、物理恢复)

物理备份(归档+物理)

这里需要基于前面的文件系统的备份和归档备份实现最终的操作

单独使用文件系统的方式,不推荐毕竟数据会丢失。

这里直接上PostgreSQL提供的pg_basebackup命令来实现。

pg_basebackup会做两个事情、

  • 会将内存中的脏数据落到磁盘中,然后将数据全部备份
  • 会将wal日志直接做归档,然后将归档也备走。

备份命令

查看一波pg_basebackup命令

image.png

先准备一个pg_basebackup的备份命令

# -D 指定备份文件的存储位置
# -Ft 备份文件打个包
# -Pv 输出备份的详细信息
# -U 用户名(要拥有备份的权限)
# -h ip地址  -p 端口号
# -R 复制写配置文件
pg_basebackup -D /pg_basebackup -Ft -Pv -Upostgres -h 192.168.11.32 -p 5432 -R

准备测试,走你~

备份操作演示

  • 提前准备出/pg_basebackup目录。记得将拥有者赋予postgres用户
    mkdir /pg_basebackup
    chown -R postgres. /pg_basebackup/
    
  • 给postgres用户提供replication的权限,修改pg_hba.conf,记得重启生效image.png
  • 执行备份
    pg_basebackup -D /pg_basebackup -Ft -Pv -Upostgres -h 192.168.11.32 -p 5432 -R
    
  • 需要输入postgres的密码,这里可以设置,重新备份。image.png
  • 执行备份image.pngimage.png

操作演示:物理恢复(归档+物理)

模拟数据库崩盘,先停止postgresql服务,然后直接删掉data目录下的全部内容

image.png

将之前备份的两个文件准备好,一个base.tar,一个pg_wal.tar

第一步:将base.tar中的内容,全部解压到 12/data 目录下

第二步:将pg_wal.tar中的内容,全部解压到 /archive 目录下

image.png

第三步:在postgresql.auto.conf文件中,指定归档文件的存储位置,以及恢复数据的方式image.png

第四步:启动postgresql服务

systemctl start postgresql-12

第五步:启动后,发现查询没问题,但是执行写操作时,出错,不让写。需要执行一个函数,取消这种恢复数据后的状态,才允许正常的执行写操作。

select pg_wal_replay_resume();

猜你喜欢

转载自blog.csdn.net/a772304419/article/details/132929671