新宿鮫:第4回AWSもくもく勉強会にいってきました。

今までAWSを、Eclipseから叩いたりコンソールから叩いたりしてきたのですが、 今回はRDSをイジってみようと思います。   ■ RDSでMySQLインスタンスをマルチアベイラビリティゾーンで立てる   デフォルトはこの画面なのですが、   今回はせっかくなので新しいUIでやってみようと思います。   MySQLで。   Multi-AZ DeploymentをYesにします。(コレだけってのが半端ないですよね…)   そのままデフォルトで突っ走って、、(ほんとはセキュリティグループとかどのサブネットとかですが。。)   バックアップもなしで。。   Zoneがap-northeast-1aでSecondary Zoneがap-northeast-1cになりました。     ■ EC2インスタンスからデータベースにアクセス   先日支払いに怯えてインスタンスを全てterminateしてしまったので、、   普通にEC2インスタンス立てたのですが、MySQLクライアントとか面倒臭いかなと思って 網元なWordPressのAMI使って立てました。   この楽チンさはたまらないですね〜     ■ テーブルを作ってデータの出し入れをしてみる   SSHでEC2インスタンスに接続して、MySQLコマンドでRDSに接続して、 データベースを作ります。

mysql> create database hoge;
Query OK, 1 row affected (0.00 sec)

mysql> use hoge
Database changed

  フザけたテーブル作ってすみません。。w

mysql> create table hage_tbl(
    ->    hage_id INT NOT NULL AUTO_INCREMENT,
    ->    hage_when VARCHAR(10) NOT NULL,
    ->    hage_why VARCHAR(10) NOT NULL,
    ->    hage_how VARCHAR(10) NOT NULL,
    ->    PRIMARY KEY ( hage_id )
    -> );
Query OK, 0 rows affected (0.09 sec)

  インサート文を流してからクエリ投げてみます。良さげ。

[root@ip-10-134-128-186 ~]# cat hage.sql
insert into hage_tbl (hage_when, hage_why, hage_how) values ('20000102', 'natural', 'heavy');
[root@ip-10-134-128-186 ~]# mysql -hmydbinstance.cslehsosusgw.ap-northeast-1.rds.amazonaws.com -uawsuser -pxxxx -Dhoge < hage.sql
[root@ip-10-134-128-186 ~]# mysql -hmydbinstance.cslehsosusgw.ap-northeast-1.rds.amazonaws.com -uawsuser -pxxxx -Dhoge
〜略〜
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

mysql> select * from hage_tbl;
+---------+-----------+----------+----------+
| hage_id | hage_when | hage_why | hage_how |
+---------+-----------+----------+----------+
|       1 | 20000102  | natural  | heavy    |
+---------+-----------+----------+----------+
1 row in set (0.00 sec)

  って事で、カウント文なSQLも作って、

[root@ip-10-134-128-186 ~]# cat hage_select.sql
select count(*) from hage_tbl;
[root@ip-10-134-128-186 ~]# mysql -hmydbinstance.cslehsosusgw.ap-northeast-1.rds.amazonaws.com -uawsuser -pxxxx -Dhoge < hage_select.sql
count(*)
1

  無限ループでdateコマンド&INSERT&SELECTして5秒スリープなんてシェル書いて、

#!/bin/sh
while :
do
  date
  mysql -hmydbinstance.cslehsosusgw.ap-northeast-1.rds.amazonaws.com -uawsuser -pxxxx -Dhoge < hage.sql
  mysql -hmydbinstance.cslehsosusgw.ap-northeast-1.rds.amazonaws.com -uawsuser -pxxxx -Dhoge < hage_select.sql
  sleep 5
done

流し続けながらフェールオーバーしてみます。   Zone: ap-northeast-1c で Secondary: Zone ap-northeast-1a なRDSを、、 #この前に一度フェールオーバーさせたので最初はaとc反対でしたが、ご容赦くださいw   Rebootしてやって、、   もちろん Reboot with Failover で。   Rebootingの間にスクリプトがピタっと止まりまして、、   availableになったので、スクリプトが再び動き出すかと思いきや。。。   結局15分くらい待ったのですが、ウンともスンとも言わないのでCtrl+Cしたら、、、

Wed May  8 20:43:51 JST 2013
count(*)
140
Wed May  8 20:43:56 JST 2013

^CCtrl-C -- sending "KILL QUERY 210" to server ...
Ctrl-C -- query aborted.
ERROR 2013 (HY000) at line 1: Lost connection to MySQL server during query
count(*)
140
Wed May  8 21:01:00 JST 2013
count(*)
141
Wed May  8 21:01:05 JST 2013
count(*)
142

  ん…。コリはどういう事なのでしょうか…w 再開はしましたが、なんとも気味の悪い。。。   ググってみると、同じような思いをされてる方がいらっしゃるようですね。。 Amazon RDSのフェールオーバーを試してみたが - OpenGroove

 

何やら不完全燃焼気味ですが、Javaなアプリでコネクションプールとかの場合どうなんだ?とか、 引き続きイジってみたいなと思います。。   RDSだからMySQLのログとか見れなさそうだけど、とはいえ、、的な感じもありそうだし、 その辺ももうちと見てみたいなと思います。   ちなみに、最近ちょこちょこAWSイジってて、毎回落とすのも面倒くさいなぁと思って ほったらかしてたら、先月はチョイチョイ請求されてた今日この頃ですw    

 

Amazon Web Services クラウドデザインパターン 設計ガイド
玉川 憲 片山 暁雄 鈴木 宏康
日経BP
売り上げランキング: 3,373