bucket-sort logo bucket-sort

プログラミングとインフラエンジニアリングの覚え書き

  • Posts
  • About
  • Contact
  1. Home
  2. All Posts
  3. RDS MySQLとAurora MySQLをまたいでJOINできるのか調べてみた

RDS MySQLとAurora MySQLをまたいでJOINできるのか調べてみた

Jan 9, 2026 MySQL , AWS bucket-sort

こんな質問をされたので調べました。

「RDS MySQL と Aurora MySQL にあるテーブルをまたいで、SQL の JOIN できる?」

まず現時点での結論らしきもの

いくつかのドキュメントや仕様を追っていく限り、

❌ RDS MySQL と Aurora MySQL をまたいで、SQL の JOIN を直接実行することはできないらしい

という理解に落ち着きました。

断定というより、「構造上そう設計されているようだ」という感じです。

なぜできないのか?(構造を追ってみる)

調べていくと、ポイントは MySQL の JOIN の仕組みにあるようです。

MySQL の JOIN は、

同一の mysqld プロセス内部で最適化され、実行される仕組み

になっているらしく、別サーバー上のテーブルを直接結合する構文自体が存在しないようです。

SQL 的には、

  • RDS MySQL = MySQL サーバーA
  • Aurora MySQL = MySQL サーバーB

という扱いになり、A と B をまたぐ JOIN 文は MySQL には用意されていない、という構造のようです。

「Aurora は分散だから、つながるのでは?」と思った件

Aurora は「分散ストレージ」とよく言われます。 なので「分散しているなら、別 DB とも JOIN できるのでは?」と一瞬考えました。

しかし調べていくと、

  • Aurora の分散は クラスタ内部のストレージ実装の話
  • 外部の MySQL と分散クエリをする仕組みではない

という理解に至りました。

どうやら Aurora は「分散SQLエンジン」ではなく、「分散ストレージ型の MySQL 互換エンジン」という位置づけのようです。

MySQL の FEDERATED Storage Engine という可能性

「MySQL には FEDERATED という機能があるらしい」という情報にもたどり着きました。

FEDERATED とは何か?

MySQL 公式ドキュメントによると、 FEDERATED Storage Engine は、リモート MySQL のテーブルをローカルテーブルのように扱える仕組みのようです。

MySQL :: MySQL 8.4 Reference Manual :: 18.8 The FEDERATED Storage Engine
https://dev.mysql.com/doc/refman/8.4/en/federated-storage-engine.html

イメージはこうです。

MySQL A
   |
   | (FEDERATED)
   |
MySQL B

MySQL A にリモート接続情報付きのテーブルを作ることで、MySQL B のテーブルを参照できるらしい。

理屈の上では、

SELECT *
FROM local_table
JOIN remote_table ON ...

のようなことも可能になる、という説明になっています。

「これならいけるのでは?」と思いました。

しかし、ここから状況が変わる

RDS MySQL ではサポートされていない

AWS 公式ドキュメントを見ると、はっきりとこう書かれています。

The Federated Storage Engine is currently not supported by Amazon RDS for MySQL.

MySQL feature support on Amazon RDS - Amazon Relational Database Service
https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.Concepts.FeatureSupport.html

つまり、RDS MySQL では使えないようです。

Aurora MySQL でも使えないらしい

AWS re:Post の回答でも、

Aurora MySQL doesn’t support federated storage engine.

と明記されています。

AWS Aurora MYSQL enabling Federated Server | AWS re:Post
https://repost.aws/questions/QUoc3mbvqOSOeglHkx5Y6PLw/aws-aurora-mysql-enabling-federated-server

どうやらマネージド環境では有効化できない設計になっているようです。

さらに気になった点

MySQL 公式のドキュメントを見ると、FEDERATED はデフォルトで有効ではなく、明示的に有効化しないと使えない構成になっているようです。

MySQL :: MySQL 8.4 Reference Manual :: 18.8 The FEDERATED Storage Engine
https://dev.mysql.com/doc/refman/8.4/en/federated-storage-engine.html

また、設計上は

  • ネットワーク越しに都度アクセス
  • トランザクション整合性が弱い
  • フェイルオーバーを考慮しない

といった性質もあるようで、本番用途として積極採用されているケースはあまり見かけません。

AWS Glue という別方向のアプローチ

「では AWS 側に横断 JOIN できる仕組みはないのか?」と探していくと、AWS Glue に行き当たりました。

AWS Glue とは

AWS 公式の説明では、Glue はフルマネージドの ETL(Extract, Transform, Load)サービスです。

What is AWS Glue? - AWS Glue
https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html

また、複数 VPC にまたがる DB へ接続して ETL を実行する構成も紹介されています。

Connect to and run ETL jobs across multiple VPCs using a dedicated AWS Glue VPC | AWS Big Data Blog
https://aws.amazon.com/blogs/big-data/connecting-to-and-running-etl-jobs-across-multiple-vpcs-using-a-dedicated-aws-glue-vpc/

Glue で RDS と Aurora を JOIN できるのか?

調べていくと、

✅ バッチ処理としてなら可能らしい

という理解になりました。

構成イメージはこうです。

RDS MySQL ─┐
           ├─ Glue が読み取る → Spark 上で JOIN → S3 / Redshift に出力
Aurora MySQL ─┘

Glue は内部で Spark を使い、

  • RDS
  • Aurora

それぞれからデータを読み込み、 Spark 上で JOIN して結果を書き出す、という流れのようです。

ただしこれは、

  • アプリが SELECT … JOIN … を直接実行する

という形ではなく、

  • ETL バッチとしてデータを統合する

という性格のものです。

Redshift の federated query という手もあるらしい

さらに調べると、Amazon Redshift には MySQL に対する federated query 機能があるようです。

Getting started with using federated queries to MySQL - Amazon Redshift
https://docs.aws.amazon.com/redshift/latest/dg/getting-started-federated-mysql.html

Redshift 側から RDS/Aurora の MySQL に接続し、外部スキーマとして扱える仕組みのようです。

これも用途としては、

  • 分析
  • 集計
  • DWH

寄りの機能で、オンライン業務処理の代替というよりは分析基盤向けに見えます。

ここまで調べて見えてきたこと

いろいろ追いかけた結果、どうやら構造としてはこういうことのようです。

  • MySQL の JOIN は同一 mysqld 内部の仕組み
  • RDS と Aurora は別インスタンス
  • FEDERATED は理論上可能だが、RDS/Aurora ではサポートされていない
  • Glue や Redshift ならバッチ分析用途では横断 JOIN が可能

つまり、

マネージドな RDS / Aurora 環境で、SQL だけで横断 JOIN する道は用意されていない

という理解に至りました。

今回の調査のまとめ(現時点の理解)

項目 状況
RDS ↔ Aurora を SQL で直接 JOIN できないらしい
MySQL FEDERATED リモート MySQL を参照できる仕組み
RDS MySQL FEDERATED 非対応(AWS公式)
Aurora MySQL FEDERATED 非対応(AWS回答)
AWS Glue バッチ JOIN は可能
Redshift federated query 分析用途では可能
MySQL RDS Aurora AWS Glue Redshift AWS
← MySQLでレコードの平均サイズを求める Aurora MySQLのメリットを整理してみた(RDS MySQLとの違い) →

Related Posts

  • Aurora MySQLのメリットを整理してみた(RDS MySQLとの違い) Jan 10, 2026
  • MySQL vs Auroraベンチマーク比較 (sysbench / db.t3.medium) Feb 12, 2026
  • MySQLでレコードをDELETE / DROPしたらストレージ使用量は減るのか Jan 11, 2026
  • MySQLでレコードの平均サイズを求める Jan 8, 2026

Table of Contents

  • まず現時点での結論らしきもの
  • なぜできないのか?(構造を追ってみる)
  • 「Aurora は分散だから、つながるのでは?」と思った件
  • MySQL の FEDERATED Storage Engine という可能性
  • FEDERATED とは何か?
  • しかし、ここから状況が変わる
    • RDS MySQL ではサポートされていない
    • Aurora MySQL でも使えないらしい
  • さらに気になった点
  • AWS Glue とは
  • Glue で RDS と Aurora を JOIN できるのか?

Recent Posts

  • Laravel の Event / Listener で Pub/Sub を実装する Apr 2, 2026
  • [C#] delegate と event の仕組みを整理する Apr 1, 2026
  • Pub/Sub パターンとは何か Mar 31, 2026
  • PHP/Laravel で値の状態を判定するヘルパ関数まとめ Mar 30, 2026
  • Filament の dehydrated メソッドとは何か Mar 29, 2026

Categories

  • AWS27
  • C#22
  • .NET20
  • Laravel16
  • Linux12
  • Apache8
  • MySQL8
  • PHP8
  • DynamoDB6
  • Nginx5
  • WordPress4
  • インフラ4
  • Hugo3
  • セキュリティ3
  • .NET Framework1
  • Aurora1
  • Filament1
  • Git1
  • SQS1

Tags

  • AWS
  • C#
  • .NET
  • Laravel
  • PHP
  • MySQL
  • セキュリティ
  • Linux
  • Apache
  • Code Snippet
  • DynamoDB
  • NoSQL
  • PHP-FPM
  • RDS
  • DoS
  • Nginx
  • Windows
  • WordPress
  • パフォーマンス
  • 監視
  • Amazon Linux 2023
  • CMS
  • Docker
  • Ipset
  • Iptables
  • OPCache
  • Webサーバー
  • 認可
  • Aurora
  • Blade
Powered by Hugo & Explore Theme.