Home > 10月 29th, 2009

2009.10.29

Amazon RDS を使ってみた

|ω・) <放置しすぎて書きにくいんだよ

Amazon Relational Database Service という RDB サービスが開始されたので使ってみたよ。

1.使います!
RDSのサイトからサインアップして使います宣言をしてください。
http://aws.amazon.com/rds/

2.APIツールのダウンロード
まずはツールのダウンロード。
Amazon RDS Command Line Toolkit
このあたりにあった。
落としたファイルを適当な場所に展開。
うちはこんな場所へ。

C:\AmazonEC2\RDSCli-1.0.001

3.アクセスキーと環境変数の設定
アクセスキーとシークレットキーを指定してあげる必要がある。
展開したディレクトリの中に

credential-file-path.template

こんなファイルがあるはずなので、このファイルにアクセスキーとシークレットキーを指定。

AWSAccessKeyId=<Write your AWS access ID>
AWSSecretKey=<Write your AWS secret key>

templateじゃかわいそうなのでファイル名を適当に変更。

credential-file

次に環境変数の設定。

AWS_RDS_HOME=C:\AmazonEC2\RDSCli-1.0.001
AWS_CREDENTIAL_FILE=%AWS_RDS_HOME%\credential-file

RDSのホームと、さきほどのアクセスキーのファイルパスを指定。

準備完了。

4.起動してみる
コマンド

C:\AmazonEC2\RDSCli-1.0.001\bin > rds-create-db-instance testdb01 -s 10 -c db.m1.small -e MySQL5.1 -u master -p

パラメータの意味はこんな感じ。

  • testdb01って名前
  • ストレージは10GB
  • smallインスタンスで
  • MySQL5.1のエンジン使う(まだ他は選べないよね?
  • ユーザ名はmaster
  • パスワードは入力したやつ

結果

DBINSTANCE testdb01 db.m1.small mysql5.1 10 master creating 1
SECGROUP default active
PARAMGRP default.mysql5.1 in-sync

おおおお、creating されてます!

5.確認してみる
コマンド

C:\AmazonEC2\RDSCli-1.0.001\bin>rds-describe-db-instances

結果

DBINSTANCE testdb01 db.m1.small mysql5.1 10 master creating us-east-1d 1
SECGROUP default active
PARAMGRP default.mysql5.1 in-sync

まだ creating 中!
ちょっと急ぎすぎた、おれ。

6.起動完了
再度確認コマンド。結果のヘッダも出力してみた。

C:\AmazonEC2\RDSCli-1.0.001\bin>rds-describe-db-instances –headers

結果

DBINSTANCE DBInstanceId Created Class Engine Storage Master Username Status Endpoint Address
Port AZ Backup Retention
DBINSTANCE testdb01 2009-10-29T03:23:02.312Z db.m1.small mysql5.1 10
master available testdb01.cvircfsordtw.us-east-1.rds.amazonaws.com 3306 us-east-1d 1
SECGROUP Name Status
SECGROUP default active
PARAMGRP Group Name Apply Status
PARAMGRP default.mysql5.1 in-sync

available きたこれ!

testdb01.cvircfsordtw.us-east-1.rds.amazonaws.comってアドレスに
ポート3306でつながるようです。

7.つないでみた
mysql でつないでみた(なぜかこれだけLinux)。

$ mysql -h testdb01.cvircfsordtw.us-east-1.rds.amazonaws.com -P 3306 -u master -p

あれ。。。つながらない。

どうやらセキュリティの設定変更をしなければいけないらしい。

C:\AmazonEC2\RDSCli-1.0.001\bin>rds-authorize-db-security-group-ingress default –cidr-ip 0.0.0.0/0 –headers

これでインターネットのどこからでもつながるぜ!
(ちゃんと使う人はこんなことしちゃいけないんだぞ

再度接続。

$ mysql -h testdb01.cvircfsordtw.us-east-1.rds.amazonaws.com -P 3306 -u master -p

結果

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 34 to server version: 5.1.38-log

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.

mysql> show databases;
+——————–+
| Database    |
+——————–+
| information_schema |
| innodb      |
| mysql      |
| tmp       |
+——————–+
4 rows in set (0.19 sec)

つながった!
見える!見えるぞ!

8.スケールアップしてみた
スケール変更ってすごくね?
smallからlargeへ変更を試してみた。

コマンド

C:\AmazonEC2\RDSCli-1.0.001\bin>rds-modify-db-instance testdb01 -c db.m1.large –apply-immediately

結果

DBINSTANCE testdb01 2009-10-29T03:23:02.312Z db.m1.small mysql5.1 10
master available testdb01.cvircfsordtw.us-east-1.rds.amazonaws.com 330
6 us-east-1d 1 db.m1.large
SECGROUP default active
PARAMGRP default.mysql5.1 in-sync

ん?何も変化がなさそうだぞ。

状態を確認。
コマンド

C:\AmazonEC2\RDSCli-1.0.001\bin>rds-describe-db-instances

DBINSTANCE testdb01 2009-10-29T03:23:02.312Z db.m1.small mysql5.1 10
master modifying testdb01.cvircfsordtw.us-east-1.rds.amazonaws.com 330 6 us-east-1d 1 db.m1.large
SECGROUP default active
PARAMGRP default.mysql5.1 in-sync

modifying。
しばし待たれよ。

7分くらい経過後。。。

コマンド

C:\AmazonEC2\RDSCli-1.0.001\bin>rds-describe-db-instances

結果

DBINSTANCE testdb01 2009-10-29T03:23:02.312Z db.m1.large mysql5.1 10
master available testdb01.cvircfsordtw.us-east-1.rds.amazonaws.com 330 6 us-east-1d 1
SECGROUP default active
PARAMGRP default.mysql5.1 in-sync

db.m1.large きたこれ!

ところで modifying 中ってどうなってるの?
再度mysqlで確認。

mysql> show databases;
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect…
ERROR 2003 (HY000): Can’t connect to MySQL server on ‘testdb01.cvircfsordtw.us-east-1.rds.amazonaws.com’ (111)
ERROR:
Can’t connect to the server

あ、切れた。

mysql> show databases;
No connection. Trying to reconnect…
ERROR 2003 (HY000): Can’t connect to MySQL server on ‘testdb01.cvircfsordtw.us-east-1.rds.amazonaws.com’ (111)
ERROR:
Can’t connect to the server

つながらない。

mysql> show databases;
No connection. Trying to reconnect…
Connection id: 173
Current database: *** NONE ***
mysql> show databases;

+——————–+
| Database    |
+——————–+
| information_schema |
| innodb      |
| mysql      |
| tmp       |
+——————–+
4 rows in set (0.19 sec)

つながった。
ちょっと(数分?)切れるけれど、アドレスの変更なくそのまま再開されるようです。

ちなみにスケールダウンもできました。

9.遊び終わったので終了
コマンド

C:\AmazonEC2\RDSCli-1.0.001\bin>rds-delete-db-instance testdb01

結果

Once you begin deleting this database, it will no longer be able to accept
connections.
Are you sure you want to delete this database? [Ny]y
rds-delete-db-instance: Malformed input-FinalDBSnapshotIdentifier is required u
nless SkipFinalSnapshot
is specified.

スナップショットどうするか聞かれた。。。ごめん。
そのまま落とせないなんて親切なやつだな!

スナップショットとらないよオプション付きで実行。

コマンド

C:\AmazonEC2\RDSCli-1.0.001\bin>rds-delete-db-instance testdb01 –skip-final-snapshot

結果

Once you begin deleting this database, it will no longer be able to accept
connections.
Are you sure you want to delete this database? [Ny]y
DBINSTANCE testdb01 2009-10-29T03:23:02.312Z db.m1.small mysql5.1 10
master deleting us-east-1d 1
SECGROUP default active
PARAMGRP default.mysql5.1 in-sync

終了!

とりあえず
起動 -> スケールアップ -> 終了
まで試してみた。

かなり簡単です。
スケールアップもスケールダウンも自由自在です。
バックアップも勝手にしてくれるようです。

ちなみに11月1日からAmazon EC2のインスタンス料金が下がるんですが
下がったインスタンス料金と比較するとRDSは30%高いです。

いいサービスなんだが。。。高いか安いかはまた考えよう。