ちょっと話題の記事

Aurora MySQLとAurora PostgreSQLの機能を比較してみた(2022年4月版)

Aurora MySQL vs Aurora PostgreSQL、機能が充実しているのはどっちだ!?選手権
2022.04.20

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

みなさん、こんにちは。

AWS事業本部コンサルティング部の芦沢(@ashi_ssan)です。

突然ですが、Aurora MySQLとAurora PostgeSQLってどのように違うか、あなたは説明できますか?

もちろん、DBエンジンが異なる、というところは明らかです。

ですが、実はAuroraとしての機能に差分があることを知っていましたか? 私は知りませんでした。

この辺りについて、調べる機会があったのでまとめてみました。

本エントリは、以下の記事を読んでいいなと思って執筆を開始したという経緯があり、フォーマットを参考にして作成しました。かずえさんありがとうございます!!

比較してみた

本エントリは2022年4月19日現在のAurora MySQLおよびAurora PostgreSQLの機能について、AWS公式ドキュメント(Auroraユーザーガイド)を参考にまとめたものです。
今後のアップデートによって、本エントリで紹介している内容と実際にサポートされている機能に齟齬が発生する可能性があることをご承知おきください。

以下、Aurora MySQLとAurora PostgreSQLについて、Auroraとして提供されている各機能について対応しているのか(○)、対応していないのか(×)をそれぞれまとめた表を作成しました。

兎にも角にもみていただくことが早いと思いますので、ご覧ください。

MySQL PostgreSQL 参考URL
Aurora Serverless v1 公式ドキュメント
Aurora Serverless v2 (プレビュー) × 公式ドキュメント
Aurora Global Database 公式ドキュメント
RDS Proxy 公式ドキュメント
パラメータグループ 公式ドキュメント
Performance Insights 公式ドキュメント
拡張モニタリング 公式ドキュメント
Amazon CloudWatch Logsログの発行 公式ドキュメント(MySQL)
公式ドキュメント(PostgreSQL)
データベースアクティビティストリーミング
(同期モード)
× 公式ドキュメント
データベースアクティビティストリーミング
(非同期モード)
公式ドキュメント
バックトラック × 公式ドキュメント(MySQL)
障害挿入クエリ 公式ドキュメント(MySQL)
公式ドキュメント(PostgreSQL)
高速DDL × 公式ドキュメント(MySQL)
DB クラスターのボリュームステータスの表示 公式ドキュメント(MySQL)
公式ドキュメント(PostgreSQL)
パラレルクエリ × 公式ドキュメント(MySQL)
高度な監査 × 公式ドキュメント(MySQL)
Auroraレプリカ 公式ドキュメント(MySQL)
公式ドキュメント(PostgreSQL)
クロスリージョンリードレプリカ × 公式ドキュメント(MySQL)
公式ドキュメント(PostgreSQL)
マルチマスタークラスター × 公式ドキュメント(MySQL)
S3からのデータのインポート 公式ドキュメント(MySQL)
公式ドキュメント(PostgreSQL)
S3へのデータのエクスポート 公式ドキュメント(MySQL)
公式ドキュメント(PostgreSQL)
DB クラスターからの Lambda 関数の呼び出し 公式ドキュメント(MySQL)
公式ドキュメント(PostgreSQL)
機械学習サービスとの統合 公式ドキュメント(MySQL)
Aurora MySQL ラボモード × 公式ドキュメント(MySQL)
Kerberos 認証 × 公式ドキュメント(PostgreSQL)
Babelfish × 公式ドキュメント(PostgreSQL)
待機イベントを使用したチューニング 公式ドキュメント(MySQL)
公式ドキュメント(PostgreSQL)
スレッド状態を使用したチューニング × 公式ドキュメント(MySQL)


ここまでで、本エントリでまとめたかったことが9割5分終わりました。

他にもこんなところに機能差異があるよ!や、ここ間違っているぞ!などの情報があればTwitter(@ashi_ssan)のリプライもしくはDM等でぜひフィードバックいただきたいです。

いくつかピックアップして説明してみる

ここまでで終わり、ではなんとなく味気ないエントリになってしまうと思ったので、機能に差があった箇所について個人的に気になった機能を数点ピックアップしてみました。

バックトラック

バックトラックは指定した時間までDBクラスターを「巻き戻す」機能です。

サービスの中断を最小限に抑えながらのエラーの取り消し、数分で巻き戻し可能な迅速な実行などが可能なところに利点があります。

バックトラックの機能の概要について、以下のアップデートブログを参照ください。

そんなバックトラックですが、対応しているDBエンジンはMySQLのみで、かつ以下の対応リージョンやバージョンに制約があります。

  • アジアパシフィック (東京)の場合
    • Aurora MySQL 5.6
      • バージョン 5.6.10a
    • Aurora MySQL 5.7
      • バージョン 2.06 以降
    • Aurora MySQL 8.0
      • 非対応
  • アジアパシフィック (大阪)の場合
    • Aurora MySQL 5.6
      • バージョン 5.6.10a、バージョン 1.22 以降
    • Aurora MySQL 5.7
      • バージョン 2.07.3 以降
    • Aurora MySQL 8.0
      • 非対応

※東京リージョン、大阪リージョンのみを抜粋して記載しました。


Aurora MySQLでの復元系の機能は他に、スナップショット、ポイントインタイムリカバリがあります。

以下その違いがまとまったブログがありますので、気になる方はご覧ください。

クロスリージョンリードレプリカ

リードレプリカは、Aurora DB クラスター内の独立したエンドポイントで、作成することで読み取りオペレーションのスケーリングや可用性向上に貢献します。

画像引用元:20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Amazon RDS)


主題のクロスリージョンリードレプリカは、先述したリードレプリカをDBクラスターを作成したリージョンとは別のリージョンに作成することができる機能です。

画像引用元:別の AWS リージョンでのリードレプリカの作成

別リージョンにリードレプリカを作成することで、BCP対応としてリージョン障害時にリードレプリカをDBクラスターに昇格させることでダウンタイムを軽減することが可能で、DR(Disaster Recovery)要件も満たすことができます。


クロスリージョンリードレプリカに対応しているDBエンジンはMySQLのみで、PostgreSQLには対応しておりません(同一リージョンのリードレプリカはすべてのDBエンジンで使用可能です)

Aurora PostgreSQLでDR機能を実装したい場合はAuroraグローバルデータベースを使用する必要があります(2022年4月19日現在)

Babelfish

BabelFishは、Microsoft SQL ServerからAurora PostgreSQLへの移行を少量のコードの変更で行える、という機能です。

対応しているDBエンジンはPostgreSQLのみで、MySQLには対応しておりません。

Preview機能の発表は2020年のre:inventで行われました。発表時のブログはこちらです。

その後、2021年にGAされました。やってみたブログがこちらです。

まだ新しい機能なので、実際に試したことがある方は少ないかもしれません。Aurora MySQL対応などこれからのアップデートに期待ですね。

感想

DBエンジンによる機能差はもちろんなのですが、同じDBエンジンでもバージョンが異なると随分と機能の差分があるな、といった印象を持ちました。

AuroraへのDB移行を検討する際は、Auroraが多機能を持つサービスであるからこそDBエンジンやバージョン毎にどんな機能が使えるか?も意識しておきたいな、と思いました。

AWSマネージドサービスとしての恩恵を最大限活かすために、損(?)しないためにも最新のアップデート状況をしっかり押さえておきましょう。

最後に

今回は、Aurora MySQLとAurora PostgeSQLの機能の違いについてまとめてみました。

注記にあるように、本エントリでまとめた内容は今後のアップデートによって変更がある可能性がありますので、本番ワークロードの変更をする際には改めて最新のアップデート状況を調査いただくようにお願いします。

以上、AWS事業本部コンサルティング部の芦沢(@ashi_ssan)でした。