【学習記録】RDS基礎知識、特徴など

RDSの基礎がまだ理解浅い部分あったので、改めて勉強し直しました。
以前も似たような記事書いたかも知れませんが、このブログでは自分のスキル上げることが目的なので内容が重複していても問題なしと考えて、むしろ何回も同じ内容をアウトプットすることでだんだん理解深めたいと思います。
勉強の仕方は常に仮説を持って実験していきます。

RDSとは

AWSのフルマネージドサービス。データのバックアップやアップデートなどはAWSが行う。

AWSにDBを置く方法としてはRDSを使わずEC2にMySQLなどをインストールする方法もあるが、その場合は自分でメンテナンスする必要があるため基本的にRDSの方が運用・構築が楽。

基本的にRDSは外部から直接通信できないようにプライベートサブネットに置く。

メモ:
ちゃんと確認できていないが多分パブリックサブネットに置こうと思えば置けるけど、作法としてプライベートサブネットに置くということだと解釈している。作法なのかそれともAWSでの仕様として不可能なのかは切り分けておきたいところ。
->もし仕様でパブリックサブネットに置くことができないなら間違ってパブリックサブネットにRDSを置いてしまうという事故は心配する必要がないけど、あくまで作法であってパブリックサブネットに置くこと自体は可能なら設定を間違えてパブリックサブネットに置く可能性はあると認識できる。

RDSを作成する前に二つ別々のアベイラビリティーゾーンにパブリックサブネットを作っておく。(これも仕様ではなく推奨事項?)->RDSは構築の際に冗長化のため複数のアベイラビリティーゾーンを必要とするから。一台のDBで何かトラブルがあっても別のアベイラビリティーゾーンのDBが稼働してシステムがダウンしないようにする。

RDSはフルマネージドサービスのため、SSHで接続してDBの設定を行うことはできない。
そのためユーザーが変更を行う部分は「設定グループ」としてAWSから提供されている。
設定グループには以下がある。

  • DBパラメータグループ RDSへの接続数などのDB設定値を設定する。

docs.aws.amazon.com

  • DBオプショングループ
    RDSへの機能追加を設定する。

docs.aws.amazon.com

  • DBサブネットグループ
    RDSを起動するサブネットを設定する。

docs.aws.amazon.com

RDSではマルチAZを簡単に構築できる。
Master、Slave(Masterのコピー)を別のAZに置いて、通常はMaterを使い、トラブルが発生した時にSlaveに自動で切り替わる。それによってサービスが止まらないようにする。
メモ:
MasterもSlaveもエンドポイントは同じ。(アプリ側はDBがSlaveに切り替わっても特に設定を変える必要はないはず)
マルチAZを設定するには事前に別々のAZにサブネットを二つ用意しておく必要がある。

パフォーマンス向上させる方法として、リードレプリカを構築する方法がある。
複数のRDSインスタンスを立ち上げて、Masterと同期された読み取り処理専用のRDSインスタンス(リードレプリカ)を用意しmDBの挿入や更新処理はMasterで行い、読み取りの処理はリードレプリカで行うことでDBの負荷分散を実現できる。
メモ:
料金はけっこうかかりそうな気がするので実用例など調べてみたい。

RDSを使って運用が楽になるポイント
  • 1日1回バックアップを自動で取得する ->このバックアップをスナップショットと呼ぶ。
  • スナップショットを使ってRDSインスタンスを作成できる ->スナップショットからRDSを作成することをリストアと呼ぶ。
  • 自動でメンテナンスが行われる。OSやDBのマイナーバージョンアップデートなどを指定した時間に行える。
  • DBの各種メトリクスが毎分取得され、それを確認することで監視も行える。