不同的rds实例和joinig两个表

res*_*hma 3 mysql join amazon-web-services amazon-rds

我有两个名为 user 和 user_posts 的表。这两个表在不同的亚马逊 rds 实例中。我想加入这两个表。是否可以使用laravel框架编写mysql join?提前致谢!

Mic*_*bot 5

这对于 RDS 是不可能的。

MySQL 有一个FEDERATED存储引擎,允许一台服务器访问另一台服务器上的表,但它在 RDS for MySQL 中被禁用。

Amazon RDS for MySQL 目前不支持联合存储引擎。

—  http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MySQL.html


澄清

当使用FEDERATED存储引擎允许一个服务器上的数据表出现在另一台服务器上时——从而允许从实际上没有数据持久副本的服务器查询数据——只有这样做的服务器没有实际数据需要实际支持FEDERATED引擎

这意味着虽然 RDS 实例无法使用 访问其他服务器的数据FEDERATED但非 RDS MySQL 服务器可以使用FEDERATED非 RDS 服务器上配置的表访问 RDS 实例上的数据,该表配置为从中检索数据RDS。

这是因为——从具有实际数据的服务器的角度来看——来自服务器的连接使用FEDERATED看起来像一个普通的客户端连接。数据是使用普通查询检索的,因此FEDERATED不需要在链接的那一侧提供支持。

这意味着运行 MySQL 的非 RDS 服务器可以使用FEDERATED表访问一个或多个 RDS 服务器上的数据。

我经常使用它来生成连接两个(在一种情况下,三个)不同 RDS 实例上的表的报告。

FEDERATED 表确实有局限性——它们在获取远程数据的服务器看来与 MyISAM 表非常相似,因为它们不支持事务处理,并且任何会导致全表扫描的查询实际上都将获取整个表每个查询的远程表,这显然会失控......因此必须谨慎使用它们。

这对于所描述的场景可能没有用,因为它需要添加第三台服务器,但是当 RDS 构成数据库基础架构的一部分时,它是一种不完全排除的解决方案。当使用 RDS/MariaDB 和 RDS/Aurora for MySQL 时,上述信息也适用。