作者 | 吴守阳
审校 | 重楼
目录
1、概述
2、主要模式
3、回复步骤介绍
4、前置条件
5、基础备份
6、操作示例
基于recovery_target_xid恢复
基于recovery_target_name恢复
基于recovery_target_lsn恢复
基于recovery_target_time恢复
7、注意事项
8、总结
概述
PostgreSQL 的点时间恢复(PITR,Point-In-Time Recovery)是一种强大的恢复机制,能够让用户将数据库恢复到特定的时间点,从而有效应对数据丢失或损坏的情况。这种机制在处理误操作(如数据删除、意外更改)时尤其重要,用户可以通过将数据库回滚到误操作发生之前的状态,确保数据的完整性和一致性。PITR 通过结合定期备份和持续的事务日志(WAL)归档,使得用户能够在发生故障时精确地选择恢复的时间点,从而最大限度地减少数据损失,并为数据库管理提供灵活性和可靠性。
主要模式
1. 恢复到特定时间点(recovery_target_time)
这种模式允许用户指定一个时间点,数据库将恢复到那个时刻的状态。
2.恢复到特定 LSN(recovery_target_lsn)
LSN 是 PostgreSQL 中的另一种标识方式,表示 WAL 日志中的一个特定位置。
3. 恢复到某个标签(recovery_target_name)
PostgreSQL 允许用户使用标签(标记)来执行恢复.
4.恢复到特定事务 ID(recovery_target_xid)
用户还可以根据特定的事务 ID(XID)进行恢复。
恢复步骤介绍
作为数据库DBA要定期巡查数据备份情况,当意识到数据或表被误删后,方便利用备份数据读取运行库的归档数据进行重放。
步骤1:基础备份
步骤2:模拟误操作,确定要重放到的节点
步骤3:切换wal日志
步骤4:修改端口,配置参数
步骤5:touch recovery.signal --启动重放模式
步骤6:启动数据库,常看表数据
步骤7:数据迁移至主库
步骤8:删除备份库
前置条件
基础备份
操作示例
1、基于recovery_target_xid恢复
修改备份库配置文件:
启动备份库:
验证:
当前数据库为只读状态,通过下面命令开启读写
2、基于recovery_target_name恢复
修改配置参数:
启动备份库:
3、基于recovery_target_lsn恢复
修改配置文件:
启动备份库:
4、基于recovery_target_time恢复
修改配置文件:
启动备份库:
注意事项
- 备份与归档:要实现有效的 PITR,必须在使用之前定期进行完整备份,同时确保 WAL 日志归档(可用 archive_mode 和 archive_command 配置进行设置)。
- 测试恢复流程:定期对恢复流程进行测试,以确保在出现数据丢失或损坏时能够快速恢复。
总结
PostgreSQL 的 PITR 提供了一种灵活的方式来恢复数据库,能够根据用户的需求选择特定的恢复模式。通过使用时间点、事务 ID 或 LSN,用户可以有效地管理和恢复数据,减少因误操作或故障造成的损失。
作者介绍
吴守阳,51CTO社区编辑,拥有8年DBA工作经验,熟练管理MySQL、Redis、MongoDB等开源数据库。精通性能优化、备份恢复和高可用性架构设计。善于故障排除和自动化运维,保障系统稳定可靠。具备良好的团队合作和沟通能力,致力于为企业提供高效可靠的数据库解决方案。