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 | インスタンスクラス
| ||
--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 | -i | IP アドレス範囲。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 に接続できました。
この通り、確かにデータベースも作成されています。