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