Amazon Relational Database Service (Amazon RDS) は、クラウド内でリレーショナルデータベースを簡単に設定、運用、スケーリングできるマネージドサービスです。ハードウェアのプロビジョニング、データベースのセットアップ、パッチ適用、バックアップなどの時間のかかる管理タスクを自動化しながら、コスト効率の高いリサイズ可能な容量を提供します。これにより、アプリケーション開発に集中できるようになります。Amazon RDSは、Amazon Aurora、PostgreSQL、MySQL、MariaDB、Oracle Database、SQL Serverなど、6つの主要なデータベースエンジンから選択できます。
Amazon RDSは以下のデータベースエンジンをサポートしています:
データベースエンジン | 説明 | ユースケース |
---|---|---|
Amazon Aurora | MySQLおよびPostgreSQLと互換性のあるAWS独自のリレーショナルデータベース。標準のMySQLより最大5倍、標準のPostgreSQLより最大3倍の性能を提供 | 高性能が必要なエンタープライズアプリケーション、SaaS製品、ウェブアプリケーション |
MySQL | 世界で最も広く使用されているオープンソースリレーショナルデータベース | ウェブサイト、ブログ、eコマース、多様なアプリケーション |
PostgreSQL | 高度な機能を持つ強力なオープンソースオブジェクトリレーショナルデータベース | 複雑なクエリ、地理空間データ、NoSQLのようなJSON機能が必要なアプリケーション |
MariaDB | MySQLから派生したコミュニティ開発のリレーショナルデータベース | MySQLと互換性が必要なアプリケーション、より新しい機能が必要な場合 |
Oracle | エンタープライズグレードの商用リレーショナルデータベース | エンタープライズアプリケーション、ビジネスクリティカルなワークロード |
Microsoft SQL Server | Microsoftの商用リレーショナルデータベース管理システム | Windowsベースのアプリケーション、.NETアプリケーション |
Amazon Auroraは、AWSが開発したクラウドネイティブのリレーショナルデータベースで、以下の特徴があります:
Amazon RDSには複数のデプロイオプションがあります:
単一のアベイラビリティゾーン内にデータベースインスタンスをデプロイします。開発、テスト環境、または非クリティカルなワークロードに適しています。
プライマリDBインスタンスと同期スタンバイレプリカを別のアベイラビリティゾーンにデプロイします。高可用性と耐障害性を提供し、本番環境に推奨されます。
aws rds create-db-instance \
--db-instance-identifier mydbinstance \
--db-instance-class db.m5.large \
--engine mysql \
--master-username admin \
--master-user-password secret99 \
--allocated-storage 100 \
--multi-az
プライマリDBインスタンスの読み取り専用コピーを作成します。読み取りトラフィックを分散させ、スケーラビリティを向上させます。最大15個のリードレプリカを作成できます。
aws rds create-db-instance-read-replica \
--db-instance-identifier mydbinstance-replica \
--source-db-instance-identifier mydbinstance
複数のAWSリージョンにまたがるデータベースをデプロイします。プライマリリージョンでの書き込みと、最大5つのセカンダリリージョンでの低レイテンシー読み取りを提供します。
Amazon Aurora Serverlessは、需要に応じて自動的にスケールするデータベースを提供します。アプリケーションの需要に基づいて容量を調整し、使用した分だけ支払います。
Amazon RDSは様々なワークロードに対応するために複数のインスタンスタイプを提供しています:
インスタンスファミリー | 説明 | ユースケース |
---|---|---|
T(バーストパフォーマンス) | ベースラインパフォーマンスとバースト能力を提供する低コストインスタンス | 開発/テスト環境、小規模アプリケーション、低トラフィックのブログやウェブサイト |
M(汎用) | コンピューティング、メモリ、ネットワークリソースのバランスが取れたインスタンス | 中小規模のデータベース、開発環境、テスト環境、本番環境 |
R(メモリ最適化) | メモリを多く使用するワークロード向けに最適化されたインスタンス | 高性能データベース、インメモリデータベース、リアルタイム分析 |
X(メモリ超最適化) | 大規模なインメモリアプリケーション向けの高メモリインスタンス | 大規模なインメモリデータベース、SAP HANA、ビッグデータ処理エンジン |
Z(メモリ最適化および高速ストレージ) | 高周波数のIntel Xeonプロセッサと高速ローカルストレージを備えたインスタンス | 高性能トランザクション処理、低レイテンシーが必要なアプリケーション |
Amazon RDSは3種類のストレージタイプを提供しています:
ストレージタイプ | 説明 | ユースケース |
---|---|---|
汎用SSD(gp2/gp3) | コスト効率の高いSSDストレージ。gp3はgp2の後継で、より柔軟なパフォーマンス設定が可能 | 開発/テスト環境、中小規模の本番データベース |
プロビジョンドIOPS SSD(io1/io2) | 高性能SSDストレージ。io2はio1の後継で、より高い耐久性を提供 | I/O集約型のワークロード、高トランザクションのOLTPシステム |
マグネティック(スタンダード) | レガシーストレージタイプ(新規デプロイメントには非推奨) | 低コストが最優先の非クリティカルワークロード |
aws rds create-db-instance \
--db-instance-identifier mydbinstance \
--db-instance-class db.m5.large \
--engine mysql \
--master-username admin \
--master-user-password secret99 \
--allocated-storage 100 \
--storage-type io1 \
--iops 3000
Amazon RDSは、AWS Management Console、AWS CLI、AWS SDKs、またはインフラストラクチャ as コード(IaC)ツールを使用して利用できます。
aws rds create-db-instance \
--db-instance-identifier mydbinstance \
--db-instance-class db.t3.micro \
--engine mysql \
--engine-version 8.0.28 \
--master-username admin \
--master-user-password secret99 \
--allocated-storage 20 \
--storage-type gp2 \
--vpc-security-group-ids sg-0123456789abcdef0 \
--db-subnet-group-name my-db-subnet-group \
--backup-retention-period 7 \
--port 3306 \
--multi-az \
--publicly-accessible \
--tags Key=Environment,Value=Production
mysql -h mydbinstance.abcdefghijkl.us-east-1.rds.amazonaws.com -P 3306 -u admin -p
psql -h mydbinstance.abcdefghijkl.us-east-1.rds.amazonaws.com -p 5432 -U admin -d postgres
aws rds create-db-snapshot \
--db-instance-identifier mydbinstance \
--db-snapshot-identifier mydbsnapshot
aws rds restore-db-instance-from-db-snapshot \
--db-instance-identifier mynewdbinstance \
--db-snapshot-identifier mydbsnapshot
aws rds restore-db-instance-to-point-in-time \
--source-db-instance-identifier mydbinstance \
--target-db-instance-identifier mynewdbinstance \
--restore-time 2023-01-15T00:00:00Z
aws rds create-db-parameter-group \
--db-parameter-group-name myparametergroup \
--db-parameter-group-family mysql8.0 \
--description "My custom parameter group"
aws rds modify-db-parameter-group \
--db-parameter-group-name myparametergroup \
--parameters "ParameterName=max_connections,ParameterValue=1000,ApplyMethod=immediate"
Amazon RDSは、データベースのセキュリティを確保するための多層防御アプローチを提供します:
# セキュリティグループの作成
aws ec2 create-security-group \
--group-name rds-security-group \
--description "Security group for RDS" \
--vpc-id vpc-0123456789abcdef0
# 特定のIPからのMySQLアクセスを許可
aws ec2 authorize-security-group-ingress \
--group-id sg-0123456789abcdef0 \
--protocol tcp \
--port 3306 \
--cidr 203.0.113.0/24
aws rds modify-db-instance \
--db-instance-identifier mydbinstance \
--enable-iam-database-authentication
aws rds create-db-instance \
--db-instance-identifier mydbinstance \
--db-instance-class db.t3.micro \
--engine mysql \
--master-username admin \
--master-user-password secret99 \
--allocated-storage 20 \
--storage-encrypted \
--kms-key-id arn:aws:kms:us-east-1:123456789012:key/abcd1234-ef56-gh78-ij90-klmn1234pqrs
Amazon RDSは、データベースのパフォーマンスと健全性を監視するための様々なツールを提供します:
CloudWatchは、RDSインスタンスのメトリクス(CPU使用率、メモリ使用率、ディスクI/O、接続数など)を収集し、アラームを設定して自動アクションをトリガーすることができます。
aws cloudwatch put-metric-alarm \
--alarm-name HighCPUUtilization \
--comparison-operator GreaterThanThreshold \
--evaluation-periods 2 \
--metric-name CPUUtilization \
--namespace AWS/RDS \
--period 300 \
--statistic Average \
--threshold 80 \
--alarm-actions arn:aws:sns:us-east-1:123456789012:my-topic \
--dimensions "Name=DBInstanceIdentifier,Value=mydbinstance"
拡張モニタリングは、RDSインスタンスのオペレーティングシステムのメトリクスをリアルタイムで提供します。これにより、データベースのパフォーマンスに影響を与える可能性のあるプロセスやスレッドを特定できます。
aws rds modify-db-instance \
--db-instance-identifier mydbinstance \
--monitoring-interval 30 \
--monitoring-role-arn arn:aws:iam::123456789012:role/rds-monitoring-role
Performance Insightsは、データベースのパフォーマンスを簡単に可視化し、パフォーマンスの問題を特定するためのツールです。データベースの負荷を分析し、待機イベント、SQLステートメント、ホスト、ユーザーによるフィルタリングが可能です。
aws rds modify-db-instance \
--db-instance-identifier mydbinstance \
--enable-performance-insights \
--performance-insights-retention-period 7
RDSは、データベースエンジンのログをCloudWatch Logsにエクスポートする機能を提供しています。これにより、ログの集中管理、検索、分析が可能になります。
aws rds modify-db-instance \
--db-instance-identifier mydbinstance \
--cloudwatch-logs-export-configuration '{"EnableLogTypes":["error","general","slowquery"]}'
ブルー/グリーンデプロイメントは、本番環境(ブルー環境)のコピーを作成し、新しい環境(グリーン環境)でアップグレードやスキーマ変更をテストした後、最小限のダウンタイムで切り替えることができる機能です。
マルチAZクラスターは、3つのアベイラビリティゾーンにわたるリードレプリカを持つ高可用性クラスターデプロイメントです。書き込みノードに障害が発生した場合、自動的にフェイルオーバーが行われます。
RDSプロキシは、データベース接続をプールし、共有し、安全に維持するフルマネージドの高可用性データベースプロキシです。アプリケーションのスケーラビリティを向上させ、データベースの障害に対する回復力を高めます。
aws rds create-db-proxy \
--db-proxy-name mydbproxy \
--engine-family MYSQL \
--auth '{
"AuthScheme": "SECRETS",
"SecretArn": "arn:aws:secretsmanager:us-east-1:123456789012:secret:mysecret",
"IAMAuth": "DISABLED"
}' \
--role-arn arn:aws:iam::123456789012:role/rds-proxy-role \
--vpc-subnet-ids subnet-0123456789abcdef0 subnet-0123456789abcdef1 \
--vpc-security-group-ids sg-0123456789abcdef0
RDSカスタムは、基盤となるデータベースとオペレーティングシステムへのアクセスを提供するマネージドデータベースサービスです。これにより、レガシーアプリケーションやカスタムアプリケーションに必要なカスタマイズが可能になります。
Amazon RDSのコストを最適化するための戦略:
Amazon RDSは以下のようなユースケースに適しています:
Amazon RDSは他のAWSサービスと統合して、より強力なソリューションを構築できます:
サービス | 統合の利点 |
---|---|
Amazon EC2 | アプリケーションサーバーとデータベースの統合 |
AWS Lambda | サーバーレスアプリケーションからのデータベースアクセス |
Amazon S3 | データのインポート/エクスポート、バックアップの保存 |
AWS DMS | データベース移行とレプリケーション |
Amazon CloudWatch | モニタリング、アラート、ログ管理 |
AWS Secrets Manager | データベース認証情報の安全な管理 |
AWS Backup | 一元管理されたバックアップソリューション |
aws dms create-replication-task \
--replication-task-identifier my-migration-task \
--source-endpoint-arn arn:aws:dms:us-east-1:123456789012:endpoint:ABCDEFGHIJKLMNOPQRSTUVWXYZ \
--target-endpoint-arn arn:aws:dms:us-east-1:123456789012:endpoint:ZYXWVUTSRQPONMLKJIHGFEDCBA \
--replication-instance-arn arn:aws:dms:us-east-1:123456789012:rep:ABCDEFGHIJKLMNOPQRSTUVWXYZ \
--migration-type full-load-and-cdc \
--table-mappings file://table-mappings.json \
--replication-task-settings file://task-settings.json
RDSインスタンスのセキュリティを確保するためのチェックリスト:
Amazon RDSは、クラウド内でリレーショナルデータベースを簡単に設定、運用、スケーリングできるマネージドサービスです。複数のデータベースエンジンをサポートし、バックアップ、パッチ適用、スケーリング、高可用性などの時間のかかる管理タスクを自動化します。
Amazon RDSの主な利点は以下の通りです:
Amazon RDSを効果的に活用するには、適切なデータベースエンジンとインスタンスタイプの選択、高可用性の確保、セキュリティベストプラクティスの適用、パフォーマンスの最適化、コスト管理の最適化が重要です。また、他のAWSサービスと組み合わせることで、より強力で柔軟なクラウドソリューションを構築することができます。