リレーショナルデータベース - Amazon RDS と Aurora で実現する高可用性データベース

Amazon RDS と Aurora を活用したリレーショナルデータベースの構築方法を解説します。

マネージドリレーショナルデータベースの価値

リレーショナルデータベースは企業の基幹システムの中核を担い、トランザクション処理、データ整合性、複雑なクエリ処理において不可欠な存在です。Amazon RDS はフルマネージドのリレーショナルデータベースサービスで、MySQL、PostgreSQL、MariaDB、Oracle、SQL Server の 5 つのエンジンをサポートします。オンプレミスでのデータベース運用では、ハードウェアの調達、OS のインストール、DB エンジンのセットアップ、パッチ適用、バックアップ、レプリケーション構成など膨大な運用タスクが発生し、DBA の工数の約 70% がこれらの定型作業に費やされるとされています。RDS はこれらの運用タスクを AWS が管理し、DBA はスキーマ設計やクエリ最適化などの付加価値の高い業務に集中できます。自動バックアップは最大 35 日間の保持期間で、任意の時点への復元 (PITR) が 5 分間隔で可能です。

この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。

Amazon Aurora の革新的アーキテクチャ

Amazon Aurora は AWS が独自に開発したクラウドネイティブなリレーショナルデータベースで、MySQL の最大 5 倍、PostgreSQL の最大 3 倍のスループットを実現します。Aurora のストレージは 3 つのアベイラビリティゾーンにまたがる 6 つのコピーに自動的にレプリケートされ、最大 128 TB まで自動拡張します。この分散ストレージアーキテクチャにより、ストレージの事前プロビジョニングが不要で、使用した分だけの課金となります。Aurora は最大 15 のリードレプリカをサポートし、レプリケーション遅延は通常 20 ミリ秒未満です。フェイルオーバーは 30 秒以内に完了し、アプリケーションの可用性を最大化します。以下は RDS for PostgreSQL インスタンスを作成する CLI コマンドの例です。 aws rds create-db-instance \ --db-instance-identifier my-postgres-db \ --db-instance-class db.r6g.large \ --engine postgres \ --engine-version 15.4 \ --master-username admin \ --master-user-password MySecurePassword123 \ --allocated-storage 100 \ --multi-az \ --storage-encrypted

Aurora Serverless v2 によるサーバーレスデータベース

Aurora Serverless v2 は、ワークロードの需要に応じてデータベースのキャパシティを自動的にスケールするサーバーレスオプションです。0.5 ACU (Aurora Capacity Unit) から最大 256 ACU まで、0.5 ACU 単位の細かい粒度でスケールし、需要の変動に即座に対応します。開発環境やテスト環境では、アイドル時のコストを最小限に抑えつつ、負荷テスト時には自動的にスケールアップします。Aurora Serverless v2 はプロビジョンドインスタンスと同一クラスタ内で混在でき、読み取りワークロードをサーバーレスのリードレプリカに分散させるハイブリッド構成も可能です。オンプレミスのデータベースでは、ピーク時に合わせたハードウェアを常時稼働させる必要があり、平均利用率が 20-30% にとどまることも珍しくありません。Aurora Serverless v2 は使用した ACU 秒単位の課金で、リソースの無駄を最小化します。

グローバル展開と災害対策

Aurora Global Database は、1 つのプライマリリージョンと最大 5 つのセカンダリリージョンにまたがるグローバルなデータベースクラスタを構築できます。セカンダリリージョンへのレプリケーション遅延は通常 1 秒未満で、リージョン障害時のフェイルオーバーは 1 分以内に完了します。これにより、RPO (目標復旧時点) 1 秒未満、RTO (目標復旧時間) 1 分未満の災害対策を実現できます。RDS のマルチ AZ 配置は、プライマリインスタンスの障害時にスタンバイインスタンスへ自動フェイルオーバーし、アプリケーションのダウンタイムを最小化します。RDS Proxy はデータベース接続のプーリングと管理を行い、Lambda などのサーバーレスアプリケーションからの大量の短命な接続を効率的に処理します。オンプレミスで同等の災害対策を構築するには、遠隔地のデータセンターとの専用線接続、レプリケーションソフトウェアの導入、フェイルオーバー手順の整備が必要で、数億円規模の投資が求められます。

さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。

まとめ - リレーショナルデータベースの最適な選択

Amazon RDS と Aurora は、リレーショナルデータベースの運用を根本的に変革するサービスです。DBA の運用負荷を大幅に削減しつつ、エンタープライズグレードの可用性と耐久性を確保できます。

AWS の優位点

  • Aurora は MySQL の最大 5 倍、PostgreSQL の最大 3 倍のスループットを実現し、6 コピーの分散ストレージで最大 128 TB まで自動拡張する
  • RDS Proxy はデータベース接続のプーリングを提供し、Lambda からの大量の短命な接続を効率的に処理する
  • 自動バックアップは最大 35 日間保持され、5 分間隔のポイントインタイムリカバリで DBA の運用負荷を大幅に削減する
  • Aurora Serverless v2 はワークロードに応じて 0.5 ACU から最大 256 ACU まで自動スケールし、アイドル時のコストを最小化する
  • Multi-AZ DB クラスターは 3 つの AZ にまたがるリードレプリカを配置し、フェイルオーバー時間を 35 秒以下に短縮する

同じテーマの記事

Amazon Aurora Global Database で実現するマルチリージョン構成 - DR とグローバル読み取りの設計 Aurora Global Database によるクロスリージョンレプリケーション、1 秒未満の RPO での DR 設計、グローバル読み取りの活用法を解説します。 Cassandra 互換データベース - Amazon Keyspaces で実現するサーバーレスな分散データベース Amazon Keyspaces (for Apache Cassandra) と DynamoDB を活用した分散データベースの設計・運用方法を解説します。 Amazon DynamoDB Accelerator (DAX) でマイクロ秒レイテンシを実現 - インメモリキャッシュの設計 DAX によるDynamoDB の読み取り高速化、キャッシュ戦略、クラスタ設計を解説します。 ドキュメントデータベース活用 - Amazon DocumentDB と DynamoDB で実現する柔軟なデータモデリング Amazon DocumentDB と DynamoDB を活用したドキュメントデータベースの設計・運用方法を解説します。 Amazon DocumentDB の Change Streams で構築するイベント駆動アーキテクチャ DocumentDB の Change Streams による変更データキャプチャ、Lambda トリガーとの統合、リアルタイムデータ同期パターンを解説します。 Amazon DocumentDB で MongoDB ワークロードをマネージドに運用 - ドキュメントモデルとクエリ設計 DocumentDB による MongoDB 互換データベースの運用、インデックス設計、グローバルクラスターの活用を解説します。 Amazon DocumentDB で運用する MongoDB 互換データベース - 設計パターンとスケーリング DocumentDB の MongoDB 互換性、インスタンスクラスの選定、Elastic Clusters によるシャーディング、バックアップ戦略を解説します。 Amazon DynamoDB のテーブル設計パターン - シングルテーブル設計と GSI の活用 DynamoDB のパーティションキー設計、シングルテーブルデザイン、GSI によるアクセスパターンの実現を解説します。 DynamoDB Global Tables でマルチリージョンデータベースを構築 - アクティブ-アクティブレプリケーション Global Tables によるマルチリージョンレプリケーション、コンフリクト解決、DR 設計を解説します。 Amazon ElastiCache のキャッシュ設計 - Redis と Memcached の選定とキャッシュ戦略 ElastiCache の Redis と Memcached の選定基準、Lazy Loading・Write-Through のキャッシュ戦略、Serverless モードの活用法を解説します。 グラフデータベース - Amazon Neptune で実現する高度な関係性データの分析と活用 Amazon Neptune によるグラフデータベースの構築と、複雑な関係性データの分析手法を解説します。ソーシャルネットワーク、不正検知、ナレッジグラフなど、グラフモデルが威力を発揮するユースケースと設計パターンを紹介します。 Amazon Keyspaces で運用する Apache Cassandra 互換データベース - サーバーレスで始める広域分散DB Amazon Keyspaces の Cassandra 互換性、オンデマンドとプロビジョンドのキャパシティ選定、パーティションキー設計を解説します。 Amazon Keyspaces で Cassandra ワークロードをマネージドに運用 - CQL 互換とサーバーレス Keyspaces による Cassandra 互換データベースの運用、CQL の活用、オンデマンドキャパシティの設計を解説します。 台帳データベース - Amazon QLDB で実現する改ざん不可能なデータ記録と監査証跡 Amazon QLDB (Quantum Ledger Database) による改ざん不可能な台帳データベースの構築と、DynamoDB との組み合わせによるハイブリッドデータアーキテクチャを解説します。金融取引、規制コンプライアンス、サプライチェーンでの活用パターンを紹介します。 Amazon Managed Blockchain で構築するプライベートブロックチェーン - Hyperledger Fabric の運用 Managed Blockchain による Hyperledger Fabric ネットワークの構築、チェーンコードの開発、メンバー管理とガバナンスを解説します。 Amazon MemoryDB for Redis - 耐久性を備えたインメモリデータベースの設計と活用 MemoryDB の Multi-AZ 耐久性、ElastiCache との使い分け、プライマリデータベースとしての活用パターンを解説します。 Amazon MemoryDB for Redis で耐久性のあるインメモリデータベースを構築 - キャッシュとプライマリデータストアの統合 MemoryDB による Redis 互換インメモリデータベースの運用、耐久性の仕組み、ElastiCache との使い分けを解説します。 Amazon Neptune でグラフデータベースを構築 - ナレッジグラフとソーシャルネットワーク分析 Neptune によるグラフデータベースの構築、Gremlin/SPARQL クエリ、Neptune Analytics の活用を解説します。 Amazon RDS で運用するマネージドデータベース - Multi-AZ とリードレプリカの設計 RDS による Multi-AZ 構成、リードレプリカ、自動バックアップ、Performance Insights の活用を解説します。 Redis 互換データベース - Amazon MemoryDB と ElastiCache で実現する高速インメモリデータストア Amazon MemoryDB for Redis による耐久性のあるインメモリデータベースと、Amazon ElastiCache によるキャッシュレイヤーの構築方法を解説します。マイクロ秒レベルの読み取りレイテンシと高可用性を両立する設計パターンを紹介します。 サーバーレスデータベース - DynamoDB で実現するスケーラブルなデータ管理 AWS DynamoDB を中心としたサーバーレスデータベースの活用方法を解説します。 時系列データベース - Amazon Timestream で IoT・メトリクスデータを効率管理する Amazon Timestream を使った時系列データの管理・クエリ・分析を解説。IoT センサーデータやアプリケーションメトリクスの格納、自動階層化ストレージ、SQL クエリによる分析を紹介します。 Amazon Timestream で構築する時系列データ分析基盤 - IoT データの格納とクエリ最適化 Timestream による時系列データの格納、メモリストアとマグネティックストアの使い分け、SQL クエリの最適化を解説します。