是否可以向每晚重新创建的 RDS 实例提供"proxy"连接信息?



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

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

由于这个问题范围之外的原因,用读副本配置生产DB是不可能的,但是,是的,这将解决我的问题。这是…

如果每个夜晚我都是:

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

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

同样,如果有一个专用的读副本为分析数据库提供数据,那么这里就没有问题了。我会提供我的分析工具与读取副本的连接字符串信息一次,我会设置好。但是,由于我无法控制的原因,读取副本解决方案是不可能的。

所以我问:有没有Route53、ELB或其他的"AWS魔法";我可以使用给我的分析工具设置主机名&代理"以某种方式指向新的分析数据库(即使它每天晚上都在重新创建)?

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

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

但最一般的方式,将是设置EventBridge (EB)规则的API事件(CloudTrail trail所需),它将监听与创建代理(CreateDBProxy)相关的API事件。EB规则可以在CreateDBProxy事件响应中触发lambda函数,该函数将等待代理可用并自动更新记录。

最新更新