Amazon RDS

RDSについてちょっと調べ直してみたのでメモ。

特徴

RDSは、MySQLを提供してくれるAmazon Web Servicesのサービス。自前でやるのにくらべて何がうれしいかというと、設定しなくてすむ、バックアップを取ってくれる、MySQL, OSのバージョンアップ、パッチ当てをamazonがやってくれる、というあたり。
実体としては、単にMySQL on EC2 + EBS (Elastic Block Store) という構成だと思われる。

バックアップとスナップショット

自動的にデータベースとトランザクションログをバックアップしてくれる。自動的に1日一回フルバックアップをとり、その後のログデータも蓄積してくれる。これらを用いることで、データベースを任意の時点に巻き戻すことが可能。直近には巻き戻せないが、大抵の場合は5分以内まで巻き戻せる。バックアップデータはデフォルトで1日、設定で8日間まで保存可能とのこと。

ユーザがスナップショットを明示的に作成することも可能。こちらはフルバックアップなので、その分バックアップストレージを消費するということになるはず。

インスタンスをdeleteする際に、バックアップを残しておくことができ、そこからあたらしいインスタンスを復元することが可能。

複製

初期にはなかった複製機能がいつのまにか追加されている。マルチAZとリードレプリカの2種類。これらは、目的も実現機構も異なっている。前者は可用性の向上が目的。後者は読み出しスループットの向上が目的。両方同時に利用することも可能。

マルチAZは、他のAvailability Zoneに複製を置いておく機能。普段はマスタを使うが、変更はスタンバイ状態のスレーブにも適用され、マスタが落ちた場合には自動的にスレーブに切り替わる。切り替えは、DNS書き換えで行われるので、利用する側はリトライするように設定しておくだけでOK。切り替えは通常3分以内で行われるとのこと。

読み出しレプリカは、読み出し性能を向上させるために、読み出し専用の複製を設置するもの。MySQLがもともと提供している複製機能を用いて,読み出しレプリカに変更を反映させる。

読み出しレプリカは、複製が完全にオリジナルと同期していることを保証しない。いわゆるeventual consistencyということになる。その点マルチAZは完全に同期していることが保証されている。

一方マルチAZでは、書き込みをマスタとスレーブの両者に行うので、書き込みレイテンシが増大するらしい。

値段

課金は結構面倒くさい。CPU、ストレージ、ネットワークにそれぞれ課金されるので予測が立てにくいのではないか。

CPUはベースとなるEC2のインスタンスに応じて値段が違う。ざっくりEC2の1.3掛けの値段になっている。Windowsよりは安い。またマルチAZは一部をのぞいて倍になっている。これは当然だろう。US Eastの値段で素のEC2と比較してみよう。

サイズ DBインスタンス マルチAZ EC2インスタンス
S 0.11 0.22 0.085
L 0.44 0.88 0.34
XL 0.88 1.66 0.68
High-mem XL 0.65 1.30 0.50
High-mem XXL 1.30 2.60 1.00
High-mem 4XL 2.60 5.20 2.00

XLのマルチAZが1.76でなく1.66なのがすごく気持ち悪いがこれ間違いなんじゃないのかなあ。。。EC2同様に予約インスタンスも用意されている。

ストレージは、1ギガ1月あたり0.1ドル。マルチAZでは当然倍額になる。この価格はEBSと同じ。

所感

複製機能が充実している。自分でやるのはすごく大変そうなのでこの値段は安いと思う。Oracle版がそのうちでるらしいが、そちらは幾らになるんだろうか。