Web/DB プログラミング徹底解説

ホーム > ./ > Amazon RDS (アマゾン RDS) 上の MySQL を利用する方法、コマンドの使い方

Amazon RDS (アマゾン RDS) 上の MySQL を利用する方法、コマンドの使い方

スポンサーリンク

Amazon RDS とは?

Amazon RDS (Relational Database Service) は米国アマゾンが提供している、データベースのクラウドコンピューティング利用環境です。

従来も SimpleDB というサービスがありましたが、Amazon RDS ではより本格的に MySQL のデータベースインスタンスが利用できるようになりました。

大規模なデータベースにも対応していますし、バックアッププランも含まれているので、自社でホストするより 断然コストパフォーマンスに優れた選択肢になる可能性があります。試さない手はありません。

Amazon RDS を始めよう!

Amazon RDS を使うのは簡単です。

この資料で説明しますが、データベースインスタンス (DB Instance) を起動し、DB インスタンスクラスとストレージキャパシティを選び、 自動バックアップ期間を選び・・・、などと設定していくだけでとりあえずデータベースは出来てしまいます。

ちなみに、DB インスタンスクラス (DB Instance Class) というのはスモールで 1.7 GB メモリ、 ラージで 7.5 GBという設定になっており、通常のホスティング環境よりスペック自体優れていると言って良いと思います。

環境設定

Amazon CLI コマンドラインツールの設定

Amazon RDS を操作するのに一番簡単な方法は、Amazon RDS コマンドラインツールキットを利用する方法です。 Amazon RDS のスタートガイドを参考に環境を作りましょう。

まず、Java の実行環境が必要です。Java バージョン 5 以上が必要です。お持ちで無い方は、http://java.sun.com/ から Java SE 6.0 などを ダウンロードしてインストールすると良いでしょう。

上記リンクからツールをダウンロードします。私は RDSCli.zip をダウンロードして、C:\Amazon 以下に保存し展開しました。

コマンドプロンプトを開き、次のように環境変数を設定します。

C:\>SET JAVA_HOME="C:\Program Files\Java\jre6"

C:\>SET AWS_RDS_HOME="C:\Amazon\RDSCli-1.0.004"

C:\>SET PATH=%PATH%;%AWS_RDS_HOME%\bin

C:\>SET AWS_CREDENTIAL_FILE=%AWS_RDS_HOME%\cred.txt

C:\>

ツールのパスなどは適宜読み替えてください。

次のように Java のバージョン情報が表示できれば Java の実行を確認できます。

C:\>%JAVA_HOME%\bin\java -version
java version "1.6.0_17"
Java(TM) SE Runtime Environment (build 1.6.0_17-b04)
Java HotSpot(TM) Client VM (build 14.3-b01, mixed mode, sharing)

C:\>

また、クレデンシャルファイルとして、%AWS_RDS_HOME%\cred.txt (C:\Amazon\RDSCli-1.0.004\cred.txt) にアクセスキーとシークレットキーを書いておきます。%AWS_RDS_HOME% にある credential-file-path.template を参考にしてください。

ここまで設定すれば、次のように rds コマンドのヘルプを表示できるはずです。

C:\>rds --help
Command Name                            Description
------------                            -----------
help
rds-authorize-db-security-group-ingress Adds a group/IP range to security group.
rds-create-db-instance                  Creates new database instance
rds-create-db-parameter-group           Create a database parameter group
rds-create-db-security-group            Creates a DB security group
rds-create-db-snapshot                  Creates new snapshot of a database instance.
rds-delete-db-instance                  Delete a Database Instance
rds-delete-db-parameter-group           Delete a database parameter group
rds-delete-db-security-group            Deletes a DB security group
rds-delete-db-snapshot                  Deletes a database snapshot
rds-describe-db-instances               Describes Database Instances
rds-describe-db-parameter-groups        Describe existing parameter groups
rds-describe-db-parameters              Describe all the parameter...part of a 
                                        DBParameterGroup
rds-describe-db-security-groups         Returns list of security groups.
rds-describe-db-snapshots               Describes Database Snapshots
rds-describe-engine-default-parameters  Describe the default DBParameterGroup
rds-describe-events                     Gets events that have occurred on the db
rds-modify-db-instance                  Modify a database instance
rds-modify-db-parameter-group           Modify the parameters in a DBParameterGroup
rds-reboot-db-instance                  Reboot a database instance
rds-reset-db-parameter-group            Reset the parameters in a DBParameterGroup
rds-restore-db-instance-from-db-snapshotCreates and populates a ne... 
                                        instance from a snapshot.
rds-restore-db-instance-to-point-in-timeCreates and populates a ne...
                                        ecified point in the past.
rds-revoke-db-security-group-ingress    Removes a group/IP range to security group.
version                                 Prints the version of the CLI tool and the API.

    For help on a specific command, type '<commandname> --help'


C:\>

アマゾン RDS を利用する

DB インスタンスを作成

DB インスタンスを作成するには rds-create-db-instance コマンドを利用します。

基本的な利用例は次の通りです。

> rds-create-db-instance --db-instance-identifier myinstance
   --allocated-storage 20 --db-instance-class db.m1.xlarge --engine MySQL5.1 
   --master-username mymasteruser --master-user-password mymasterpass 
   --db-name MyDatabase --headers

短い形式では次のように書けます。

> rds-create-db-instance --db-instance-identifier myinstance
   -s 20 -c db.m1.xlarge -e MySQL5.1 -u mymasteruser -p mymasterpass 
   --db-name MyDatabase --headers
オプション短縮形説明
--db-instance-identifierインスタンス識別子。1 から 63 文字を指定します。
--allocated-storage-s初期ストレージの割当てサイズ (GB)
--db-instance-class-cインスタンスクラス
db.m1.xlarge
db.m1.small
--engine-eデータベースエンジンを指定。現在は MySQL5.1 のみ。
--master-username-uデータベースユーザ
--master-user-password-pパスワード
--db-nameデータベース名

試しに私は次のようにコマンドを実行しました。

C:\>rds-create-db-instance --db-instance-identifier Keicode01 -s 5 
-c db.m1.small -e MySQL5.1 -u master -p yourpassword --db-name WPTest1
DBINSTANCE  keicode01  db.m1.small  mysql5.1  5  master  creating  1
      SECGROUP  default  active
      PARAMGRP  default.mysql5.1  in-sync

DB インスタンスを削除する

DB インスタンスの削除は rds-delete-db-instance コマンドで実行します。

デフォルトでは、削除の際データベースのスナップショットを取得します。 このときのスナップショット識別子は --final-db-snapshot-identifier 値 で指定します。 スナップショットの取得自体をスキップする場合は、--skip-final-snapshot を指定します。

C:\>rds-delete-db-instance keicode02 --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  keicode02  2009-11-02T00:49:23.749Z  db.m1.small  mysql5.1  5  
master  deleting  us-east-1a  1
      SECGROUP  default  active
      PARAMGRP  default.mysql5.1  in-sync

尚、スナップショットの表示は rds-describe-db-snapshots コマンドです。

利用可能な DB インスタンスを表示する

利用可能な DB インスタンスを表示するには rds-describe-db-instances コマンドを利用します。

試しにコマンドを実行します。確かに上で作成したインスタンス keicode01 が表示されました。

C:\>rds-describe-db-instances --headers
DBINSTANCE  DBInstanceId  Class        Engine    Storage  Master Username  Status    ...
DBINSTANCE  keicode01     db.m1.small  mysql5.1  5        master           creating  ...
      SECGROUP  Name     Status
      SECGROUP  default  active
      PARAMGRP  Group Name        Apply Status
      PARAMGRP  default.mysql5.1  in-sync

ネットワークアクセスの設定

DB インスタンスを作成したら、DB インスタンスへのアクセス設定を行わなければなりません。 DB インスタンスへのアクセスは DB セキュリティグループを利用して行います。 default という DB セキュリティグループは、DB インスタンスを作成したときに自動的に作成されます。 また、必要に応じて DB セキュリティグループを作ることも出来ます。

デフォルトでは DB セキュリティグループへのアクセスは有効になっていません。 つまり、誰もアクセスできない状態で作成されます。このため、必要なネットワークアクセスを設定しなければなりません。 これを行うにはネットワーク IP アドレス範囲を指定する方法と、既存の EC2 セキュリティグループを利用する方法があります。 ここでは IP アドレスによる指定を行います。

オプション短縮形説明
--cider-ip-iIP アドレス範囲。xxx.xxx.xxx.xxx/yy の形式で指定します。

私は単一の IP アドレスを許可するために、次のように指定しました。

C:\>rds-authorize-db-security-group-ingress default -i 123.123.123.123/32
SECGROUP  default  default
      IP-RANGE  123.123.123.123/32  authorizing

尚、セキュリティの設定を表示するには次のコマンドを利用します。

C:\>rds-describe-db-security-groups

また、一度許可したアクセスを取り消す場合rds-revoke-db-security-group-ingress コマンドを使います。

C:\>rds-revoke-db-security-group-ingress default -i 0.0.0.0/0
SECGROUP  default  default
      IP-RANGE  123.123.123.123/32   authorized
      IP-RANGE  0.0.0.0/0         revoking

DB インスタンスに接続

上記の設定を行えば、通常の mysql と同様に管理可能です。

ここでは試しに、MySQL Administrator GUI ツールを使って接続してみます。

MySQL に接続できました。

この通り、確かにデータベースも作成されています。

スポンサーリンク