LoginSignup
3

More than 5 years have passed since last update.

マルチAZにしてみた - Amazon RDS

Posted at

本手順において、VPC1、サブネット2を作成済のものとする。


1.サブネットグループ

DBインスタンスをどのサブネットで起動しますか?と言うのを指定するグループです。

「サブネットグループ」から「サブネットグループの作成」
スクリーンショット 2019-02-19 18.53.20.png

以下の通り入力し「作成」

項目 説明
名前・説明 demo-subnet-group
VPC 作成済のVPC
アベイラビリティーゾーン 作成済のサブネットのAZ

スクリーンショット 2019-02-19 19.06.11.png
スクリーンショット 2019-02-19 19.11.45.png

ちなみに2つ以上のAZを指定しない場合、以下のようにエラーになります。
スクリーンショット 2019-02-19 19.11.53.png

2.パラメータグループ

パラメータグループを使って、GUIからMYSQLなどの設定値をいじっていくことになります。(SSHはできない。)

「パラメータグループ」から「パラメータグループの作成」
スクリーンショット 2019-02-19 19.16.23.png

以下の通り入力し「作成」。

項目 説明
パラメータグループファミリー mysql5.7
グループ名・説明 demo-parameter-group

スクリーンショット 2019-02-19 19.22.01.png

3.データベースの作成

「データベース」から「データベースの作成」
スクリーンショット 2019-02-19 19.24.30.png

ステップ 1 エンジンの選択
「MYSQL」
スクリーンショット 2019-02-19 19.24.41.png

ステップ 2 ユースケースを選択します
「開発/テスト - MySQL」
スクリーンショット 2019-02-19 19.27.55.png

ステップ 3 DB 詳細の指定
今回は以下の通り設定しました。

項目 説明
ラインセンスモデル General Pubric Licence
DB エンジンのバージョン MYSQL5.7.23
DB インスタンスのクラス db.t2.micro 1vCPU,1GiB RAM
マルチ AZ 配置 別のゾーンにレプリカを作成します
ストレージタイプ 汎用(SSD)
ストレージ割り当て 20GiB
DB インスタンス識別子 demo-db
マスターユーザの名前 root
マスターユーザのパスワード 任意

スクリーンショット 2019-02-19 19.35.55.png
スクリーンショット 2019-02-19 19.36.10.png
スクリーンショット 2019-02-19 19.38.06.png

ステップ 4 [詳細設定] の設定
今回は以下の通り設定しました。

項目 説明
ネットワーク & セキュリティ 作成済のVPC
サブネットグループ 【1.サブネットグループ で作成したもの】
パブリックアクセシビリティ いいえ
パブリック IP アドレスを持たせて外から繋ぎに行くようにするかの設定です。
アベイラビリティーゾーン 指定なし
マルチAZ構成の作成のため
VPC セキュリティグループ 新規で VPC セキュリティグループ を作成
データベースの名前 空白
MYSQLコマンドで後で作成するものとします。
ポート 3306
DB パラメータグループ 【2.パラメータグループ で作成したもの】
オプショングループ default.mysql-5.7
IAM DB 認証 無効化
バックアップの保存期間 2日間
バックアップウィンドウ ウィンドウの選択で適当な日時を指定
拡張モニタリング 拡張モニタリングを無効にする
ログのエクスポート チェックなし
メンテナンス 指定なし

スクリーンショット 2019-02-19 19.45.53.png
スクリーンショット 2019-02-19 19.51.46.png
スクリーンショット 2019-02-19 19.52.02.png
スクリーンショット 2019-02-19 19.53.47.png
スクリーンショット 2019-02-19 19.53.56.png
スクリーンショット 2019-02-19 19.56.07.png

4.EC2からMYSQLのエンドポイントをRDSのものにする

構築済みのwebサーバーから、sshでRDSに接続してみます。

# EC2インスタンスへssh接続

$ ssh -i test.pem ec2-user@グローバルIP
# RDSのmysqlへ接続

$ mysql -h rds_endpoint -u root -p
# データベース作成

create database simple_blog;
use simple_blog;

# テーブル作成&データ挿入

create table posts (id int not null primary key, title varchar(100), detail varchar(1000), image varchar(1000));

insert into posts values (1, "XXXX-RDS", "XXXXXXXXXX", "./img/img1.jpeg");
insert into posts values (2, "YYYY-RDS", "YYYYYYYYYY", "./img/img2.jpeg");
# EC2インスタンスのindex.phpのエンドポイントをRDSのものにする。

$ sudo vim /var/www/html/index.php

<?php
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
?>

これでマスター側がフェールオーバーしたとき、自動的にフェールオーバー先のIPアドレスにDNSが解釈されますので、アプリケーションのコードを変えずとも、フェールオーバー先のDBをみることができます。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3