AWS再入門2018 リレーショナルデータベース編

2018.01.17

こんにちは。池田です。AWS 認定ソリューションアーキテクト – プロフェッショナル認定試験に向けた勉強の一環として始めたこのシリーズですが、やっと大方針というか「焦って無理に全部をいっぺんに覚えようとせず、ひとつずつ理解を積み重ねていこう」と考えるようになりました。
いくつになっても学習を進めるのが下手っぴなままだなぁと、中高生時代を思い出したりしましたがめげずにいきます。

はじめに

AWS再入門2018シリーズとしては第五弾となります。今回はフルマネージドサービスとして提供されているデータベースサービスのうち、リレーショナルデータベースについて公式サイトの情報をはじめとした各種ドキュメントを元に、各サービスの特徴となる事項を中心に整理していこうと思います。
(対象となる情報量が膨大なこともあり、全てを網羅しているものではありません。予めご承知おきください)

もくじ

大分類

  • リレーショナルデータベース
  • 非リレーショナルデータベース
  • 移行支援ツール

リレーショナルデータベース

  • Amazon Aurora
    • PostgreSQL互換
    • MySQL互換
  • Amazon RDS
    • Oracle
    • Microsoft SQL Server
    • PostgreSQL
    • MySQL
    • MariaDB
  • 分析用データウェアハウス
    • Amazon Redshift

非リレーショナルデータベース

  • NoSQL データベース
    • Amazon DynamoDB(Key Valueストア)
  • メモリー内データストア
    • Amazon ElastiCache(memcachedまたはRedis)
  • グラフデータベース
    • Amazon Neptune

移行支援ツール

  • AWS Database Migration Service(AWS DMS)

Amazon Aurora

  • クラウド向けに構築された、MySQLやPostgreSQLと互換性のあるリレーショナルデータベース
  • 99.99% を上回る高可用性
  • スループットは標準的なMySQLと比べて5倍、標準的なPostgreSQLと比べて3倍
  • MySQL互換版の機能としてAurora Multi-Masterがプレビュー中
  • Aurora MySQL準拠版の新規構成としてAurora Serverlessがプレビュー中
  • AWS DMSによる移行をサポート

ユースケース

  • エンタープライズアプリケーション
    • プロビジョニング、パッチの適用、バックアップ、リカバリ、障害検知、リペアなど時間のかかるタスクが自動化されるメリット
    • 商業用データベース製品と比較して大幅なコスト削減が可能
  • Software as a Service (SaaS) アプリケーション
    • マルチテナントアーキテクチャが要求する高いレベルでの柔軟性と高パフォーマンス、高信頼性を提供
  • ウェブゲームとモバイルゲーム
    • 高スループット、大規模ストレージスケーラビリティ、および高可用性を提供

ストレージ

  • SSDドライブを利用するクラスターボリュームに保存
    • リージョン内のAZ間にデータがコピーされ自動的にレプリケート
    • データ量の増加に伴ってクラスターボリュームが自動的に増加(最大64TB)

レプリケーション

  • クラスター内の独立した読み取り専用エンドポイント
    • リージョン内に最大15個配置可能
  • プライマリインスタンスに何らかのトラブルがあった際のフェイルオーバーターゲットとして使用可能

高信頼性

  • レプリカの追加、複数AZへの配置による可用性の向上
  • ストレージの自動修復
  • キャッシュのウォームアップによるパフォーマンスの向上
    • シャットダウン後の起動や再起動時にバッファープールを事前ロードする

他のAWSサービスとの統合

  • Amazon Aurora MySQL
    • ネイティブ関数lambda_syncまたはlambda_asyncを使用して、AWS Lambda関数を同期または非同期に呼び出す
    • mysql.lambda_asyncプロシージャを使用してAWS Lambda関数を非同期に呼び出す
    • LOAD DATA FROM S3コマンドまたはLOAD XML FROM S3コマンドを使用して、Amazon Simple Storage Service(Amazon S3)バケットに格納されているテキストファイルやXMLファイルのデータをDBクラスター内にロードする
    • SELECT INTO OUTFILE S3コマンドを使用してDBクラスターからAmazon S3バケット内のテキストファイルにデータを保存する
    • Auto ScalingでAuroraレプリカを自動的に追加または削除する
  • Amazon Aurora PostgreSQL
    • パフォーマンスインサイトを使用してリレーショナルデータベースのワークロードのパフォーマンスを迅速に収集、表示、評価する

詳細はAmazon Auroraにてご確認ください。

Amazon RDS

  • 設定、運用、スケールが容易
  • 各種自動化による管理コストの低減
    • ハードウェアのプロビジョニング、データベースのセットアップ、パッチ適用、バックアップなど
  • RDSを運用するために最適化されたインスタンスを提供
    • メモリ、パフォーマンス、I/Oがチューニングされた複数のインスタンスタイプ
  • 既存DBと同じエンジンを選択でき、移行が容易

ユースケース

  • ウェブアプリケーションとモバイルアプリケーション
    • 高スループット、大規模ストレージスケーラビリティ、高可用性を備えたデータベースプラットフォームを提供
  • eコマースアプリケーション
    • 柔軟、安全、スケーラビリティが高いデータベースソリューションを低コストで提供
  • モバイルゲームとオンラインゲーム
    • 高スループットと可用性を持つデータベースプラットフォームを提供

Amazon RDS for Oracle

  • サポートしているエディション
    • Standard Edition One: ライセンス込み、BYOL(ライセンスを自分で用意)
    • Standard Edition Two:ライセンス込み、自分のライセンス使用
    • Standard Edition: BYOL
    • Enterprise Edition: BYOL
  • 課金方式
    • DBインスタンスが稼働する1時間ごと(1時間未満の利用は1時間とする)
    • DBストレージ、IOリクエスト、バックアップも対象となる
  • ツールとサードパーティーソフトウェア
    • Siebel Customer Relationship Management (CRM)
    • Oracle Fusion Middleware Metadata
    • AWS CloudHSM ClassicによるAmazon RDS Oracle TDEキーの保存
    • Oracle GoldenGate
    • Oracle Repository Creation Utility
    • Siebel Database
  • サポートされるオプション
オプション オプション ID
Oracle Application Express APEX
APEX-DEV
Oracle Enterprise Manager OEM
OEM_AGENT
Oracle Label Security OLS
Oracle Locator LOCATOR
Oracle マルチメディア MULTIMEDIA
Oracle ネイティブネットワーク暗号化 NATIVE_NETWORK_ENCRYPTION
Oracle SQLT SQLT
Oracle SSL SSL
Oracle Spatial SPATIAL
Oracle Statspack STATSPACK
Oracle のタイムゾーン Timezone
Oracle Transparent Data Encryption TDE
Oracle UTL_MAIL UTL_MAIL
Oracle XML DB XMLDB

詳細な情報はAmazon RDS での Oracleにてご確認ください。

Amazon RDS for SQL Server

  • サポートしているエディション
    • Express、Web、Standard エディション、および Enterprise エディション: ライセンス込み
    • Standard および Enterprise エディション: BYOL
  • 課金方式
    • DBインスタンスが稼働する1時間ごと(1時間未満の利用は1時間とする)
    • DBストレージ、IOリクエスト、バックアップも対象となる
  • Microsoft SQL Server DB インスタンスの制限
    • Microsoft SQL Serverを実行しているDBインスタンス毎に作成できるデータベース数(最大30、Microsoftシステムデータベース(masterやmodelなど)を除く)
    • Amazon RDS用に予約されている一部のポートはDBインスタンス作成時に使用できない
    • msdbデータベースへのデータインポートはサポートされていない
    • ミラーリングデプロイを使用するSQL ServerマルチAZのDBインスタンスにあるデータベース名は変更できない
  • ストレージサイズの制限
    • 汎用(SSD)ストレージ: すべてのエディションで最大16TB
    • プロビジョンドIOPSストレージ: すべてのエディションで最大16TB
    • マグネティックストレージ: すべてのエディションで最大1TB
    • 汎用(SSD)ストレージ: EnterpriseおよびStandardエディションで最小200GB、ウェブおよびExpressエディションでは最小20GB
    • プロビジョンド IOPS ストレージ: EnterpriseおよびStandardエディションでは最小200GB、ウェブおよびExpressエディションでは最小100GB
    • マグネティック ストレージ: EnterpriseおよびStandardエディションでは最小200GB、ウェブおよびExpressエディションでは最小20GB
  • その他制限事項
    • Amazon RDS DBインスタンスと同じサーバーでのSQL Server Analysis Services、SQL Server Integration Services、SQL Server Reporting Services、Data Quality Services、またはMaster Data Servicesの実行不可(EC2インスタンスへSQL Serverを構築することで利用可能)
    • DROP DATABASEの実行が成功する前の時点に復元した場合、その時点のデータベースの状態が反映されない可能性がある(Microsoft SQL Server の制限)
  • サポートされるオプション
オプション オプション ID エンジンのエディション
ネイティブバックアップおよび復元 SQLSERVER_BACKUP_RESTORE SQL Server Enterprise Edition
SQL Server Standard Edition
SQL Server Web Edition
SQL Server Express Edition
透過的なデータ暗号化 TRANSPARENT_DATA_ENCRYPTION SQL Server Enterprise Edition

詳細な情報はAmazon RDS での Microsoft SQL Serverにてご確認ください。

Amazon RDS for PostgreSQL

  • サポートされているバージョン
    • PostgreSQL 9.3、9.4、9.5、9.6
  • 課金方式
    • DBインスタンスが稼働する1時間ごと(1時間未満の利用は1時間とする)
    • DBストレージ、IOリクエスト、バックアップも対象となる
  • サポートされている機能
    • 論理レプリケーション
    • イベントトリガー
    • hugeページ
    • テーブルスペース
    • Autovacuum
    • stats_temp_directoryのRAMディスク
    • ALTER ENUM
  • DBインスタンスに最も効率的にデータをインポートするための設定

    DB インスタンスの設定を次のように変更します。
    DB インスタンスのバックアップを無効にする (backup_retention を 0 に設定する)
    マルチ AZ を無効にする
    次の設定を含むように DB パラメータグループを変更します。DB インスタンスの最も効率的な設定を見つけるために、パラメータ設定をテストする必要があります。
    maintenance_work_mem パラメータの値を大きくします。PostgreSQL のリソース消費のパラメータの詳細については、PostgreSQL のドキュメントを参照してください。
    WAL ログへの書き込みの数を減らすには、checkpoint_segments パラメータと checkpoint_timeout パラメータの値を大きくします。
    synchronous_commit パラメータを無効にします (FSYNC を無効にしないでください)。
    PostgreSQL の autovacuum パラメータを無効にします。
    これらの設定で、pg_dump -Fc (圧縮) または pg_restore -j (並列) コマンドを使用します。
    PostgreSQL を使用するためのベストプラクティス

  • PostgreSQL Autovacuum機能の使用

    PostgreSQL データベースの autovacuum 機能は、PostgreSQL DB インスタンスの状態を維持するために使用することを強くお勧めする機能です。autovacuum は、VACUUM および ANALYZE コマンドの実行を自動化します。autovacuum の使用は、PostgreSQL が必要とするもので、Amazon RDS では必須ではありませんが、良い性能を出すためには重要な要素です。この機能は、すべての新しい Amazon RDS PostgreSQL DB インスタンスで、デフォルトで有効になり、関連する設定パラメータがデフォルトで適切に設定されます。

詳細な情報はAmazon RDS 上の PostgreSQLにてご確認ください。

Amazon RDS for MySQL

  • サポートされているバージョン
    • MySQL Community Editionバージョン 5.5、5.6、5.7 に対応
  • 課金方式
    • DBインスタンスが稼働する1時間ごと(1時間未満の利用は1時間とする)
    • DBストレージ、IOリクエスト、バックアップも対象となる
  • サポートされているオプション
オプション オプション ID エンジンバージョン
MariaDB 監査プラグインのサポート MARIADB_AUDIT_PLUGIN MySQL 5.6.29 以降
MySQL 5.7.16 以降
MySQL MEMCACHED のサポート MEMCACHED MySQL 5.6 以降
  • テーブル作成に関する制限事項 > - プロビジョンド IOPS ストレージまたは汎用ストレージを使用し、インスタンスのサイズが 200 GB 以上の場合には、10,000 テーブルに制限されます。

・サポートされているシステムストアドプロシージャ

  • レプリケーション
    • mysql.rds_set_external_master
    • mysql.rds_reset_external_master
    • mysql.rds_start_replication
    • mysql.rds_stop_replication
    • mysql.rds_skip_repl_error
    • mysql.rds_next_master_log
  • InnoDB キャッシュウォームアップ
    • mysql.rds_innodb_buffer_pool_dump_now
    • mysql.rds_innodb_buffer_pool_load_now
    • mysql.rds_innodb_buffer_pool_load_abort
  • 追加設定 (たとえばbinlogファイル保持期間) の管理
    • mysql.rds_set_configuration
    • mysql.rds_show_configuration
  • セッションやクエリの終了
    • mysql.rds_kill
    • mysql.rds_kill_query
  • ログ記録
    • mysql.rds_rotate_general_log
    • mysql.rds_rotate_slow_log
  • Global Status History の管理
    • mysql.rds_enable_gsh_collector
    • mysql.rds_set_gsh_collector
    • mysql.rds_disable_gsh_collector
    • mysql.rds_collect_global_status_history
    • mysql.rds_enable_gsh_rotation
    • mysql.rds_set_gsh_rotation
    • mysql.rds_disable_gsh_rotation
    • mysql.rds_rotate_global_status_history

詳細はAmazon RDS での MySQLにてご確認ください。

Amazon RDS for MariaDB

  • 提供されるバージョン
メジャーバージョン マイナーバージョン
MariaDB 10.2 10.2.11 (すべての AWS リージョンでサポート)
Amazon RDS で MariaDB 10.2 がサポート可能になりましたの情報より追記しました)
MariaDB 10.1 10.1.26 (すべての AWS リージョンでサポート)
10.1.23 (すべての AWS リージョンでサポート)
10.1.19 (すべての AWS リージョンでサポート)
10.1.14 (except us-east-2 を除くすべての AWS リージョンでサポート)
MariaDB 10.0 10.0.32 (すべての AWS リージョンでサポート)
10.0.31 (すべての AWS リージョンでサポート)
10.0.28 (すべての AWS リージョンでサポート)
10.0.24 (すべての AWS リージョンでサポート)
10.0.17 (us-east-2、ca-central-1、eu-west-2 を除くすべての AWS リージョンでサポート)
  • 選択されたデータベースインスタンスに適したパラメータセットが用意されている
  • 「ポイントインタイム復元」と「スナップショット復元」の機能はXtraDB ストレージエンジンのみがサポート(利用を推奨しているストレージエンジン)
  • HIPAA 準拠アプリケーションを構築できる
    • AWSとの履行済みの事業提携契約(BAA)に基づいて、保護されるべき医療情報(PHI)を含め、医療関連の情報を保存できる(参考: HIPAA への準拠
  • DescribeDBEngineVersions APIを利用することで、サポートされているバージョンのリストと新しく作成されるDBインスタンスのデフォルトを表示できる
  • ユーザーが指定しない限り、新しいMariaDBマイナーバージョン(Amazon RDSがサポートするバージョン)に自動的にアップグレードされる
  • 廃止に関するポリシー

    ・当社ではメジャー MariaDB バージョンリリース (MariaDB 10.0.17 から始まる) に対して、Amazon RDS によるサポートが開始されてから 3 年間のサポートを予定しています。
    ・マイナー MariaDB バージョンリリースに対しては、Amazon RDS によるサポートが開始されてから、少なくとも 1 年間のサポートを予定しています。
    ・MariaDB メジャー/マイナーバージョンが「廃止」となった後は、予定メンテナンスで自動アップグレードされる前に、ユーザーがサポート対象バージョンにアップグレードするための猶予期間を 3 ヵ月間設けます。
    Amazon RDS の MariaDB

  • Amazon RDSでサポートされていないMariaDBの機能

    ・Data at Rest Encryption
    ・MariaDB Galera クラスター
    ・HandlerSocket
    ・JSON テーブルタイプ
    ・マルチソースレプリケーション
    ・パスワード検証プラグイン、simple_password_check、および cracklib_password_check
    ・レプリケーションフィルタ
    ・「エンジン定義の新しいテーブル/フィールド/インデックス属性」で説明されている、ストレージのエンジン固有のオブジェクト属性。
    ・テーブルとテーブル領域の暗号化

  • インスタンスへのシェルアクセスは不可

  • XtraDBキャッシュウォームアップ
    • インスタンスがシャットダウンされたとき、最新のバッファープール状態を保存し、DBインスタンスが起動されたときに保存された情報からバッファープールを再ロードする機能

詳細はAmazon RDS の MariaDBにてご確認ください。

Amazon Redshift

  • 特徴
    • データ列の読み書きに最適化された列指向データウェアハウスのフルマネージドサービス
    • ペタバイト規模に対応
    • Amazon S3のエクサバイト単位の非構造化データに対してSQLクエリを直接実行できるRedshift Spectrumを含んでいる
    • Amazon VPC、SSL、AES-256暗号化、ハードウェアセキュリティモジュール(HSM)サポートによるデータ保護
  • 概要
    • リーダーノードと1つ以上のコンピューティングノードから構成されるクラスター
    • クラスターのポイントインタイムバックアップとしてスナップショットを取得、復元ができる
    • プロビジョニングする時に暗号化オプションを選択可能
  • 上限緩和可能な制限
    • プロビジョニングできるノードの合計数、作成できるスナップショットの数など(各リージョンのAWSアカウントごと。参考:Amazon Redshift 制限
  • 上限緩和できない制限
    • クラスターごとに割り当てることができるノードの数
    • クラスターごとに作成できるテーブルの最大数(一時テーブルを含む)
    • クラスターごとに作成できるユーザ定義データベース数
    • クラスターごとに作成できるスキーマ数
    • クラスターに対して同時接続可能なユーザ数
    • ワークロード管理(WLM)の設定での、すべてのユーザ定義キューに対する同時実行レベル
    • スナップショットを復元するために許可できるAWSアカウント数
    • COPYコマンドを使用してロードされる、単一の入力行の最大サイズ(4MB)
    • 関連付け可能なIAMロール数

詳細はクラスター管理ガイドにてご確認ください。

AWS Database Migration Service

  • ユースケース
    • 同種のデータベース間での移行
    • 異種データベース間の移行
    • 開発を目的としたクラウド内外へのデータ移行
    • 複数のソースデータベースを単一のターゲットデータベースを統合
    • 継続的なデータレプリケーション
  • AWS Schema Conversion Tool

    ソースデータベーススキーマ、およびビュー、ストアドプロシージャ、関数といったデータベスコードオブジェクトの大部分を自動的にターゲットデータベース互換フォーマットへと変換することにより、異種データベース間の移行を計画的なものにします。自動的に変換できないオブジェクトには、手動で変換して移行を完了するために、明瞭なマークが付けられます。
    AWS Database Migration Service

まとめ

書く前から想定していたので読んだ資料の中から、できるだけ主だった特徴や注意点を中心に選び整理したつもりですが、なかなかのボリュームがありました。一度に全てを深く掘り下げていくのはボリューム的にも時間的にも難しいので、今後またそれぞれのリソースについて時には触りながら理解を深めていこうと思います。