openGauss之PITR恢复
一、PITR 介绍
PITR(point-in-time recovery)及时恢复,是基于全量的物理备份数据文件和已归档的 wal 日志进行数据恢复,可以将数据恢复到备份归档之后的任意时间点。 仅支持恢复到物理备份数据之后的某一时间点,仅主节点可以进行 PITR,备机需要全量 build 达成与主机数据同步
二、PITR 恢复流程介绍
0)进行物理全备 1)将原来的 wal 日志做备份 2)将物理备份的文件替换目标数据库目录 3)在数据库数据目录下创建恢复命令文件 recovery.conf,指定数据库恢复的程度 4)启动数据库 5)连接数据库,查看是否恢复到预期的状态 6)若已经恢复到预期的状态,使用指令 pg_xlog_replay_resume()使主节点向外提供服务.
recovery.conf 文件中相关恢复参数说明: restore_command = ‘cp /mnt/server/archivedir/%f %p’ 这个 SHELL 命令是获取 WAL 文件系列中已归档的 WAL 文件。字符串中的任何一个%f 是用归档检索中的文件名替换, 并且%p 是用服务器上的复制目的地的路径名替换。
archive_cleanup_command = ‘pg_archivecleanup /mnt/server/archivedir %r’ 在每次重启时会执行这个 shell 命令。 archive_cleanup_command 为清理备库不需要的归档 WAL 文件提供一个机制。 任何一个%r 由包含最新可用重启点的文件名代替。这是最早的文件,因此必须保留以允许恢复能够重新启动,因此所有早于%r 的文件可以安全的移除。
recovery_target_name = ‘restore_point_1’ 此参数声明还原到一个使用 pg_create_restore_point()创建的还原点
recovery_target_time = ‘2020-01-01 12:00:00’ 此参数声明还原到一个指定时间戳。
recovery_target_xid = ‘3000’ 这个参数声明还原到一个事务 ID。
recovery_target_lsn = ‘0/0FFFFFF’ 这个参数声明还原到日志的指定 LSN 点。
recovery_target_inclusive = true 声明是否在指定恢复目标(true)之后停止,或在这(false)之前停止。改声明仅支持恢复目标为 recovery_target_time、recovery_target_xid 和 recovery_target_lsn 的配置。
三、实践操作
1.环境介绍:
集群为一主一备,PITR 恢复操作我只在主节点上进行,此时主备都还在运行。 主库基本信息: 数据目录:/data/og1 系统日志:/var/log/omm/omm/pg_log/dn_6001/ xlog 备份目录:/backup_xlog 物理备份目录:/backup IP:10.0.0.100(外网),192.168.1.100(内网)
2.操作流程:
(1)使用 gs_basebackup 进行物理全备
[omm@OG1 ~]$ gs_basebackup -D /backup/ -p 15400 -X stream -F plain