amazon-web-services - 可以向每晚重新创建的 RDS 实例提供“代理”连接信息吗?
问题描述
我有一个生产数据库(AWS RDS MySQL 实例),我的应用程序与之交互并收集各种数据。
我被要求创建此生产数据库的夜间快照,然后使用该快照创建一个新的数据库实例(从快照恢复),该实例将用作分析数据库,几个分析工具将连接到它并运行分析/报告反对。
由于此问题范围之外的原因,无法使用只读副本配置生产数据库,但是是的,这将解决我遇到的问题。哪个是...
如果每晚我都是:
- 删除现有的分析数据库
- 创建生产数据库的快照
- 创建一个新的分析数据库
- 使用最新快照恢复新的分析数据库
...然后每天晚上分析工具都需要更新它们的连接信息,以便它们可以连接到新实例,这将变得很麻烦。用户名和密码以及数据库名称将始终相同(每晚),但主机信息将更改,因为它始终是一个新的 RDS 实例。
同样,如果有一个专用的只读副本为分析数据库提供数据,那么这里就不会有问题。我会一次性向我的分析工具提供只读副本的连接字符串信息,然后一切就绪。但同样,由于我无法控制的原因,无法使用只读副本解决方案。
所以我问:是否有任何 Route53、ELB 或其他“ AWS 魔法”我可以用来给我的分析工具一个设置的主机名“代理”,它以某种方式指向新的分析数据库(即使它每次都重新创建夜晚)?
解决方案
我认为解决您的问题的一种方法是在与您的 VPC 关联的 Route53 中创建私有托管区域(PHZ)。使用 PHZ,您可以为您的代理创建别名记录,例如proxy.private
. 因此,您可以使用proxy.private
RDS 代理创建的默认 url 代替。
当然,由于您每天都创建新代理,因此必须更新 PHZ 中的记录,以便proxy.private
指向新的代理 url。PHZ 中记录的更新将取决于您每天设置新代理的方式(使用 CloudForamtion、完全手动、lambda 函数......)。
但最通用的方法是为 API 事件(需要 CloudTrail 跟踪)设置 EventBridge (EB) 规则,该规则将侦听与创建代理 ( CreateDBProxy
) 相关的 API 事件。EB 规则可以在响应CreateDBProxy
事件时触发 lambda 函数,该事件将等待代理可用并自动更新记录。
推荐阅读
- c# - GoDaddy API - 域名单价值
- python - Python中意外的小数位数
- react-native - 将 react-native 升级到最新版本 0.61.5 后无法安装 pod
- python - 将 qcut 应用于具有用户定义的百分位值的数据框列
- java - 用 Selenium 和 2Captcha (JAVA) 解决图片验证码
- r - 在单独的表 R 中查找和计数字符串出现到新列
- javascript - fetch API 采用的第二个参数究竟是什么?
- jenkins - 集成 2 个 Jenkins 环境
- java - 为什么不使用click参数(Spring boot和vaadin)
- c# - 有没有办法在 C# 中打开 .msg 文件?