AWS RDS MySQL及兼容MySQL的Aurora实现dblink跨实例访问方法咨询
结论
AWS RDS MySQL 及兼容 MySQL 版的 Aurora 均未内置与 Aurora PostgreSQL dblink 完全一致的原生扩展,但有多种官方支持的方案可实现跨实例访问的同等能力,具体可选方案如下:
可行实现方案
- FEDERATED 存储引擎(最接近 dblink 使用体验)
MySQL 原生支持的存储引擎,RDS MySQL 和 Aurora MySQL 均默认开放使用权限。你可以在本地实例创建映射到远程实例表的 FEDERATED 表,操作本地表即可直接读写远程实例数据,和 dblink 使用体验高度相似。
操作示例:- 执行命令确认引擎已开启:
SHOW ENGINES;,返回结果中 FEDERATED 行的 Support 列显示为 YES 即可使用 - 创建映射表示例:
适用场景:小数据量的跨实例增删改查操作,不需要修改业务代码。注意事项:需确保两个实例网络互通(安全组放通、同VPC或已配置VPC对等),大表全表扫描性能受网络延迟影响较大。CREATE TABLE local_remote_table ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(20) NOT NULL ) ENGINE=FEDERATED CONNECTION='mysql://remote_user:remote_pass@remote-instance-endpoint:3306/remote_db/remote_table'; - 执行命令确认引擎已开启:
- Aurora 集群跨实例副本方案
如果你使用的是 Aurora MySQL,可以通过创建跨集群只读副本、或者配置 Aurora 全局数据库的方式,实现跨区域/同区域不同集群之间的只读访问,不需要额外数据库配置,读性能远高于 FEDERATED 引擎,适合只读查询为主的场景。 - Lambda 代理访问方案
针对跨账号、跨服务的复杂跨实例访问需求,可以通过 Lambda 编写远程实例查询逻辑,Aurora MySQL 支持原生内置的lambda_sync/lambda_async函数直接调用 Lambda 获取结果,RDS MySQL 也可以通过自定义 UDF 实现同等能力,灵活度最高。 - 应用层双数据源方案
直接在业务应用中配置两个数据源分别连接本地和远程实例,所有跨实例的数据查询、合并逻辑在应用层实现,不需要对数据库做任何特殊配置,性能可控,调试成本最低,是生产环境最常用的方案。
内容的提问来源于stack exchange,提问作者Khoa
相关产品推荐
相关产品推荐

