今まで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