公開:

AWSのAuroraとは?意味をわかりやすく簡単に解説

text: XEXEQ編集部


Auroraとは

AuroraはAmazon Web Services(AWS)が提供するフルマネージド型のリレーショナルデータベースサービスです。MySQLとPostgreSQLの両方と互換性があり、商用データベースの性能と可用性を備えながら、オープンソースデータベースの使いやすさとコスト効率の良さを兼ね備えているのが特徴です。

Auroraは高速なストレージシステムを採用しており、MySQLやPostgreSQLと比較して最大で5倍のスループットを実現できます。また、6方向のレプリケーションを行うことで、データの耐久性と可用性を高めています。

Auroraはセルフヒーリング機能を搭載しており、ハードウェア障害が発生した場合でも自動的に修復されるため、運用負荷を軽減できます。さらに、バックアップも自動的に行われ、特定の時点への復元も可能となっています。

Auroraはオートスケーリング機能によって、負荷に応じて自動的にリソースを追加・削除できます。これにより、トラフィックの変動に柔軟に対応しつつ、コストの最適化も図れます。

AuroraはAWSのエコシステムと緊密に統合されており、他のAWSサービスとの連携が容易です。例えば、AWS LambdaやAmazon S3と組み合わせることで、サーバーレスアーキテクチャを構築できます。

AuroraのMySQLとの互換性

「AuroraのMySQLとの互換性」に関して、以下3つを簡単に解説していきます。

  • MySQLのAPIとの互換性
  • MySQLのツールとの互換性
  • MySQLからAuroraへの移行

MySQLのAPIとの互換性

AuroraはMySQLのAPIと高い互換性を持っているため、既存のMySQLアプリケーションを変更せずにAuroraに移行できます。SQLクエリやデータ型、関数などがMySQLと同じように使用可能です。

ただし、一部のMySQLの機能についてはAuroraでは利用できない場合があります。例えば、MyISAMエンジンはサポートされていませんが、大半のアプリケーションではInnoDBエンジンが使用されているため、影響は限定的でしょう。

また、AuroraではMySQLにはない独自の機能も提供されています。例えば、バックトラッキングによって、任意の時点にデータベースを巻き戻すことができます。これらの機能を活用することで、アプリケーションの可用性と運用効率を高められます。

MySQLのツールとの互換性

AuroraはMySQLと互換性のあるAPIを提供しているため、MySQLと連携する各種ツールもそのまま利用できます。例えば、MySQLのGUIクライアントであるMySQL Workbenchを使ってAuroraに接続し、データの操作やスキーマの管理が可能です。

バックアップツールやETLツールなども、MySQLと同じようにAuroraに対して使用できます。これにより、既存のツールやスキルセットを活かしつつ、Auroraの高性能や運用効率の高さを享受することができるでしょう。

ただし、ツールによってはAuroraの独自機能に対応していない場合があるため、移行前に十分な検証が必要です。必要に応じて、Auroraに最適化されたツールの利用も検討すべきでしょう。

MySQLからAuroraへの移行

MySQLからAuroraへの移行は比較的容易に行うことができます。AWSが提供するデータベース移行サービス(DMS)を利用することで、ダウンタイムを最小限に抑えつつ、データを安全に移行できます。

移行プロセスではMySQLのデータをAuroraの互換性のあるデータ型にマッピングする必要があります。ほとんどのケースでは自動的に変換されますが、一部のデータ型については手動での調整が必要な場合もあるでしょう。

移行後はアプリケーションの動作を十分にテストし、パフォーマンスや機能に問題がないことを確認することが重要です。また、移行を機に、Auroraの独自機能を活用してアプリケーションを最適化していくことも検討に値するでしょう。

Auroraの高可用性と耐障害性

「Auroraの高可用性と耐障害性」に関して、以下3つを簡単に解説していきます。

  • Auroraのレプリケーション
  • Auroraのセルフヒーリング
  • Auroraのバックアップとリストア

Auroraのレプリケーション

Auroraは6方向のレプリケーションを行うことで、高い可用性と耐障害性を実現しています。書き込みを行うプライマリーインスタンスと、読み取り専用のレプリカインスタンスが存在し、レプリカはプライマリーの更新を非同期的に受け取ります。

レプリカインスタンスは読み取りクエリの処理を分散することで、パフォーマンスの向上にも寄与します。また、プライマリーインスタンスに障害が発生した場合、レプリカインスタンスを新しいプライマリーに昇格させることで、ダウンタイムを最小限に抑えられます。

Auroraのレプリケーションは異なるアベイラビリティゾーン(AZ)間でも行われるため、AZ全体の障害が発生した場合でも、他のAZのレプリカが引き継いでサービスを継続できます。これにより、データベースの可用性が大幅に向上するのです。

Auroraのセルフヒーリング

Auroraにはセルフヒーリング機能が搭載されており、ハードウェア障害やネットワーク障害が発生した場合でも、自動的に修復が行われます。障害が発生したディスクは即座に切り離され、新しいディスクに置き換えられるでしょう。

また、Auroraはデータベースの健全性を常時モニタリングしており、問題が検出された場合には自動的に修復アクションが実行されます。これにより、運用担当者の介入なしに、データベースの可用性を維持できます。

セルフヒーリング機能はAuroraが管理するストレージ層だけでなく、データベースエンジン自体にも適用されます。例えば、データベースプロセスがハングアップした場合、自動的に再起動が行われ、サービスが復旧されるのです。

Auroraのバックアップとリストア

Auroraではデータベースの自動バックアップが行われ、設定した保持期間の間、復元ポイントが保持されます。バックアップはストレージレベルのスナップショットとして取得され、バックアップ処理がデータベースのパフォーマンスに与える影響は最小限に抑えられています。

障害からの復旧が必要な場合、バックアップからの復元を行うことができます。Auroraでは特定の時点への復元(PITR)がサポートされており、任意の時点の状態にデータベースを戻すことが可能です。

また、バックトラッキング機能を利用することで、バックアップを取得せずに任意の時点(最大72時間前まで)にデータベースを巻き戻すこともできます。これにより、誤ったデータの削除や更新からの復旧が容易になり、運用の柔軟性が向上するでしょう。

Auroraのパフォーマンスチューニング

「Auroraのパフォーマンスチューニング」に関して、以下3つを簡単に解説していきます。

  • Auroraのインスタンスタイプの選択
  • Auroraのクエリキャッシュ
  • Auroraのモニタリングとオプティマイザー

Auroraのインスタンスタイプの選択

Auroraのパフォーマンスを最適化するためにはワークロードに適したインスタンスタイプを選択することが重要です。インスタンスタイプによって、CPU、メモリ、ネットワーク帯域幅などのリソースが異なるため、アプリケーションの要件に合わせて適切なタイプを選ぶ必要があります。

一般的に、CPUバウンドなワークロードにはコンピューティング最適化インスタンス(db.r5など)が、メモリバウンドなワークロードにはメモリ最適化インスタンス(db.r6gなど)が適しています。また、突発的な高負荷に対応するために、バーストパフォーマンスインスタンス(db.t3など)を利用するのも有効でしょう。

インスタンスタイプはワークロードの変化に合わせて動的に変更することも可能です。Auroraの垂直スケーリング機能を利用することで、ダウンタイムを最小限に抑えつつ、インスタンスタイプを変更できます。

Auroraのクエリキャッシュ

Auroraのクエリキャッシュは繰り返し実行される読み取りクエリの応答時間を短縮するための機能です。同一のクエリが再度実行された場合、キャッシュから結果を返すことで、データベースへのアクセスを減らし、パフォーマンスを向上させることができます。

クエリキャッシュはデフォルトでは無効になっているため、有効にするには明示的な設定が必要です。また、キャッシュサイズやキャッシュ保持期間などのパラメータを適切に調整することで、キャッシュの効果を最大限に引き出すことができるでしょう。

ただし、クエリキャッシュはすべてのワークロードに適しているわけではありません。頻繁に更新されるデータに対する読み取りクエリが多い場合、キャッシュの効果は限定的である可能性があります。ワークロードの特性を分析し、キャッシュの利用が適切かどうかを判断する必要があります。

Auroraのモニタリングとオプティマイザー

Auroraのパフォーマンスを最適化するためにはデータベースの動作を継続的にモニタリングし、ボトルネックを特定することが重要です。AWSの各種モニタリングサービス(CloudWatch、Performance Insights、Enhanced Monitoringなど)を活用することで、CPUやメモリの使用率、クエリの実行時間などを詳細に分析できます。

また、Auroraにはクエリオプティマイザーが組み込まれており、実行されるクエリを自動的に最適化します。オプティマイザーはクエリの実行計画を生成する際に、テーブルの統計情報やインデックスの利用状況などを考慮し、最も効率的な実行方法を選択します。

オプティマイザーの動作を制御するために、各種の設定パラメータが用意されています。例えば、オプティマイザーのタイムアウト値を調整することで、複雑なクエリの実行計画の生成に時間をかけすぎないようにできます。ワークロードの特性に合わせてパラメータを調整することで、オプティマイザーの効果を最大限に引き出せるでしょう。

※上記コンテンツはAIで確認しておりますが、間違い等ある場合はコメントよりご連絡いただけますと幸いです。

「コンピュータ」に関するコラム一覧「コンピュータ」に関するニュース一覧
ブログに戻る

コメントを残す

コメントは公開前に承認される必要があることにご注意ください。