AWSに戻る

Amazon Aurora

Amazon Auroraとは

Amazon Auroraは、AWSが開発したクラウドネイティブのリレーショナルデータベースエンジンで、MySQLおよびPostgreSQLと互換性があります。従来のデータベースの速度と可用性を、オープンソースデータベースのシンプルさとコスト効率の良さと組み合わせるように設計されています。Auroraは、標準のMySQLより最大5倍、標準のPostgreSQLより最大3倍のスループットを提供し、商用データベースの信頼性と可用性を1/10のコストで実現します。

Amazon Auroraの主な特徴

Amazon Auroraのアーキテクチャ

Amazon Auroraは、従来のデータベースとは異なる独自のアーキテクチャを採用しています:

ストレージアーキテクチャ

Auroraのストレージアーキテクチャ

クライアント → Aurora DBインスタンス → 分散ストレージレイヤー
                                    ↓
                    AZ1、AZ2、AZ3にまたがる6つのストレージノード
        

レプリケーションアーキテクチャ

Amazon Auroraの互換性

Amazon Auroraは、以下の2つの主要なデータベースエンジンと互換性があります:

互換性 説明 ユースケース
Aurora MySQL MySQL 5.7および8.0と互換性があり、標準のMySQLより最大5倍の性能を提供 MySQLを使用している既存のアプリケーション、高性能が必要なウェブアプリケーション
Aurora PostgreSQL PostgreSQL 11、12、13、14と互換性があり、標準のPostgreSQLより最大3倍の性能を提供 PostgreSQLを使用している既存のアプリケーション、エンタープライズアプリケーション

互換性の注意点

Aurora MySQLとAurora PostgreSQLは、それぞれのオープンソースエンジンと高い互換性を持っていますが、一部の機能や拡張機能には違いがあります。詳細はAWSのドキュメントを参照してください。

Amazon Auroraのデプロイオプション

Amazon Auroraには、様々なユースケースに対応するための複数のデプロイオプションがあります:

プロビジョンドクラスター

固定サイズのインスタンスを使用する従来のデプロイモデルです。予測可能なワークロードに適しています。

プロビジョンドクラスターの作成(AWS CLI)

aws rds create-db-cluster \
    --db-cluster-identifier my-aurora-cluster \
    --engine aurora-mysql \
    --engine-version 5.7.mysql_aurora.2.10.2 \
    --master-username admin \
    --master-user-password secret99 \
    --db-subnet-group-name my-db-subnet \
    --vpc-security-group-ids sg-0123456789abcdef0

Aurora Serverless

需要に応じて自動的にスケールするオンデマンドの自動スケーリングデプロイモデルです。変動するワークロードや予測が難しいワークロードに適しています。

Serverlessクラスターの作成(AWS CLI)

aws rds create-db-cluster \
    --db-cluster-identifier my-serverless-cluster \
    --engine aurora-mysql \
    --engine-mode serverless \
    --master-username admin \
    --master-user-password secret99 \
    --scaling-configuration MinCapacity=1,MaxCapacity=16,AutoPause=true,SecondsUntilAutoPause=3600

Aurora Global Database

複数のAWSリージョンにまたがるデータベースをデプロイするためのオプションです。プライマリリージョンでの書き込みと、最大5つのセカンダリリージョンでの低レイテンシー読み取りを提供します。

グローバルデータベースの作成(AWS CLI)

# プライマリリージョンでクラスターを作成
aws rds create-global-cluster \
    --global-cluster-identifier my-global-cluster \
    --source-db-cluster-identifier arn:aws:rds:us-east-1:123456789012:cluster:my-aurora-cluster

# セカンダリリージョンにクラスターを追加
aws rds create-db-cluster \
    --db-cluster-identifier my-secondary-cluster \
    --engine aurora-mysql \
    --global-cluster-identifier my-global-cluster \
    --region us-west-2

Aurora Multi-Master

複数のインスタンスが同時に書き込み操作を処理できるクラスター構成です。単一の書き込みインスタンスに障害が発生した場合でも、高可用性を確保します。

Amazon Auroraのインスタンスタイプ

Aurora DBインスタンスには、様々なワークロードに対応するための複数のインスタンスタイプがあります:

インスタンスファミリー 説明 ユースケース
T(バーストパフォーマンス) ベースラインパフォーマンスとバースト能力を提供する低コストインスタンス 開発/テスト環境、小規模アプリケーション
R(メモリ最適化) メモリを多く使用するワークロード向けに最適化されたインスタンス 高性能データベース、インメモリデータベース
X(メモリ超最適化) 大規模なインメモリアプリケーション向けの高メモリインスタンス 大規模なインメモリデータベース、ビッグデータ処理
I(I/O最適化) 高速ストレージとI/Oパフォーマンスを提供するインスタンス I/O集約型のワークロード

Amazon Auroraの高可用性と耐障害性

Auroraは、高可用性と耐障害性を実現するために以下の機能を提供しています:

Amazon Auroraのパフォーマンス最適化

Auroraのパフォーマンスを最適化するためのベストプラクティス:

Amazon Auroraのセキュリティ

Auroraは、データベースのセキュリティを確保するための多層防御アプローチを提供します:

ネットワークセキュリティ

アクセス管理

暗号化

暗号化されたAuroraクラスターの作成

aws rds create-db-cluster \
    --db-cluster-identifier my-encrypted-cluster \
    --engine aurora-mysql \
    --master-username admin \
    --master-user-password secret99 \
    --storage-encrypted \
    --kms-key-id arn:aws:kms:us-east-1:123456789012:key/abcd1234-ef56-gh78-ij90-klmn1234pqrs

Amazon Auroraの料金モデル

Auroraの料金は、以下の要素に基づいています:

Aurora Serverlessの料金

Aurora Serverlessは、使用したACU(Aurora Capacity Unit)時間に基づいて課金されます。ACUは、コンピューティングとメモリの容量を表す単位です。データベースがアクティブでない場合は、自動的に一時停止し、ストレージに対してのみ課金されます。

Amazon Auroraの使用方法

Auroraは、AWS Management Console、AWS CLI、AWS SDKs、またはインフラストラクチャ as コード(IaC)ツールを使用して利用できます。

Auroraクラスターの作成

AWS CLIを使用したAurora MySQLクラスターの作成

aws rds create-db-cluster \
    --db-cluster-identifier my-aurora-cluster \
    --engine aurora-mysql \
    --engine-version 5.7.mysql_aurora.2.10.2 \
    --master-username admin \
    --master-user-password secret99 \
    --db-subnet-group-name my-db-subnet \
    --vpc-security-group-ids sg-0123456789abcdef0

クラスター用のDBインスタンスの作成

aws rds create-db-instance \
    --db-instance-identifier my-aurora-instance \
    --db-cluster-identifier my-aurora-cluster \
    --engine aurora-mysql \
    --db-instance-class db.r5.large

リードレプリカの追加

リードレプリカの作成

aws rds create-db-instance \
    --db-instance-identifier my-aurora-replica \
    --db-cluster-identifier my-aurora-cluster \
    --engine aurora-mysql \
    --db-instance-class db.r5.large

バックトラックの使用

バックトラック対応クラスターの作成

aws rds create-db-cluster \
    --db-cluster-identifier my-backtrack-cluster \
    --engine aurora-mysql \
    --engine-version 5.7.mysql_aurora.2.10.2 \
    --master-username admin \
    --master-user-password secret99 \
    --backtrack-window 86400

特定の時点へのバックトラック

aws rds backtrack-db-cluster \
    --db-cluster-identifier my-backtrack-cluster \
    --backtrack-to 2023-01-15T00:00:00Z

Amazon Auroraのユースケース

Auroraは以下のようなユースケースに適しています:

Amazon Auroraと他のデータベースサービスの比較

サービス 特徴 ユースケース
Amazon Aurora 高性能、高可用性、自動スケーリング、MySQLおよびPostgreSQLとの互換性 高性能が必要なリレーショナルデータベースワークロード
Amazon RDS 複数のエンジン(MySQL、PostgreSQL、Oracle、SQL Server、MariaDB)をサポート、マネージドサービス 様々なリレーショナルデータベースエンジンを使用するアプリケーション
Amazon DynamoDB フルマネージドのNoSQLデータベース、無制限のスケーラビリティ キーバリューおよびドキュメントデータモデル、高スケーラビリティが必要なアプリケーション
Amazon Redshift ペタバイト規模のデータウェアハウス、列指向ストレージ データウェアハウスとビジネスインテリジェンス

Amazon Auroraのベストプラクティス

まとめ

Amazon Auroraは、AWSが開発したクラウドネイティブのリレーショナルデータベースエンジンで、MySQLおよびPostgreSQLと互換性があります。分散型のストレージアーキテクチャ、高性能、高可用性、自動スケーリングなどの特徴を持ち、従来のデータベースよりも優れたパフォーマンスと信頼性を提供します。

Auroraの主な利点は以下の通りです:

Auroraは、高性能が必要なアプリケーション、高可用性が必要なミッションクリティカルなアプリケーション、変動するワークロード、グローバルアプリケーション、MySQLまたはPostgreSQLからの移行など、様々なユースケースに適しています。適切なデプロイオプションとインスタンスタイプを選択し、ベストプラクティスを適用することで、Auroraの利点を最大限に活用することができます。