2011年5月15日日曜日

RDS(MySQL)スケールアップ時の停止時間

スズキです。

SmallインスタンスからLargeインスタンスへのスケールアップ時の停止時間を
計測してみました。
本番運用は必ずMulti-AZにすると思うので、計測はMulti-AZのみを対象にしています。

また、ストレージの容量で停止時間が変化する可能性もあるので、
ストレージガ5Gのものと50Gのもので比較してみました。

手順は下記のように、"DB Instance Class"を"db.m1.small"から"db.m1.large"に変更し、
さらに、"Apply Immediately"にチェックを入れて、"Yes, Modify"ボタンを押します。


計測スクリプトはNagiosのMySQLプラグイン(check_mysql)を利用し、
下記のようにしています。

#!/bin/sh
while [ 1 ]
do
    date
    /usr/lib/nagios/plugins/check_mysql \
    -u suzlab -p suzlab -d suzlab \
    -H suzlab00g.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com
    sleep 1
done

5Gの結果は以下の通りですが、停止時間は二分弱ということが分かります。

2011年  5月 15日 日曜日 00:40:08 JST
Uptime: 1102  Threads: 2  Questions: 663  Slow queries: 0  Opens: 19  Flush tables: 1  Open tables: 12  Queries per second avg: 0.601
2011年  5月 15日 日曜日 00:40:09 JST
Can't connect to MySQL server on 'suzlab05g.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com' (111)
...
2011年  5月 15日 日曜日 00:41:47 JST
Can't connect to MySQL server on 'suzlab05g.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com' (111)
2011年  5月 15日 日曜日 00:41:48 JST
Uptime: 48  Threads: 2  Questions: 15  Slow queries: 0  Opens: 19  Flush tables: 1  Open tables: 12  Queries per second avg: 0.312

50Gの結果も以下の通りですが、停止時間は同様の二分弱のままでした。

2011年  5月 15日 日曜日 00:39:04 JST
Uptime: 1298  Threads: 2  Questions: 1050  Slow queries: 0  Opens: 50  Flush tables: 1  Open tables: 21  Queries per second avg: 0.808
2011年  5月 15日 日曜日 00:39:05 JST
Can't connect to MySQL server on 'suzlab50g.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com' (111)
...
2011年  5月 15日 日曜日 00:40:50 JST
Can't connect to MySQL server on 'suzlab50g.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com' (111)
2011年  5月 15日 日曜日 00:40:51 JST
Uptime: 65  Threads: 2  Questions: 20  Slow queries: 0  Opens: 19  Flush tables: 1  Open tables: 12  Queries per second avg: 0.307

ということで、
「RDSは5分程度停止でスケールアップできる!」
と言っちゃっていいのではないでしょうか?

これなら、アプリのDB接続エラー処理うまくやっておけば、
本番運用中も気軽にスケールアップしてもいいかもしれません。
(当然サービスの内容次第ですが...)
--------
http://www.suz-lab.com

0 コメント: