今回は、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接続エラー処理をうまく行っておけば、サービスの内容次第ですが、本番運用中のスケールアップ可能かもしれません。

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら