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版がそのうちでるらしいが、そちらは幾らになるんだろうか。