まえがき
こちらの記事の続編です。
目的
VueとSpringで作成したプロジェクトの構築手順の備忘録。 備忘録のため、詳細な説明を省略している部分があります。
前提
環境
やること
- RDSへDBサーバーを移行する
やらないこと
- DBの冗長化
構成
なぜRDSに移行するのか?
- 現状の構成では、Webサーバーの台数を増やしたいという要望が出てきた場合にDBサーバーもWebサーバーと同じだけ複製されてしまうから
- その場合、リクエストによってアクセスできるDBが変わる可能性がありデータの生合成が取れなくなるから
RDSとは?
マネージドなデータサービス
以下のRDBMSが使用可能
DBのバージョンはAWSが提供しているものしか選択できない
DBインスタンスのスペックに上限がある
DBインスタンスのOSにはログインできない
- パラメータグループとオプショングループによって設定をある程度変更することは可能
DBインスタンスの起動中でもストレージを増やすことが可能(減らすことは不可能)
マルチAZ配置を簡単に実現できる
リードレプリカ(読み取り専用DB)を使用することでDBインスタンスの負荷を低減することが可能
サブネットはパブリックにも配置可能(推奨はプライベート)
自動的にバックアップを取得する(トランザクションログ+スナップショット)
AmazonAuroraについて
- MySQLとPostgre SQLと互換性のあるRDBMS
- 処理能力が高く、MySQLの5倍、PostgreSQLの3倍
- 障害体制に優れている(3つのAZに6つのデータをコピーする)
構築
VPCに新規のセキュリティグループを作成
- インバウンドルールのソースにweb-appを選択。アウトバウンドルールは不要のため削除。
RDSに移動
RDSにサブネットグループの新規作成(サブネットがわかりづらいので注意。privateサブネットを選択すること)
パラメータグループの作成
RDSの作成
踏み台サーバー経由でインスタンスにログインし、
mysql -u admin -p -h [エンドポイント]
コマンドでMySQLサーバーにログインする`CREATE USER <User名> IDENTIFIED BY <パスワード>でユーザー作成
CREATE DATABASE <DB名>
でDB作成GRANT ALL PRIVILEGES ON
コマンドで権限の付与を行うRDSからログアウトし、
mysqldump -u root -p TempleTaskManager > tms-db_20220113.sql
コマンドを実行してEC2インスタンスのDBからデータをダンプする(下記のようにSQLファイルが生成されていればOKです)mysql -u tmsAdmin -p -h templetaskmanager.cbjux39qgfk7.ap-northeast-1.rds.amazonaws.com TempleTaskManager < tms-db_20220113.sql;
にてRDS のDBにデータをインポートするmysql -u tmsAdmin -p -h templetaskmanager.cbjux39qgfk7.ap-northeast-1.rds.amazonaws.com TempleTaskManager;
でRDS のDBにログインし、SHOW TABLES
コマンドでテーブルが生成されていることを確認念の為、SELECT文でデータも確認しておく
確認ができたら、MySQLからログアウトし、DBの接続先(application.properties)をRDSのエンドポイントに変更する
spring.datasource.url=jdbc:mysql://[エンドポイント]:[DBポート]/[DB名]
ELBのDNS名を利用してアプリケーションのURLにアクセスし、画面が正常に表示されればOk
sudo systemctl stop mysqld
を実行し、EC2で起動しているMySQLを停止するsudo systemctl status mysqld
を実行し、statusがinactiveになっていることを確認サーバー自動起動の設定をしていたので、そちらも
sudo systemctl disable mysqld
を実行して無効化しておきます(Removed symlinkとターミナルに表示されていればOKです)sudo systemctl is-enabled mysqld
を実行し、disableと表示されれば完了です
今回はここまでとなります。 お付き合い頂きありがとうございます。