PostgreSQL的pg_basebackup备份恢复详解

  92e51f8da82eb53c00517e0d4c29f522.png

备份

pg_basebackup -D /tmp/pg_backup/ -Ft -Pv -U postgres -h 1.15.57.253 -p5432 -R
  • -D 空文件,没有该目录会自动创建

  • F  格式话

  • t 打包为tar包

  • Pv 显示备份的详细过程

  • -u 用户

  • -p 端口

备份报错:

a34c911707b878e4fb033b38604144c2.png

在配置文件pg_hba.conf增加一行:

4cb68641c87f07d915a3285bf2b42fc1.png

备份流程:

de0e8ff725ce57ad0d2c6435adc9eab7.png

pg_basebackup: initiating base backup, waiting for checkpoint to complete   #开始基础备份,等待检查点完成
pg_basebackup: checkpoint completed                                         #已完成检查点
pg_basebackup: write-ahead log start point: 0/2000028 on timeline 1         #预写日志起始于时间点: 0/2000028, 基于时间轴1
pg_basebackup: starting background WAL receiver                             #启动后台 WAL 接收进程
pg_basebackup: created temporary replication slot "pg_basebackup_24583"     #已创建临时复制槽"pg_basebackup_24583"
24598/24598 kB (100%), 1/1 tablespace                                                    
pg_basebackup: write-ahead log end point: 0/2000138                         #预写日志结束点: 0/2000138
pg_basebackup: waiting for background process to finish streaming ...       #等待后台进程结束流操作...
pg_basebackup: syncing data to disk ...                                     #同步数据到磁盘
pg_basebackup: base backup completed                                        #基础备份已完成

备份出来的结果:

88a01a7e023147e9ed16ba4a61e6b7f4.png

恢复

[root@VM-0-9-centos data]# rm -rf /pgdata/12/data[root@VM-0-9-centos data]# rm -rf /pgdata/12/archtar -xvf base.tar -C /pgdata/12/datatar -xvf pg_wal.tar -C /pgdata/12/arch

vi postgresql.auto.conf 追加:

restore_command = 'cp /pgdata/12/arch/%f %p'
recovery_target = 'immediate'
touch /pgdata/12/recovery.signal

恢复成功:

976715c93ebf9b17131508c3bf0e8d46.png

注意:data目录需要有700权限。

61c1e0023d53ba2459e6477473edf03a.png

需要进行操作:

select pg_wal_replay_resume();

恢复到某个时刻

假设每天凌晨有一次全备,某天中午14点误删数据,如何恢复?

恢复原理:

全备+归档+在线redo

模拟测试:

周一数据:

7fad68a79e29e590f62ac5d2375b559c.png

全备:

b883e69c238d51560a636cbd490e21ba.png

周二数据:

9dcf5250dbcaa8f29a96022f66e981d1.png

此时14点,误删了库:

bd3e84cde3417dbb965c64a48bcf5fb2.png

切一下归档:

383494c001991ed2a4debcfb07d16065.png

fdbe5d1dc6558ab98f907320a62c7fb9.png

d785bdc672f19122f8e997ac9598a14d.png

关库:

pg_ctl -D /pgdata/12/data stop -mi

删除数据:

rm -rf /pgdata/12/data/*

将备份解压到数据目录:

tar -xvf base.tar -C /pgdata/12/data

使用pg_waldump查看需要恢复到哪个事务之前。

恢复到502之前:

f488cb1a571789a16c6a86a245243cba.png

编辑配置文件:

postgresql.auto.conf追加:

restore_command = 'cp /pgdata/12/arch/%f %p'recovery_target_xid='501'

启动数据库:

pg_ctl -D /pgdata/12/data -l logfile start

将恢复停止:

select pg_wal_replay_resume();

恢复成功:

eea303c15b944b57ded918e7e0e2c0dd.png


墨天轮原文链接:https://www.modb.pro/db/193193?sjhy复制链接至浏览器或点击文末阅读原文查看)

关于作者

陈家睿,云和恩墨MySQL技术顾问,拥有MySQL OCP、PGCE、OBCA、SCDP证书,长期服务于电信行业。现负责公司MySQL数据库、分布式数据库运维方面的技术工作;热衷于运维故障处理、备份恢复、升级迁移、性能优化的学习与分享。

END

推荐阅读:331页!2021年度数据库技术年刊

推荐下载:2021数据技术嘉年华视频回放及PPT下载


2021数据技术嘉年华50余个PPT下载、视频回放已上传墨天轮平台,可在“数据和云”公众号回复关键词“2021DTC”获得!

你知道吗?我们的视频号里已经发布了很多精彩的内容,快去看看吧!↓↓↓

点击下图查看更多 ↓

8254ad695980f67c8c81090c0acda5ef.png

8c582f04fc81e9637e28592b4eb49c77.png

9c9e09c4cfba29d9ab9474f796882c51.png

云和恩墨大讲堂 | 一个分享交流的地方

长按,识别二维码,加入万人交流社群

请备注:云和恩墨大讲堂

  点个“在看” 

你的喜欢会被看到❤

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值