pg的备份与恢复

备份场景

  • 删除大量生产环境的过期数据,在删除前进行备份处理
  • 执行定时备份脚本任务

恢复场景

  • 介质损坏
  • 人为的误操作
  • 系统漏洞或恶意黑客攻击
  • 导数数据错误或损坏的程序bug
  • 需求变更

备份恢复的两个评价指标:

  • RTO(recovery time objective):恢复时间目标,指从故障发生开始到业务系统恢复服务所需的时间
  • RPO(recovery point objective):恢复点目标,指故障发生后可以容忍丢失多少数据

物理备份工具:pg_basebackup

pg_basebackup:属于物理备份,也经常用来搭流复制环境

语法:pg_basebackup -h host -p port -U replica_user_name -D backup_path [,option]

example: pg_basebackup -h 172.16.0.105 -p 5432 -U replica -Fp -R -Xs -Pv -D /data/pg_basebackup/

常用参数

-h:数据库IP地址
-U:用户名
-D:–pgdata=directory,接收备份目录
-F:–format=p/t,指定输出格式,支持原样输出p或者压缩格式输出tar
-r:–max-rate=rate,最大传输率KB/s
-R:–write-recovery-conf,备份后写recovery.conf文件
-s:–slot=slotname,使用复制槽
-T:–tablespace-mapping=olddir=newdir,使用newdir代替olddir
-x:–xlog,备份开始后,启动另一个流复制连接从主库接受wal
-X:–xlog-method=fetch|stream --xlogdir=xlogdir
-z:–gzip
-z:–compress=0-9
-l:–label=lable:设置backup label

  • fetch模式:串行备份,wal_keep_segments需要足够大去保存日志文件
  • stream模式:并行备份,wal_max_sender必须保证不小于2,该模式不支持将数据和日志以流的方式输出到标准输出

相关参数配置

-- 查看wal级别,minial,replica,logical,开启wal归档至少设置为replica
select * from pg_settings where name like '%level%';

-- 开启数据归档,重新数据库配置生效
alter system set wal_level = 'replica';

-- 修改archive_mode模式,on,off,always,需要重启数据库才能生效
alter system archive_mode = 'on';

相关参数说明
wal_level:控制多少信息被写入WAL日志中。

  • minimal:只写入从崩溃或者立即关机中恢复所需要的信息
  • archive:增加WAL归档所需的日志
  • hot_standby:在备用服务器删增加运行制度查询所需的信息

archive_command用于定义归档日志的shell命令

  • 修改archive_command命令,可热加载,不需要重启数据库
  • %p:将要归档的wal文件的包含完成路径信息的文件名,是xlog的相对路径
  • %f:不包含路径信息的wal文件的文件名

遇到错误
pg_basebackup: could not connect to server: FATAL: no pg_hba.conf entry for replication connection from host “172.16.0.105”, user “postgres”

错误的原因:在pg_hba.conf的配置上并没有开放replication的通信权限

解决办法:在pg_hba.conf下开放对应的权限
#replication privilege.
host replication replica 172.16.0.105/32 md5

猜你喜欢

转载自blog.csdn.net/weixin_44375561/article/details/121699658