如何在测试后快速重复将AWS RDS Aurora Postgres恢复至初始状态
针对AWS RDS Aurora Postgres 12.9快速恢复初始状态的解决方案
以下是几个满足你需求的方案,按恢复速度和易用性排序:
方案1:使用Aurora克隆功能(推荐)
Aurora的克隆特性基于增量存储技术,能在几分钟内创建出与初始状态一致的新实例,远快于传统快照恢复。
操作步骤
- 当数据库处于初始状态时,创建一个初始快照(或直接基于该实例创建克隆)。
- 日常操作使用克隆出的实例作为工作实例,进行数据插入/更新和分析。
- 需要恢复时:
- 停止所有指向工作实例的应用连接。
- 通过AWS控制台/CLI/SDK删除当前工作实例。
- 从初始快照或初始实例快速克隆新的工作实例,配置好相同的参数组、安全组等。
- 应用切换到新实例的端点继续使用。
优势
- 恢复速度快:通常2-5分钟即可完成实例创建和启动。
- 可重复执行:只要初始快照保留,就能无限次克隆。
- 支持多人访问:新实例完全独立,可正常接受多用户连接和操作。
注意事项
- 初始快照需确保是纯净的初始状态,后续不要修改它。
- 克隆实例的配置(CPU、内存、存储)要与原实例一致,避免性能差异。
方案2:PostgreSQL模板库+快速重建数据库
如果不想频繁创建/销毁实例,可以在同一个Aurora实例内利用PostgreSQL的模板库特性,快速重置数据库。
操作步骤
- 初始状态下,将目标数据库标记为模板库:
ALTER DATABASE initial_db IS_TEMPLATE = true; - 日常使用一个独立的工作数据库(比如
working_db)进行操作。 - 需要恢复时:
- 强制断开所有
working_db的连接:SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'working_db'; - 删除工作库并从模板重建:
DROP DATABASE IF EXISTS working_db; CREATE DATABASE working_db TEMPLATE initial_db;
- 强制断开所有
优势
- 无需实例级操作,恢复速度取决于数据量(小数据集几秒到几十秒,大数据集几分钟)。
- 节省额外实例的费用,复用同一个Aurora实例。
注意事项
- 模板库
initial_db必须禁止任何写入操作,确保始终处于初始状态。 - 多人访问时,需要让应用切换到重建后的
working_db,可配合配置中心实现自动切换。
方案3:Aurora只读副本快速提升主实例
通过维护一个始终处于初始状态的只读副本,需要恢复时直接将副本提升为新主实例。
操作步骤
- 初始状态下,创建一个Aurora只读副本,之后立即停止该副本的主实例同步(或创建后不再让主实例有写入,仅用另一个克隆实例作为工作主实例)。
- 日常使用工作主实例进行数据操作。
- 需要恢复时:
- 将只读副本提升为独立的主实例。
- 销毁原工作主实例,应用切换到新主实例的端点。
优势
- 提升副本为主实例的操作耗时短,通常几分钟内完成。
注意事项
- 必须确保只读副本始终保持初始状态,避免同步工作主实例的变更(可通过创建后立即断开同步,或定期从初始快照重新创建副本)。
内容的提问来源于stack exchange,提问作者Caio Henrique
相关产品推荐
相关产品推荐

