有时我们可能希望将数据库恢复到过去的某个特定点,这称为PITR(Point in Time Recovery)。
RDS for PostgreSQL
允许恢复到备份保留期内的任何时间点。这是通过将自动备份与事务日志结合使用来实现的,事务日志每 5 分钟上传到 S3。
RDS 会跟踪数据库的最新可恢复时间,我们可以使用CLI 查找此信息:
aws rds describe-db-instances \
--db-instance-identifier rds-pg-labs \
--region $AWSREGION \
--query 'DBInstances[0].LatestRestorableTime' \
--output text
我们可以使用以下命令将数据库恢复到我们在上一步中查找到的最新可恢复时间:
aws rds restore-db-instance-to-point-in-time \
--source-db-instance-identifier rds-pg-labs \
--target-db-instance-identifier rds-pg-labs-restore-latest \
--restore-time 2023-11-04T07:23:34+00:00
现在我们回到RDS控制台查看恢复的数据库:
现在我们将使用RDS 控制台将我们的数据库恢复到 30 分钟前。选择rds-pg-labs
数据库,选择Restore to point in time
:
在页面上,自定义恢复时间。输入新的数据库实例标识符(例如rds-pg-labs-earlier-restore
),将其余信息保留为默认值,然后单击Restore:
返回到数据库列表,看到正在创建的新实例:
上面创建了两个备份出来的数据库,实验完成后将它们删掉:
AWSREGION=`aws configure get region`
aws rds delete-db-instance \
--db-instance-identifier rds-pg-labs-earlier-restore \
--skip-final-snapshot \
--delete-automated-backups \
--region $AWSREGION
aws rds delete-db-instance \
--db-instance-identifier rds-pg-labs-restore-latest \
--skip-final-snapshot \
--delete-automated-backups \
--region $AWSREGION