如何在批处理过程中使用AWS/RDS切换数据库并避免停机? [英] How to switch databases using AWS/RDS on a batch process and avoid downtime?
本文介绍了如何在批处理过程中使用AWS/RDS切换数据库并避免停机?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在AWS/EC2/RDS上,管理这样的情况会是什么好做法,既不允许应用程序停机,又能够回滚到以前的版本,当然,如果批处理过程中发生任何错误,也不会切换到新版本?
RDS
我会考虑使用推荐答案快照。您将拥有一个可写的RDS"主"实例(或黄金映像,如果您愿意的话),并且您将拥有一个从中进行查询的刷新的只读RDS实例。
示例流程可能如下所示:
- 确保您在托管区域(启用了vPC中的DNS解析)中设置了CNAME别名记录(通过路由53),以指向您当前的只读RDS实例(指向您在RDS控制台中看到的名称)-TTL,比方说5-60秒
- 对主服务器执行ETL/Load
- 执行所需的任何验证活动
- RDS主实例快照
- 从主快照启动新的只读RDS实例
- 将CNAME别名记录更改为指向新的只读RDS实例
- 当所有APP数据库客户端都已故障转移(见下文)时,终止旧的只读RDS实例
- 可选stop the master RDS instance to save cost-直到下一次加载
您也可以自动执行此操作。一种选择是代码管线。
您的"回滚"能力取决于您将快照保留了多少天。要执行回滚,您需要从给定的快照创建一个RDS实例并更改CNAME。 您的其他选项可能使用RDS Read Replica。但我不确定您是否可以在加载期间停止并(重新)启动PostgreSQL的复制过程-就像MySQL一样。我还怀疑,赶上来的复制可能会导致头痛(也许某些DDL语句也不能优雅地或按预期进行复制)。这篇关于如何在批处理过程中使用AWS/RDS切换数据库并避免停机?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文