n2p blog
キャンペーンやSNSの
"ためになる"情報を
執筆しています。
【初心者向け】RDSを立ち上げてEC2につなげてあげよう!【AWS】
更新日:2022.01.10 (公開日:2015/09/25)
今回はAWSのデータベースサービスの一つ『RDS』インスタンスの立ち上げとEC2からの接続について初心者でも簡単に出来るよ!ってことを書いていきます。
AWSのコンソールが日本語対応になりましたので、随分わかりやすくなったと思います。
今日のテーマ
- 『RDS』とは?
- 『RDS』インスタンスを立ち上げる
- EC2から接続
- まとめ
『RDS』とは?
AWSの展開するデータベースサービスの一つ。EC2のように簡単に立ち上げ、運用ができるリレーショナルデータベースのことです。
リレーショナルデータベースと言うのはデータをテーブル表形式で管理するデータベースのこと。
僕は最初この説明さっぱりでした。
というわけで、この形でデータの保守、管理ができるデータベースサービスがRDSです。
前々回MySQLインストールしましたが、あれは今使っているEC2に直接インストールしたもので、EC2がウェブサーバー兼データベースサーバーをしているという状態です。
対して、RDSはいわゆる独立したデータベースサービスで、より耐障害性に優れ、セキュリティー面でもより安全に使えるという代物。
???
これも最初全く意味がわかりませんでした。
要するにEC2 とは別のデータベースを作って繋げようということでした。
では、早速作ってみよう。
『RDS』インスタンスを立ち上げる。
AWSのServiceからRDSを選ぶと左上の画面が表示されるのでここは何も考えず「DB インスタンスの起動」をクリック。
次に右上データベースエンジンの選択です。
MySQL、PostgreSQL、ORACLE、SQLServer から選べます。
目的に併せて選んでください。
今回はMySQLを選びます。そのまま「選択」をクリック。
左下の画面で商用利用するかどうか聞かれています。「はい」にして次に進むとデフォルトでMultiAZやIOPSが有効にされます。さらにインスタンスの容量なんかが選択された状態で表示されます。
要するに商用利用に適したオススメ設定みたいな感じだけど、この設定だとお金かかるので「いいえ」で自分で設定してみます。
右下画面でデータベースのスペック設定を行っています。
選択できる項目について説明していきます。
- ライセンスモデル はデータベース使用における料金制の選択。使用するデータベースのライセンスを別途取得している場合など選択する事が出来ます。MySQLは選択肢が無いのでそのままで。
- DBエンジンのバージョン データベースのバージョン指定です。特別指定する必要が無いのであれば、最新のものを選択するといいでしょう。
- DB インスタンスのクラス データベースのCPU数やメモリ容量などの基本スペックを選択できます。コチラのページでスペックと料金などを確認して必要なスペックを選択してください。因みに最小のdb.t2.microは1年間の無料対象枠です。
- マルチ AZ 配置 各リージョンには物理的に隔離された複数のAZ(Avalability Zone)と呼ばれるデータセンターがあり、EC2やRDSでインスタンスを作る際にどのAZにインスタンスを作るか選択できます。ここでYesを選ぶと他のデータセンター内にあるサーバーと連動させる事が出来る。これによって、aに障害が起きてサーバーがダウンしてもbでサービス自体は持続させるなんて冗長性を持たせた運用も容易にできる。でもお金がかかるので練習や個人ブログなんかの運営の時はNoにしといたほうがいいかも。
- ストレージタイプ ストレージのパフォーマンスについての選択です。デフォルトのGeneral Purpose(SSD)は個人含め小中規模のブログサイトなどの運営時に適しています。Provisioned purpose(SSD)は、インスタンスのクラスによって上限が変わりますが最高で30,000IOPS(※)のバースト機能を備えています。データベースに対し大量の読み書き込みがある大規模なサービス向けです。MagneticはこのIOPS機能がついていない、頻繁な読み書き込みをしないデータベースの場合や練習の時などに向いている。性能が低いほうが料金発生した時の料金は安くなります。詳細な無料枠条件はコチラ。
- ストレージ割り当て ストレージの容量です。練習なら初期値5GBのまま、20GBまでは無料枠です。
- DB インスタンスの識別子 データベースインスタンスの名前です。あくまでインスタンス名なのでデータベース名ではありません。EC2コンソール上での識別のためのものです。好きな名前で構いません。
- Master Username DB Instance Identifierに対するユーザー名です。好きな名前で構いません。
- マスターパスワード パスワード設定です。
- パスワードの確認 パスワードの確認です。
※IOPS ディスクやストレージの性能を指標する。ある条件下での1秒間における読み書きが出来る回数を示している。
以上を入力できたら「次のステップ」をクリック。
とここまで設定出来たら「DBインスタンスの作成」をクリック。
するとDBができてる!
ステータスが利用可能になったら接続できます。
EC2から接続
では、次のようにコマンドしてみます。
[fusion_builder_container hundred_percent=”yes” overflow=”visible”][fusion_builder_row][fusion_builder_column type=”1_1″ background_position=”left top” background_color=”” border_size=”” border_color=”” border_style=”solid” spacing=”yes” background_image=”” background_repeat=”no-repeat” padding=”” margin_top=”0px” margin_bottom=”0px” class=”” id=”” animation_type=”” animation_speed=”0.3″ animation_direction=”left” hide_on_mobile=”no” center_content=”no” min_height=”none”][html]
$ mysql -h testdb.crt8edsdrydm.ap-northeast-1.rds.amazonaws.com -u testuser -p
-h はホストの事、ホストはそのサーバー(インスタンス)のある場所を示している 。
testdb.crt8edsdrydm.ap-northeast-1.rds.amazonaws.comの部分はRDSのEndpointを入れてください。
-u はユーザー指定です。先ほど記入したユーザー名を入れてください。
-p はパスワードを使用するという意味です。
[/html]
因みに、前々回EC2自体にインストールしたMySQLサーバーにもちゃんと接続できます。
[/fusion_builder_column][fusion_builder_column type=”1_1″ background_position=”left top” background_color=”” border_size=”” border_color=”” border_style=”solid” spacing=”yes” background_image=”” background_repeat=”no-repeat” padding=”” margin_top=”0px” margin_bottom=”0px” class=”” id=”” animation_type=”” animation_speed=”0.3″ animation_direction=”left” hide_on_mobile=”no” center_content=”no” min_height=”none”][html]
$ mysql -u root -p
これだけです。今いるインスタンス自体に入っているのでホスト指定は要りません。
パスワード指定もしてますが最初はパスワードの設定もしていないので、Enter Password もそのままenterで入れます。
[/html]
まとめ
- RDSは独立したリレーショナル型のデータベースインスタンス。Webサーバーなどから独立しているので、運用方法の幅も広くセキュア。それぞれ専用のコンソール画面で管理できるので管理もしやすい。
- 設定で特にポイントになるのはVPCとSecurity Groupの指定。これらをわかりやすく自由に指定できる点が非常にユニーク。
- Endpoint は今回の接続以外にもPHPやPerlなどのスクリプト言語でデータベースに接続する際にも使用する。ユーザー名、パスワードと3つ一緒にいつの間にか暗記しているくらい大事。(する必要は全くない)
参考にさせていただいたサイトさんやら参考書やら
本家
AWS Web Services ブログ
『Amazon Web services ではじめる Webサーバー』
前回『【初心者向け】PHPがブラウザで正しく表示されない時の対処【EC2インスタンス】』
次回『』[/fusion_builder_column][/fusion_builder_row][/fusion_builder_container]