我们最近将我们的数据库集群从自托管迁移到 Digital Ocean Managed Postgres。我们想将整个数据库回滚到最近的时间点。
备份最多可使用一周
根据文档,我们不能直接从备份中恢复数据库:
当您从备份恢复时,我们会创建集群主节点的新副本。您不能直接还原到主节点本身,因为这会为数据库创建替代时间线,从而在托管服务中引入不必要的复杂性。通过恢复到新的主节点,可以保留单个线性时间线历史。
当新集群恢复时,它是一个并行集群(见下图),似乎没有任何办法让它假设原始集群的连接参数。
我们可以看到的唯一方法是从新的并行集群中进行完全导出,然后删除原始数据库并从命令行导入。
这里还有其他选择吗?
更改每个应用程序的连接参数以在新的时间点指向新的数据库实例。
数据库端最快且复杂度最低的。添加转储和恢复可能会大大延长恢复时间。避免同一实例上的两个时间点的复杂性和混淆。可能会保留旧实例一段时间,以中止恢复。
应用程序端更复杂,可能需要配置或重新部署。可能不是微不足道的,虽然应该是可能的,如果说你要切换数据库提供者。
最后我恢复到另一个集群,然后在本地转储数据库并恢复它。不是最好的解决方案,但我看不到其他选择。
恢复到新集群
根据 DO 用户界面。
将数据库导出到本地
重新导入