AWSをいじり倒す(5.RDS-MySQL)
RDSを作ってみる。今回はMySQLで作る。
RDSの画面からスタート。
データベースの作成
次の画面
簡単作成なるものができたらしい。
使うだけならこっちでいいのかも。
今回は標準作成でいく。
Auroraの猛プッシュをよくみるので使ってみたいけど、今回はMySQL
テンプレート を選ぶ
MySQL - AWSのRDSデータベース作成時の設定について|teratail
単に無料枠は時間やサイズに制限があるだけみたい。今回は無料枠でOK
設定
インスタンス識別子はtest-database-1に。
ユーザ名は、今回はadminでいいか。
パスワードはせっかくだから自動生成してもらおうかな。
でも、どこでパスワード確認するんだろうか(要確認その1)
DBインスタンスサイズ
無料枠だと、ここがまったく選びしろなく固定となるようだ。
(試しに本番用を選ぶと選択肢が増えた)
ストレージ
割り当てはSSD/20GBでいいとして
自動スケーリングはこれ日本語変だな??
「指定したしきい値を超えた場合にストレージを増やす」と書いてあるのに
「最大ストレージしきい値」を書けって。しきい値って言葉の使い方おかしくない?
【DBのディスクサイズ管理が簡単に】RDSのストレージがストレージの自動スケーリングをサポートしました! | Developers.IO
これによると、例えば上の画像の設定だとMAX1000GiBまで増やすという意味でOKらしい。
拡張のタイミング=いわゆるしきい値は勝手に考えてくれるんだろう。
可用性と耐久性
無料枠では選べないらしい。本番環境だと必須だろうなぁ
接続
VPCを指定する。
いろんなサービスでVPC指定しろと出てくるところを見ると、
AWSで何かしようと思ったらまずはVPCを作るところから取り掛かるのがよさそう。
追加の接続設定
サブネットグループ・・・RDSが使えるサブネットを指定するところ。既存のグループを選ぶとかはできない。新しいDBサブネットグループの作成、ということは新たなサブネットが生成されるのか?(要確認その2)
パブリックアクセス可能・・・同一VPC内にEC2を作るつもりなので、なし
VPCセキュリティグループ・・・説明を読む限りRDS用に作った方がよさげだが、ここでは名前しか付けられない。設定は自動なのか?(要確認その3)
データベースポートはこのまま。
以下のような感じに設定
認証
選びしろなし
追加設定
最初のデータベース名。
ここで名前入れておけばデフォルトでDBを用意してくれるようだ
適当にtest-mydbとしようと思ったら、ここは英字、数字と _ 以外
だめらしい。test_mydbにする。
バックアップ
保持期間は7日もいらないので1日にしておく
モニタリング
せっかくだからモニタリングは有効に。有料だけど。
ログのエクスポート
どんなタイミングで何のログがでるのかわからないので、全チェック
メンテナンス
メンテナンス中のダウンタイムについては以下。
必要とされる Amazon RDS メンテナンス中のダウンタイムを最小限に抑える
何をメンテナンスするか+マルチAZかどうかによってダウンタイムの影響が変わるが
完全0にはならないぽい。
使えない時間が存在する前提で運用しないとだめということか。
削除保護
今回は消えてもヨシ!
これでやっとこさ設定が完了。こりゃ長いわ・・・。
簡単作成ボタンができたのも頷ける。
データベース作成ボタンを押して完了。
作成中・・・。
識別子のところクリックするとステータスが情報欄でわかる。作成中
バックアップ中・・・
数分と書いてあるけど、結構時間かかるなあ。
利用可能。
さて、要確認事項をみていく
(要確認その1)自動生成されたパスワードはどこに?
ステップ 1: RDS DB インスタンスの作成 - Amazon Relational Database Service
[Auto generate a password (パスワードの自動生成)] – このオプションは無効にします。
公式ガイドが自動生成使ってなくて草
そうこうしているうちに、パスワードのありかの記載を見つけた
DB クラスターを作成して Aurora MySQL DB クラスターのデータベースに接続する - Amazon Aurora
確かに作成中に青い帯出てた!でももう消えてるがな!!!オワタ
落ち着いて、ここの変更ボタンから
パスワードの再設定を行う。
変更をすぐやってしまうかどうか
もちろんすぐ変更。
自動生成、なんもいいことないじゃん・・・。
(要確認その2)サブネットはどう切られたのか
なんだか知らない子が2人いますね。
クリックしてみると
いや知ってる子やん。自分で作ったサブネットが列挙されているだけっぽい。
「新しい」DBサブネットグループの作成とは一体・・・。
(要確認その3)セキュリティグループ
なんじゃこりゃ案件。
パブリックアクセスは無しにしたのに、自宅のグローバルIPソースでのアクセス許可設定が入っている上に、VPC内からのアクセス許可はなし。全然違う。
以下のように書き換えた。
なんでこんな初期設定になってたのか謎。
自動で作ってくれる系はありがたいこともあるけど、チェックはしないといけないなぁ
次に、リードレプリカを作成する。本体からコピーされた読み取り専用のRDS。
設定画面。
この辺はそのままでよさげ。
マルチAZ配置のところ、リードレプリカのさらにスタンバイの作成もできるのね
ネットワーク&セキュリティ
AZに本体とは別のAZ(2b)を指定。他はこのままでよさそう
暗号化はなし
設定
DBインスタンス識別子に適当な名前を入力。
なんか赤線入ったんですけど、また僕何かやっちゃいました?
何いれてもこの赤線が消えないので無視
ポートはそのまま
モニタリング
はリードレプリカまではしなくていいか。
ログは全チェック
メンテナンス
自動アップグレードの通知を受け取るかどうか。後からオフにもできる
以上で設定完了、作成ボタンを押す。
できてるできてる。
さて、接続確認を行っていく
RDSに接続するためのEC2を立ち上げて、SSHで接続する
そこから、RDSに繋いでみる。
接続先はRDSの画面から確認できるエンドポイント
まずEC2にmySQLクライアントをインストール
次に、データベースに接続
mysql -h test-database-1.ccoqjumqewod.us-east-2.rds.amazonaws.com -u admin -p
パスワードを入力すると・・・
お、つながった。
データベース一覧を表示するコマンドを投入
show databases;
おー、test_mydbもちゃんとできてる。
中身は空っぽなんですけどね。
リードレプリカにも繋いでみる。
エンドポイントを確認して
接続コマンド投下
読み取り専用である事の確認
試しにテーブルを作ろうとすると怒られた。
確かにリードレプリカだ。
メインの方でテーブルを作ってみる
これをリードレプリカ上で確認すると、ちゃんとコピーされていた。
しかし、慣れてなさすぎてセミコロン打ち忘れ多すぎわろた。
データベースの扱い方自体もそのうち勉強せねばならんが、
今回はRDSを使うまでが目標なので、このくらいにしておく。
拡張モニタリングを有効にしたので、様子をみてみる。
CloudWatchさんが働いている模様
って、プルダウンから選ばないと拡張モニタリングにはならんらしい。
上のは無料で見れるんか
拡張モニタリングをオフにすれば、無料枠におさまるはずなので、オフにしておく。
しかし、わざわざRecommendationsで拡張モニタリングいいぞーっていうぐらいなので、本格運用時はオンのほうがいいのかなぁ。
データベースの停止も試す。
リードレプリカを先に削除、
結構厳重やな。
本体を削除。
スナップショットを残してくれる、と。
お試しなので別にいらんのだけど、保存のされ方を確認するために残しておく
できた。EC2でいうAMIみたいなものかな。
いらないので削除を選んだら、一瞬で消えた。
進捗