SAA学習-信頼性設計-RDSによるマスタースレーブ構成
今回のテーマ:RDSによるマスタースレーブ構成のハンズオン実施
構成
事前準備(今回は概略と関連リンクを記載しておきます。)
- NATGWの作成およびElasticIPの払い出し
- ルートテーブルの関連づけ
before
after
- ELBの作成
- イメージの作成
- 起動設定およびAuto-ScalingGroupの作成(希望、最小を0台にしておくとよいかと思います。)
実施する項目が分かれば、ここまで20分程度で実装は可能だと思います。
実際の手順(RDB作成まで)
- マネージメントコンソール-RDSと検索しクリック
- サブネットグループよりDBサブネットグループを作成をクリック
- サブネットは構成図に合わせてプライベートサブネットを指定し、作成をクリック
- データベースよりデータベースの作成をクリック
- MySQLを選択とエンジンバージョンを指定します。
- マルチAZ構成にしたいため、学習用ですが開発/テストを選択します。
- DB識別子を指定し、マスターユーザーのアカウント情報を登録します。
- インスタンスサイズを指定します。(デフォルトたとm系のファミリアーとなるため要注意)
- ストレージサイズタイプやサイズなどを指定します。(ストレージタイプを汎用にしておけば安価にすみます)
また、自動スケーリングは有効としておき最初はスモールスタートにしてスケーリングをさせる方が実務ではよく使用されます。
- マルチAZ配置でスタンバイインスタンスを作成するを指定します。
- 認証方式を指定します。
- 追加設定でRDB名を任意で記載し、パラメータグループを指定します。(実務だと先にパラメータグループを使用する方が望ましいです)
- バックアップの取得方式などを確認します。(サイクルなど指定があれば変更します)
- モニタリング(監視の指定)およびログの出力に関して確認します。(すべて有効化しておくことが望ましいですが割愛します)
- 定期メンテナンスの指定を行います。(パッケージソフトとかのバージョンアップ対応を考慮するとマイナーバージョンの自動アップグレードの有効化は外す方がよいです)
- 利用コストを確認し、データベースの作成をクリック
cf)RDBへ日本時間に合わせるなどのオプションを指定する場合、オプショングループを新規に作成し作成したRDBへ適用します。(今回は割愛)
cf)実運用上ですと定期的にAmazon RDS SSL/TSL証明書を更新する作業があります。
- 作成したRDBが利用可能な状態になっていることを確認します。
- 新規でSGを作成すると「/32」の固定IPのみの指定となるため、VPC内のサブネットを許可する設定に変更するため、
適用しているセキュリティグループを選択し、インバンドルールの編集をクリック
実際の手順(RDBの接続確認・設定・リストア試験)
- mysqlコマンドを使用できるようにするため以下コマンドを実行
コマンド
yum install mysql -y
実行結果
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd Resolving Dependencies --> Running transaction check ---> Package mariadb.x86_64 1:5.5.68-1.amzn2 will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: mariadb x86_64 1:5.5.68-1.amzn2 amzn2-core 8.8 M Transaction Summary ================================================================================ Install 1 Package Total download size: 8.8 M Installed size: 49 M Downloading packages: mariadb-5.5.68-1.amzn2.x86_64.rpm | 8.8 MB 00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : 1:mariadb-5.5.68-1.amzn2.x86_64 1/1 Verifying : 1:mariadb-5.5.68-1.amzn2.x86_64 1/1 Installed: mariadb.x86_64 1:5.5.68-1.amzn2 Complete!
- 作成したRDBへ接続します
コマンドひな形
mysql -h RDBのエンドポイント名 -u ユーザー名 -p
コマンド例
mysql -h mysql.cupngjp8wkyf.ap-northeast-1.rds.amazonaws.com -u admin -p
- パスワードが聞かれれるため応答し、RDBへ接続します。
- DBを作成します。
コマンド
create database testdb;
- DBへ接続します。
コマンド
use testdb;
- 試験用のテーブルを作成します。
コマンド
create table testdb.account(id int,name varchar(20));
- 作成したテーブルを確認します。
コマンド
show tables;
- 作成したテーブルに対しデータを入れます。
コマンド
insert into account values(1001,"testuser1"); insert into account values(1002,"testuser2");
- テーブルへインポートしたデータを確認します。
コマンド
select * from account;
結果のまとめ
実際の手順(RDBの復元確認)
- スナップショット名は任意で記入し、スナップショットの取得をクリック
- 利用可能であることを確認します。
- ターミナルに戻り追加のデータをインポートします。
insert into account values(1003,"testuser3");
結果
- RDBをいったん削除するため、DBからの接続を切ります。
コマンド
quit
業務の場合、RDBのインスタンス識別子を合わせるリストア対応が必要となります。
対応する方法は稼働しているインスタンスを削除し、スナップショットから復元します。
- マネージメントコンソールへ戻り、稼働しているRDBを選択しアクションから削除を選択します。
- 削除確認画面で、最終スナップショットの取得とフレーズ入力を記入後、削除をクリック
- 削除されたことを確認します。
- マネージメントコンソールへ戻り、取得したスナップショットを選択し、アクション-スナップショットを復元をクリック
- インスタンス識別子を基のものと同じ値にします、
- SGとサブネットは先程と同じものを指定します。
- インスタンスサイズおよびストレージも同様に指定します。
- 後の設定も同様に指定します。
- 追加設定の値も同様に設定指定したら、DBインスタンスの復元をクリック
- リストアされていることを確認します。(この状態までいけば接続確認はできたはずです)
- ターミナルに戻りRDBへ接続します
コマンド例
mysql -h mysql.cupngjp8wkyf.ap-northeast-1.rds.amazonaws.com -u admin -p
- DBへ接続し、先程のテーブルを確認します。
確認までの経緯ログ
MySQL [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test_rdb | | testdb | +--------------------+ 5 rows in set (0.00 sec) MySQL [(none)]> use testdb Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed MySQL [testdb]> show tables; +------------------+ | Tables_in_testdb | +------------------+ | account | +------------------+ 1 row in set (0.00 sec) MySQL [testdb]>
- testuser3が存在していないことを確認し問題ないことを確認します。
MySQL [testdb]> select * from account; +------+-----------+ | id | name | +------+-----------+ | 1001 | testuser1 | | 1002 | testuser2 | +------+-----------+ 2 rows in set (0.00 sec) MySQL [testdb]>
cf) スナップショットから復元したい場合、特定地点からの復元は稼働指定できなかったため、
リストア手法を要注意となります。(少し確認をしておきます。)
実際の手順(RDBの自動F/Oとリードレプリカの作成)
リードレプリカを作成するため、自動バックアップが有効である必要があります。
動作確認をするため1回再作成を実施しておきます。
リードレプリカの作成
- マネージメントコンソールよりデータベース-対象のRDBを指定し、アクションからリードレプリカの作成をクリック
- インスタンスタイプとマルチAZ配置の指定をします。(今回はそのまま)
- リージョン、サブネット、AZ、SGを指定します。(AZのみ指定しておきます。)
- DB識別子を指定します。(レプリカなどわかる名称の方がよいかも)
- その他の設定は変更せず、リードレプリカの作成をクリック
- リードレプリカが作成されたことを確認します。(画面ではレプリカ側が作成中ですがここまでいけば大丈夫です)
自動F/Oの動作確認
- マネージメントコンソールよりデータベース-対象のRDBを指定し、アクション-再起動をクリック
- フェイルオーバーで再起動にチェックを入れて、確認をクリック
- リージョンとAZがF/O先に変更されていることを確認します。
今回のテーマは以上です。
cf)検証用で使用したリソースをすべて削除しておかないと結構いい金額が発生するので、
失念しないようにしてください。