COLUMN誰でもわかる!お役立ちコラム

AWS活用支援コラム

Amazon RDSの特徴を理解して活用しよう

Amazon RDSとは

Amazon RDS(Amazon Relational Database Service)とは、その名称のとおりAWS(Amazon Web Services)が提供するリレーショナルデータベースのサービスです。一般的に「データベース」というと、サーバーにミドルウェアとしてインストールし、稼働させるケースが考えられますが、RDSはAWSのマネージドサービスとして提供されています。

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

データベースの形式にも様々な種類がありますが、リレーショナルデータベースはその中の1形式で、属性を列、組を行とする表(テーブル)の形でデータを格納するデータベースです。Excelのような形式でデータが格納されていく、とイメージするといいでしょう。

データベースの中では最も使用されている、一般的な形式です。データの参照や加工といった操作は、SQLと呼ばれる言語を用いておこないます。リレーショナルデータベースは不整合なデータの記録を拒否するなどしてデータベースの整合性を保つ機能や、権限のない利用者による不正な読み出しや改竄などからデータを保護する仕組みを持っています。また、関連する複数の処理を一体化して矛盾なく実行する機能(トランザクション管理機能)もあり、データの正確性に強みを持っています。

マネージドサービスとは

マネージドサービスとは、クラウドが提供するサービス形態の一つです。クラウドが提供するサービス形態としては、IaaS(Infrastructure as a Service)、PaaS(Platform as a Service)、SaaS(Software as a Service)、FaaS(Function as a Service)などがあります。

このうち、クラウドサービス提供側(AWS等)が実際のサーバーを用意し、管理を行うPaaS、SaaS、FaaSが、『マネージドサービス』に該当します。つまり、AWSやGCPなどのクラウドサービス提供者が物理サーバを用意し、設定、運用管理を行っているため、”マネージド(運用管理された状態にある)サービス”と呼びます。RDSにおいては、物理サーバーの保守や、OSレイヤのパッチ適用、データのバックアップをAWS側に運用させる機能があり、データベース運用における負荷の軽減に貢献します。

マネージドデータベースを活用して運用コストを引き下げるスタイルズのAWS導入・移行サービスはこちら→

Amazon RDSで利用できるデータベースエンジンの種類

Amazon RDSでは、オープンソースでいうとAmazon Aurora(MySQL互換、PostgreSQL互換)、MySQL、PostgreSQL、MarinaDBが選択可能で、商用データベースでいうとMicrosoftSQLServer、Oracleが選択可能です。
一般的にOracleのような商用データベースを利用する場合はライセンス料の支払いが必要ですが、基本的にRDSの料金にライセンス料も含まれています。また、BYOL(所有しているライセンスの持ち込み)も可能です。Amazon Auroraについての詳細は別コラムに記載します。

Amazon RDSのインスタンスタイプと料金体系

EC2と同様に、Amazon RDSもまったく自由にCPUのコア数やメモリの容量を変えられるわけではありませんが、さまざまなインスタンスタイプが用意されており、用途に合わせて最適なインスタンスタイプを選択可能です。インスタンスタイプとしては、大枠で汎用(幅広い用途向け)タイプのほかに、データベースはメモリを非常によく使うためメモリ最適化タイプが用意されています。

RDSの料金は?

Amazon RDSはインスタンスの起動時間、ストレージに保存しているデータ容量、データ転送量に応じて行われます。後述するマルチAZ配置の場合、スタンバイインスタンスの費用も発生するので、シングルAZに比べ料金はおおよそ倍になります。なお、OracleやSQL Serverといった商用製品は、BYOL(自前で調達したライセンスを利用すること)が可能で、その場合は料金が安くなります。

また、EC2と同じようにリザーブドインスタンスやSavings Plansが利用可能で、リザーブドインスタンスを利用する場合は最大7割程度利用料金を節約することが可能です。

マルチAZ配置、リードレプリカ

Amazon RDSの大きな特徴として、マルチAZ配置オプション、リードレプリカオプションが用意されていることがあります。それぞれどのような機能なのか、具体的に記載していきます。

可用性とスケーラビリティも高める新「マルチAZ配置オプション」

「マルチAZ」とは、「マルチ(複数)のAZ(データセンター群)」を意味しています。AWSでは、電力系統がそれぞれ独立しており、かつ高速のNWで接続されている複数のデータセンター群をアベイラビリティゾーン(AZ:Availability Zone)と呼んでいます。

マルチAZ構成を行うと、スタンバイDBが別のAZに構築され、データが同期更新されるようになります。1つのAZで障害が発生したり、プライマリのデータベースに障害が発生したりすると、自動的にスタンバイに切り替わります。このように、マルチAZ構成を用いることによって一つのAZで障害が発生しても他の正常なAZを使用して稼動を継続させることができ、データベースの可用性を向上させることができます。

例えば、稼働率が99%のデータベースをシングルAZで稼働させた場合と、マルチAZで稼働させた場合を比較してみましょう。

1つのAZで稼働させた場合の可用性=99%(年間約87.60時間程度停止)
2つのAZで稼働させた場合の可用性=1-(1-0.99)*(1-0.99)=99.99%(年間で約0.87時間停止)

上記を見てみると、停止時間で考えた場合、マルチAZ構成の場合は約100倍可用性が向上しています。デメリットとしては、先述の通り利用料金が倍になることが挙げられます。

データの読み取り性能を向上させる「リードレプリカオプション」

リードレプリカは読み取り専用のDBのことです。アクセス数が多くDBに読み取り負荷が起きている場合などは、リードレプリカを構築することでプライマリデータベースへの負荷を分散することができます。マルチAZ構成との違いは、リードレプリカへのデータ更新は非同期で行われる点です。

あくまでもリードレプリカの作成目的は読み取り性能の向上であり、読み取り整合性が保証されているわけではありません。
リードレプリカオプション、マルチAZオプションともに、数クリックと数分で導入することが可能です。通常オンプレミスで同様の構築を行おうとすると最低でも数週間かかるかと思いますが、AWSでは上記のような仕組みを簡単に構築することが可能です。

RDSのメンテナンスとは?

RDSは『メンテナンスウインドウ』という時間を設定することで、パッチ適用やバックアップなどのメンテナンス作業を自動で実施することができます。尚、インスタンスタイプの変更などは利用者自身で実施する必要があります。責任共有モデルを考慮して、AWS側で実施されるメンテナンスと、利用者自身で実施する必要があるメンテナンスについて、項目を把握しておきましょう。

RDS側で実施されるメンテナンス項目については具体例を記載します。

Amazon RDSにおけるバックアップ

Amazon RDSでは、非常に手間のかかるバックアップ作業についてもAWS側で自動的に実行させることが可能です。スケジュールに従いスナップショットを作成します。なお、自動で取得したバックアップの保存期間には制約(35日まで保持)があるため、要件に合致するかについては事前に確認しましょう。

Amazon RDSにおけるパッチ適用

Amazon RDSではパッチ適用を自動で実施するため、万が一データベースエンジンの脆弱性が発覚しても自動かつ迅速に対応することが可能です。パッチ適用の種別は、『利用可能(延期が可能)』『必須(必ず行われる)』の2種類が存在します。後者については必ず実施されるため、なお、セキュリティ上緊急のパッチ適用はメンテナンスウインドウの時間外でも実施されることがあります。

オンプレミスMySQLからAmazon RDS for MySQLへのデータ移行方式

Amazon RDSに移行したい場合については様々な手段が存在しますが、MySQLを例に、移行方法について3点簡単に記載します。

MySQLレプリケーションの利用

MySQLのレプリケーション機能を利用し、ダウンタイムを最小限で移行することができます。こちらは無料ですが、MySQLのバージョンがRDS側でも利用可能か確認する必要があります。

mysqldumpの利用

コマンドにてデータをエクスポートし、RDSにインポートする移行方式です。こちらも無料ですが、適宜踏み台サーバーなどを構築する必要があります。加えて手動で実施する必要があり、工数がかかります。

DMS(AWS Database Migration Service)の利用

AWSが提供している機能を利用する形式で、こちらもダウンタイムを最小限で移行することができます。非常に多機能で、安全な移行を実現できますが、有償です。

マネージドデータベースを活用して運用コストを引き下げるスタイルズのAWS導入・移行サービスはこちら→

まとめ

Amazon RDSは様々な機能が用意されており、データベースの運用負荷軽減に貢献します。マルチAZ配置、リードレプリカなどの各種オプションを使って障害対策や性能対策を講じることが非常に重要です。利用において不安があれば、専門のベンダーに相談してみるといいでしょう。