AWSホワイトペーパー「Amazon Aurora のご利用開始にあたって」の紹介

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

Amazon Aurora のご利用開始にあたって」は2015年4月にAWSが発行したホワイトペーパーです。

ホワイトペーパー概要

Aurora は MySQL 5.6 互換なエンタープライズ級のクラウド向けRDBです。 多くの点で Aurora は RDB 界隈のゲームチェインジャーです。

このホワイトペーパーは以下をカバーします

  • Auroraの利点を学ぶ
  • Auroraを起動し接続する手順
  • Auroraのアーキテクチャ、スケーラビリティ、パフォーマンスについて学ぶ
  • 他のDBからの移行手順

なお、2016/06/26 時点では、このホワイトペーパーは英語でのみ提供されています。

目次

ホワイトペーパーの目次は以下の通りです。

  • Abstract
  • Introduction
  • Amazon Aurora: A Primer
  • Amazon Aurora Architecture
    • Self-Healing, Fault-Tolerant Design
    • Automatic, Continuous Backups
    • High Performance
    • Low-Latency Read Replicas
    • Failure Testing
    • Multiple Failover Targets
    • Survivable Caches
    • Security
  • Getting Started
    • Creating an Amazon Aurora Database
    • Connecting to Your Amazon Aurora Databas
    • Instance Sizing
    • Scalability
  • Backup and Restore
  • Managing Amazon Aurora
  • Monitoring
    • Amazon CloudWatch Monitoring
    • Enhanced Monitoring
  • Migrating to Amazon Aurora
    • Amazon RDS MySQL to Amazon Aurora
    • MySQL to Amazon Aurora
    • Migration with Minimal Downtime
  • Conclusion
  • Contributors
  • Further Reading

Introduction

データベース移行は、オンプレミス環境をただ単にクラウドに移動させるだけの lift and shift 方式からフルマネージドでクラウドネイティブなデータベースサービスへの移行に移りつつあります。

このトレンドの背景は、古典的なデータベースは、スケーラビリティ、信頼性、パフォーマンスなどのクラドの利点を活かすように設計されていないことによります。古典的なDBはオンプレミス環境で動作させることに最適化されており、基本的なアーキテクチャーは過去数十年変わっていません。

Amazon Aurora は SOA と分散システムを活用して、これらの古典的なDBの抱える課題を解決します。

Amazon Aurora: A Primer

  • Amazon Aurora は MySQL 5.6 互換で、AWS と同じく SOA 志向のデータベースです。
  • ログ・ストレージレイヤーはDB本体から分離され、ハイパフォーマンス、SSDベース、マルチテナント、スケールアウト に最適化されたストレージサービスとなっています

Amazon Auroraの主要機能は以下があります

  • 高い永続性
  • 耐障害性
  • ストレージの自己修復機能
  • 自動スケールするストレージ
  • 継続バックアップ
  • ハイパフォーマンス
  • 高速なくラッシュリカバリ
  • DBがリスタートしても消えないキャッシュ
  • 高い安全性

Amazon Aurora Architecture

Aurora クラスターは以下で構成されます

aurora-architecture

  • プライマリ インスタンス
    • リード・ライト操作とクラスターの変更はこのインスタンス経由で行われます
    • クラスターはプライマリインスタンスは1個までしか持てません
  • クラスターボリューム
    • SSD
    • 3AZにまたがり、各AZごとにデータは2コピーされる。つまり、各でーたは3 AZ * 2 copy/AZ = 6 copy となる。
    • プライマリ/レプリカインスタンスで共有します
  • (オプション)レプリカインスタンス
    • リード操作だけが可能です
    • クラスターはレプリカを最大15個までもてます
    • フェイルオーバーの際には、レプリカがプライマリに格上げされます

Self-Healing, Fault-Tolerant Design

Amazon Auroraクラスターは耐障害性を考慮して設計されています。

クラスターボリュームは複数AZにまたがり、AZで2コピーされ、AZ障害が発生しても、データロスは発生せず、僅かなダウンタイムだけでサービス稼働します。

データボリュームは10GBのセグメントに分割され、各セグメントは3 AZで6コピーされ、ディスク障害による blast radius (爆発半径/爆発の影響の到達距離)を隔離しています。

データが2コピー失われても、書き込みを続けられ、データが3コピー失われても、読み込みを続けられます。

クラスターボリュームは自己修復機能があります。

常にデータブロック・ディスク・ノードの障害をチェックされ、障害があった時は自動的に修復・置き換えられます。

Automatic, Continuous Backups

Amazon Aurora はデータを 99.999999999% の耐久性を誇るS3にバックアップします。

バックアップは自動で、差分データを対象に、継続してバックアップされ、データベースパフォーマンスへのインパクトはありません。

point-in-time リカバリーにより、バックアップデータがあるかぎり、5分前より昔の指定された時点のデータに数クリックで復元できます。

自動バックアップデータは35日間保持できます。一方で、手動バックアップデータは、削除されないかぎり、残り続けます。

High Performance

Amazon Auroraは Log-structured ストレージとデータベースエンジンのカスタマイズにより、MySQL に比べて大幅に性能が向上しています。

データベースエンジンはSSDベースの仮想ストレージレイヤーと密に結合し、ストレージへの書き込み数の削減、ロック競合の最小化、などを実現しています。

r3−8xlargeインスタンスでの SysBench では、500,000 SELECTs/second, 100,000 UPDATEs/second を叩き出しています。

クラスターボリュームはデータサイズの小さな多くのセグメントを持ち、各セグメントが redo ログを持ちます。

Log-structured ストレージの恩恵により、ダーティーバッファのフラッシュは不要です。 ログページがストレージに書き込まれ、ログページを元にストレージレイヤーでデータページが生成されます。

I/O 操作は分散システムの技術が使われています。 データ書き込みは4/6 のコピーで成功したら ACK を返します。 ノード間でデータに差異が見つかった場合は、P2P Gossip レプリケーションで修復されます。

障害などによりデータベースが再起動すると、起動時に、イン・メモリのページキャッシュをバッファプールにプリロードして、バッファプールのキャッシュをウオームアップします。

Autoscaling Storage

Auroraのストレージ(クラスターボリューム)はデータサイズのプロビジョンは不要で、データサイズに応じて、自動で増えます。

Auroraはストレージのパフォーマンスを管理し、一貫して、低レイテンシーなI/Oを実現しています。

ホットスポットはデータの保存場所を移動し、ストレージレイヤのパフォーマンスが一貫するようにします。

Low-Latency Read Replicas

Aurora レプリカは複数のAZに最大15個まで持てます

プライマリインスタンスとストレージを共有しているため、レプリカノードへのログのレプリケートなどは不要です。結果として、レプリカラグはミリセカンド秒で一桁台のことも多いです。

Failure Testing

Amazon Auroraは耐障害試験のために、ノード障害などを発生させる Fault Injection クエリーが用意されています。

クエリーはプライマリ・レプリカの両方に投げられます。

Multiple Failover Targets

Amazon Aurora はスタンバイインスタンスなしにフェイルオーバーできます。

フェイルオーバー先は、任意のAZにいるレプリカインスタンスです。

可用性のためには、各AZには少なくとも1レプリカは用意しておくことが推奨されます。

プライマリ・レプリカでストレージを共有しているため、フェイルオーバーが発生しても、データロスは発生せず、ログのリプレイは不要です。

Instant Crash Recovery

クラッシュが発生しても、redo ログのリプレイなしに、DBは利用できます。

ストレージは多くの小さなセグメントに分割されており、各セグメントがredoログを持っているため、redo ログのリプレイや並行して非同期に行えます。

クラッシュが発生しても、多くの場合は60秒以内に復帰します。

Survivable Caches

Amazon Aurora ではバッファキャッシュはDBプロセスの外に追いやられているため、DBが再起動しても、キャッシュはクリアされません。

Security

Amazon Aurora クラスターはVPC内に作成しなければいけません。

セキュリティグループや NACL でアクセス制御できます。

通信の暗号化、保存データの暗号化(encryption at rest)にも対応しています。

Getting Started

管理コンソールから、Amazon Aurora を作成し、インスタンスに接続します。

Aurora 以外の RDS との違いとしては以下があります

Backup and Restore

Aurora の特徴的なストレージを活かしたバックアップ・リストアが可能です。

  • 自動バックアップのデータ保持期間は1日から35日までです。
  • Point-int-time recovery に対応し、5分前〜データ保持期間の任意の状態にデータをリストアできます
  • 手動のバックアップデータは明示的に削除しないかぎり、残り続けます
  • バックアップは自動で、差分データだけ、継続的にS3に保存され、DB システムへの性能面での影響はありません。

Managing Amazon Aurora

  • 管理コンソール
  • AWS CLI
  • AWS SDK

から操作可能です。

Monitoring

CloudWatch と Enhanced Monitoring の2種類の監視方法があります。

CloudWatch

  • RDSインスタンスのハイパーバイザー経由で取得
  • 20 以上のメトリクス

Enhanced Monitoring

  • RDSインスタンス内のエージェント経由で取得
  • 50 以上のメトリクス
  • オプトイン
  • 1秒までの精度に対応

Migrating to Amazon Aurora

運用中のデータベースをAmazon Auroraに移行する手順が紹介されています。

Amazon RDS MySQL から Amazon Aurora

Amazon RDS MySQL で作成されたスナップショットから Aurora インスタンスを起動できます。

スナップショットは手動・自動を問いません。

MySQL から Amazon Aurora

EC2やオンプレミス環境のMySQLをAmazon Auroraに移行するには2通ります。

1. mysqldump

データ量が小さく、サービス停止を受け入れられる場合にこの方式を採用します。 mysqldump コマンド経由でバックアップ・リストアします。

2. MySQLからAuroraにレプリケートさせる

AuroraはMySQL 5.6 互換のため、binary log(binlog)のレプリケーション設定をして、データ同期します。 この方式は mysqldump よりもダウンタイムを減らすことができます。

手順の詳細は、以下のドキュメントを参照ください

ダウンタイムを最小限にして移行する

ダウンタイムやサービス停止を最小限にして移行するには AWS Database Migration Service (AWS DMS) を利用します。 DMSはマネージドなデータ移行サービスで、転送データの圧縮、平行転送のような複雑な処理を行います。 DMSのデータ同期設定完了後は、変更されたデータが随時データソースからターゲットにリレーされます。

DMS は Oracle から Oracle のように DB エンジンが同じ homogeneous なデータ移行のみならず、Oracle から Aurora のように異なるDBエンジンへの heterogeneous なデータ移行にも対応します。

heterogeneous なデータ移行を用意にするため、DB間でデータスキーマ変換を行う AWS Schema Conversion Tool (SCT) も提供されています。 このツールはビュー、ストアドプロシージャ、関数なども変換します。

Conclusion

Amazon Auroraはクラウド用途に設計された、高パフォーマンス、高可用性なエンタープライズ級のデータベースです。

フルマネージドサービスで、管理が非常に楽なため、ユーザーはアプリ開発やビジネスに専念できます。

ライセンス費用などは発生せず、利用量に応じた従量課金です。

レプリカは15個まで、インスタンスタイプは 32 vCPU/244 Gibメモリ まで簡単な操作でスケールアウト・スケールアップできます Auroraストレージは 10 GB から 64 TB まで自動的に拡張します。

Further Reading

この章では、参考資料が列挙されています。

おわりに

AWS 史上、最速でサービス利用者が増えている Amazon Auroraの概要ホワイトペーパーのご紹介でした。

Amazon Aurora の概要を知るには、以下の資料がおすすめです。

Aurora を使いこなす上では、古典的な DBMS との違いを知ることが重要です。 Aurora 採用を検討している方、なんとなく Aurora を使ってみた方は、これらの資料に一度目を通すと、Aurora の理解がより深まるのではないかと思います。