首页 > 解决方案 > 可以向每晚重新创建的 RDS 实例提供“代理”连接信息吗?

问题描述

我有一个生产数据库(AWS RDS MySQL 实例),我的应用程序与之交互并收集各种数据。

我被要求创建此生产数据库的夜间快照,然后使用该快照创建一个新的数据库实例(从快照恢复),该实例将用作分析数据库,几个分析工具将连接到它并运行分析/报告反对。

由于此问题范围之外的原因,无法使用只读副本配置生产数据库,但是是的,这将解决我遇到的问题。哪个是...

如果每晚我都是:

  1. 删除现有的分析数据库
  2. 创建生产数据库的快照
  3. 创建一个新的分析数据库
  4. 使用最新快照恢复新的分析数据库

...然后每天晚上分析工具都需要更新它们的连接信息,以便它们可以连接到新实例,这将变得很麻烦。用户名和密码以及数据库名称将始终相同(每晚),但主机信息将更改,因为它始终是一个新的 RDS 实例。

同样,如果有一个专用的只读副本为分析数据库提供数据,那么这里就不会有问题。我会一次性向我的分析工具提供只读副本的连接字符串信息,然后一切就绪。但同样,由于我无法控制的原因,无法使用只读副本解决方案。

所以我问:是否有任何 Route53、ELB 或其他“ AWS 魔法”我可以用来给我的分析工具一个设置的主机名“代理”,它以某种方式指向新的分析数据库(即使它每次都重新创建夜晚)?

标签: amazon-web-servicesamazon-rdsamazon-route53amazon-elb

解决方案


我认为解决您的问题的一种方法是在与您的 VPC 关联的 Route53 中创建私有托管区域(PHZ)。使用 PHZ,您可以为您的代理创建别名记录,例如proxy.private. 因此,您可以使用proxy.privateRDS 代理创建的默认 url 代替。

当然,由于您每天都创建新代理,因此必须更新 PHZ 中的记录,以便proxy.private指向新的代理 url。PHZ 中记录的更新将取决于您每天设置新代理的方式(使用 CloudForamtion、完全手动、lambda 函数......)。

但最通用的方法是为 API 事件(需要 CloudTrail 跟踪)设置 EventBridge (EB) 规则,该规则将侦听与创建代理 ( CreateDBProxy) 相关的 API 事件。EB 规则可以在响应CreateDBProxy事件时触发 lambda 函数,该事件将等待代理可用并自动更新记录。


推荐阅读