#RDS(Relational DAtabase Service)
マネージドRDBサービス。最大のメリットは運用効率化。オンプレミスでも使い慣れたデータベースエンジンから好きな物選択できる。AWS独自のAuroraも選択可能。
・選べるエンジン
Aurora、MySQL、PostgreSQL、ORACLE、SQLServer、MariaDB
・NoSQLのエンジン
DynamoDB、ElastiCache、Neputune、DocumentDB、Keyspaces
##RDSの特徴
###・マルチAZ
1つのリージョン内の2つのAZにDBインスタンスをそれぞれ配置し、障害発生時やメンテナンス時のダウンタイムを短くすることができるサービス。
#####マルチAZの注意点
ー読み込み速度が遅くなる。シングル構成よりも書き込みやコミットにかかる時間が長くなる。テスト環境の際もマルチAZで確認しないと、本番環境がマルチAZで、徹すと環境がシングルの場合、問題が発生する可能性がある。
ーフェイルオーバーには60秒から120秒かかる。
###・リードレプリカ
更新用と参照用にDBインスタンスを分けることが可能。負荷分散を行える。マスターとリードレプリカのデータ同期は、非同期レプリケーション方式なので、タイミングによっては、マスターの更新がリードレプリカに反映されていないことがある。
参照専用のレプリカを最大5台。Auroraのみ最大15台設置可能。
###・バックアップ/リストア
ー自動バックアップ
バックアップウィンドウと保持期間を指定することで、1日1回自動的にバックアップ(スナップショット)を取得できるサービス。保持期間は、最大35日。バックアップからDBを復旧する場合は、取得したスナップショットを選択して新規でRDSを作成する。
ー手動スナップショット
任意のタイミングでRDSのバックアップを取得できるサービス。1リージョンに100個まで取得可能。
ーデータのリストア
RDSにデータをリストアする場合は、自動バックアップもしくは手動スナップショットから新規RDSを作成する。
「リストアとは」
ハードディスクなどの記憶装置が破損するなどしてデータが失われた際に、以前に取っておいたデータの複製を書き戻すなどして復元することをリストアという。
ーポイントタイムリカバリー
直近5分前から35日前まで任意のタイミングの状態のRSDを新規作成できる。
###・ストレージの容量変更
ストレージ容量は設定変更で増加させることはできるが、減少させることはできないので注意
##セキュリティ
データ暗号化の対象
・DBインスタンス
・自動バックアップ
・リードレプリカ
・スナップショット
暗号の方式は、S3やKMSなど利用する。
##シャーディング 書き込み処理のスケーリング
データベース内の複数のテーブルにデータを分割するための一般的な概念です。リクエスト増加などで単一のマスターDBの運用で限界がある場合に、一定のルールに従いデータを複数のDBに振り分けることでアクセスを分散させることができます。
例、ID:0〜500はマスター1、ID:501〜1000まではマスター2
##RDSの拡張モニタリングを有効化
DBインスタンス上のさまざまなプロセスまたはスレッドがCPUをどのように使用しているかを常時モニタリングするためには、RDSの拡張モニタリングを有効化することが必要です。これにより、DBインスタンスのOSのリアルタイムメトリックスが確認できるようになります。 RDSコンソールを使用してDBインスタンスのメトリクスを表示でき、CloudWatch Logsからの拡張モニタリングを利用することができます。 デフォルトでは、拡張モニタリングメトリクスは30日間CloudWatch Logsに保存されます。
##RDSの読み取りキャパシティを向上させために「3つの対応」
・RDS リードレプリカによって、データベース (DB) インスタンスの読み込みパフォーマンスと耐久性が向上します。
・高性能なインスタンスタイプに変更してスケールアップすることでDBの読み込みパフォーマンスが向上します。
・ElastiCacheをRDSの前面に配置することで、RDSの読取処理が多いデータをキャッシュとして保持して、インメモリ上で高速処理することができます。
読み取り処理の負荷軽減をリードレプリカによって実施することが最適な構成となります。MySQL、MariaDB、PostgreSQL、Oracle では、各 DB インスタンスに最大 5 個のリードレプリカを追加できます。
コスト効率を考えた場合はリードレプリカの作成を優先させることになります。
##RDSプロキシ
アプリケーションとRDSデータベースの間の仲介役として機能します。RDS プロキシは必要となるデータベースへのコネクションプールを確立および管理し、アプリケーションからのデータベース接続を少なく抑える機能です。
Lambda関数はRDSエンドポイントではなくRDSプロキシを利用して接続することが求められます。RDSプロキシはLambda関数の同時実行によって作成された大量の同時接続をスケーリングするために必要なコネクションをプーリングします。これにより、Lambdaアプリケーションは、Lambda関数呼び出しごとに新しいコネクションを作成するのではなく、既存のコネクションを再利用できます。 RDSプロキシを利用せず、エンドポイントを利用するとLambda関数によってコネクションが多数発生して処理が上手くいかなくなってしまいます。
##Trusted Advisor
使用率の高い全てのEC2インスタンスを検出することができます。
Trusted Advisor は AWS で利用している EC2 や RDS などのサービスを「コスト」「セキュリティ」「パフォーマンス」「耐障害性」「サービスの制限」について、ベストプラクティスに基づいたアドバイスを自動的に行なってくれるサービスです。