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 MySQLFEDERATED 非対応(AWS公式)
Aurora MySQLFEDERATED 非対応(AWS回答)
AWS Glueバッチ JOIN は可能
Redshift federated query分析用途では可能
MySQL RDS Aurora AWS Glue Redshift AWS
← MySQLでレコードの平均サイズを求める Aurora MySQLのメリットを整理してみた(RDS MySQLとの違い) →

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

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

  • [WPF] XAML の構文を理解する: マークアップ拡張 Aug 28, 2026
  • [WPF] XAML の構文を理解する: 添付プロパティ Aug 27, 2026
  • [WPF] XAML の構文を理解する: プロパティ要素構文 Aug 26, 2026
  • [WPF] XAML の構文を理解する: 要素、属性、型変換 Aug 25, 2026
  • [WPF] XAML の構文を理解する: クラスとメンバーの見え方 Aug 24, 2026

  • C#170
  • .NET169
  • AWS27
  • Entity Framework Core24
  • Laravel16
  • Linux15
  • MySQL9
  • Apache8
  • PHP8
  • Data Access6
  • DynamoDB6
  • セキュリティ6
  • Nginx5
  • WordPress4
  • インフラ4
  • テスト4
  • Hugo3
  • .NET Framework1
  • Aurora1
  • Diagnostics1

  • C#
  • .NET
  • Entity Framework Core
  • AWS
  • Laravel
  • コレクション
  • PHP
  • セキュリティ
  • MySQL
  • WPF
  • Linux
  • パフォーマンス
  • LINQ
  • Apache
  • XAML
  • SQL Server
  • System.Collections.Generic
  • デリゲート
  • リフレクション
  • ADO.NET
  • Code Snippet
  • DbContext
  • DynamoDB
  • NoSQL
  • PHP-FPM
  • RDS
  • System.Collections
  • Windows
  • メタデータ
  • メモリ管理
  • CIL
  • DoS
  • Nginx
  • WordPress
  • アセンブリ
  • ラムダ式
  • 監視
  • 設計
  • Amazon Linux 2023
  • Delegate
  • Docker
  • IDisposable
  • Ipset
  • Iptables
  • LINQ to Objects
  • Migration
  • OPCache
  • Pointer
  • Reflection
  • System.Collections.Specialized
Powered by Hugo & Explore Theme.