mysql - 在 Amazon RDS 中使用列入黑名单的架构运行跨区域查询
问题描述
我有一组分布在多个区域的 Amazon RDS 实例。每个 RDS 实例都有一组相似的表,前缀是可预测的。
例如,我拥有欧洲西部 50 所大学和美国东部 50 所大学的数据库,每所大学有一个数据库(两个地区的 100 个数据库)。我想获得所有数据库中学生的总数。我们在 DynamoDB 表中列出了各个数据库的连接配置。
目前,如果我们想在整个数据集上运行 MySQL 查询,我们将通过以下步骤来完成:
- 从 DynamoDB 获取所有连接配置
- 检查黑名单以通过通配符过滤掉架构
- 循环遍历应用程序脚本中的每个连接配置(在本例中:PHP)
- 将 MySQL 查询分别提交到每个数据库,并将结果写入 CSV。
这个工作流程很慢,因为它是单线程的,并且很难让它优雅地失败。它在白名单方面具有一定的灵活性,但需要更改代码以允许任何类型的非刚性查询。
我研究了以下内容并遇到了一些问题:
- Amazon Athena、Aurora、Glue 和 Redshift 都做了类似的事情,但似乎没有强大的跨区域能力。
- MySQL 中的联合表可以跨区域工作,但每次添加新数据库时都需要更多的维护和配置。
- 对于我们的数据集的大小,将所有内容复制到 S3 存储桶或 Datalake 中,由于数据传输成本的原因,成本过高。
是否有工作流程或技术可以让我克服单线程、应用程序驱动方法的缺点?
解决方案
推荐阅读
- angular - 子组件未以角度加载
- python - map_async 影响执行计划的工作人员内部的 Python 错误
- r - Sprintf showing few arguments
- r - 如何评估嵌套列表中的表达式
- ruby-on-rails - 如何将字符串中的每个 2 个单词拆分为数组 - Ruby?
- jdbc - kafka-connect-jdbc 新连接器阻止旧连接器
- ios - 在 ios 上更改 expo-camera 或 RNCamera 的纵横比
- c# - 如何将 webelement 的页面位置转换为它的屏幕位置?
- c++ - 在 C++ 中的本地 _RecordsetPtr 中复制记录集
- python - 不同的查询集,相同的结果