Dreamです。
前職はトラック運転手として配送を担当していた自分は日々勉強に追われる毎日です。
AWSの主要なサービスであるRDSのウェビナーを受講しました。DBとはなにか?から始めた自分なのでまだまだ難しい部分も多くありましたが、DBを扱う上で必要とされる様々な機能がサービスとして提供されているRDSにAWSの凄さを感じました!
今回はそんなRDSについて勉強した際のメモをまとめていきます!
はじめに
前回の記事( EC2 )とAWSオンラインセミナーには以下のURLを参考にして頂ければと思います。
AWS入門者がEC2のウェビナーを受けてみた!
AWS クラウドサービス活用資料集※ウェビナーを閲覧する場合はFlashが必要になります
ウェビナー受講メモ
今回はAmazonデータサービスの中のRDSについてウェビナーを受講したのでその際のメモを展開します。
■AWSで提供される主なデータベースサービス
・Amazon RDS → 構築、運用、拡張が容易なリレーショナルデータベース
( 例:トランザクションが必要な業務データベースなど )
・Amazon DynamoDB → シームレスな拡張性と高い信頼性を持つ高速なNoSQL
( 例:ユーザ属性、行動ログ、メタデータなど )
・Amazon Redshift → ペタバイト規模に拡張できる高速なデータウェアハウス
( 例:全社横断的なデータ分析基盤など )
・Amazon ElastiCache → 構築、運用、拡張が用意なインメモリキャッシュ
( 例:セッション情報、クエリ結果のキャッシュなど )
■Amazon RDSを利用するメリット
データベースを運用する上で求められる機能がサービスとして提供されているRDSを利用することで、
データベースを管理する人はより付加価値の高い業務に集中することが可能になる
【これまでのデータベース運用】
・バックアップスクリプトの作成や実装
・障害時のフェイルオーバー運用、障害サーバの再構築
・パッチ適用やスケールのためのメンテナンス作業
・各種ログ、メトリクスの可視化、アラート設定
・ハードウェア、ソフトウェアの保守切れによるマイグレーション
【RDSを利用した際のデータベース運用で行うこと】
・各データベースエンジンの特性を理解してパフォーマンスをチューニング
・ログ、メトリクスからボトルネックを特定、解消
・新しい背策に向けた検証やベンチマーク
・データベースを中心とした全体的なシステムアーキテクト
■Amazon RDSの特徴
①シンプルな構築
・シンプルな手順( 数クリックでDBが起動 )で高度なアーキテクチャを実現
②高い可用性の実現(マルチAZ間での同期レプリケーション)
・マルチAZ間での同期レプリケーション
③様々なパフォーマンスの向上オプション
・リードレプリカ、インスタンス、ストレージの変更
④複数のDBエンジンに対応
・インスタンスクラス、ディスクの種類とサイズなどを選択するだけで高度な機能を実装
⑤運用負荷を軽減する数々の機能が提供
・スナップショット / リストア / リネーム
・パラメータ / オプションの変更
・ソフトウェアメンテナンス、Cloud Watch / 拡張モニタリング
・イベント通知 / ログアクセス
⑥セキュリティ対策
・VPCへの対応
・アクセス制御
・KMSや業界標準の暗号化規格に対応
■シンプルな構築
AWSのコンソール画面から4ステップでGUI操作のみでDBが構築可能
■高い可用性の実現
・マルチAZデプロイメント( Multi-AZ )
◦同期レプリケーション+自動フェイルオーバー
◦アプリ側での対処は必要なし( エンドポイントは変わらない )
◦スタンバイ状態のDBはアクセス不可
・高い技術力を持つ技術者が行っていた設計をそのままサービス化
◦フェイルオーバーの発生タイミング
◦インスタンスやハードウェア障害
◦パッチ適用時などのメンテナンス時間
◦手動リブート時に強制フェイルーバー指定
■様々なパフォーマンスの向上オプション
リードレプリカ (Read Replica)
・レプリカDBで読み取り処理をスケールアウト( リードレプリカは5台まで増設できる )
※Auroraは15台まで
・マルチAZとの併用やクロスリージョン対応も可能
・インスタンスやストレージをマスターと異なるタイプに設定できる
・リードレプリカはスタンドアロンのDBインスタンスに昇格できる
・MySQL、MariaDBではパラメータ設定で書き込みも可能
・MySQL、MariaDB、PostgreSQL、Auroraに対応
・AWS Database Migration Service( DMS )によりOracle、SQL Serverでも実現可能
■複数のDBエンジンに対応
・提供される各エンジン毎の主要機能対応状況は以下になります
■運用負荷を軽減する数々の機能
スナップショットとリストア
・自動的なバックアップ( RDS標準機能 )
・自動スナップショット及びトランザクションログをS3に保存
・スナップショット
◦1日1回自動取得( バックアップウィンドウで指定した時間帯 )
◦保存期間は最大35日分( 0~35日の間で設定可能 )
◦手動スナップショットは任意の時間に可能( 手動スナップショットは削除されない )
・自動スナップショットはDBインスタンスのサイズと同サイズまでストレージコストが無料
・自動スナップショットはDBインスタンス削除と同時に削除( DBインスタンスを削除する前に最終スナップショットをとることを推奨 )
・リストア
◦リストア:スナップショットをもとにDBインスタンス作成
◦Point-in-Timeリカバリ:指定した時刻( 5分以上前 )の状態になるようDBインスタンス作成
・リネーム( RDSに接続する際に使用するエンド( FQDN )を切り替えるエンドポイント機能 )
■RDSインスタンスタイプ
・メモリ重視のR3、CPU重視のM4、開発・検証用のT2など
・RDSで使用できるストレージタイプ
◦汎用( GP2 )、プロビジョンドIOPS( PIOPS )から選択( Magneticは下位互換のためにサポート )
・オンラインでサイズ増加が可能( SQL Server以外 )
・汎用SSD容量に比例してIOPSが伸びる
・PIOPSは指定したIOPSを保証
■スケールアップ
・マネージメントコンソールやAPIからスケールアップ可能
・インスタンスタイプ変更時はインスタンス再起動で機能停止する( マルチAZで軽減可能 )
・コマンドライン( AWS CLI )からも可能
・スケールダウンも可能
・一時的にインスタンスタイプを大きくしてその後戻すことも可能(日中大きくして夜間は小さくするなど )
・ストレージサイズは拡張できるが縮小できない
・インスタンスタイプを変更するとCPU、メモリ、ディスクI/O帯域やネットワーク帯域も変更される
■設定変更( パラメータグループ、オプショングループ )
・RDSのサーバには直接SSHログインできない
・DBパラメータの変更はパラメータグループで設定しインスタンスに関連付ける
◦動的パラメータは直ちに適用される
◦静的パラメータはDBインスタンスを手動で再起動することで適用される
・オプション機能の追加はオプショングループで設定しインスタンスに関連付ける
◦OracleのTDE、Statspackなど
◦設定項目のオンオフが多い
■ソフトウェアメンテナンス
・メンテナンスウィンドウで指定した曜日・時間帯に自動実施
・安全性、堅牢性にかかわるソフトウェアパッチを自動適用( リブートを伴うケースあり )
・メンテナンスは数か月に一度の頻度で発生( 必ず毎週ではない )
・指定した時間帯の数分間で実施( メンテナンス内容により変動 )
・トラフィックが少ない曜日、時間帯をメンテナンスウィンドウに指定しておくとよい
・イベント通知を運用監視に組み込んでおくとよい
・マルチAZ配置にしておくことでダウンタイムを1~2分にすることが可能
■RDSで提供される監視機能
①監視( Cloud Watch対応 )
・各種メトリクスを60秒間隔で取得確認可能
・ホスト層のメトリクス( CPU使用率、メモリ使用量など )
・ストレージのメトリクス( IOPS、Queue Depthなど )
・ネットワークのメトリクス( 受信スループット、送信スループットなど )
②拡張モニタリング
・50種類以上のOSメトリクス
・プロセス一覧
・1秒~60秒間隔で取得
・特定のメトリクスのアラーム
・Cloud Watch Logsへの出力
・サードパーティーツール連携
・必要なメトリクスを選択するだけで可視化できる
■セキュリティ
【 VPCに対応 】
・VPC内部の任意のサブネットで起動可能
・起動先のサブネットをDBサブネットグル-プで事前に定義しておく必要がある
・リージョン内ですくなくとも2つのAZにサブネットが必要になある
【 アクセス制御 】
・デフォルトではDBインスタンスにたいするネットワークアクセスはオフになっている
・セキュリティグループによりアクセスを制御
・IPアドレス範囲もしくはセキュリティグループをソースとしてアクセスを許可するポートを指定
【 DBインスタンスの暗号化 】
・保管時のインスタンスとスナップショットの暗号化が可能
◦DBインスタンス、自動バックアップ、リードレプリカ、スナップショットが対象
◦AES-256暗号化アルゴリズムを使用しながらパフォーマンス影響を最小限に抑える
◦データアクセスと複合の認証を透過的に処理( クライアントアプリケーションの変更は不要 )
◦AWS KMSで鍵管理が可能
◦リードレプリカも同じ鍵で暗号化される
◦インスタンス作成時にのみ設定可能( スナップショットのコピーを暗号化してリストアは可能 )
◦暗号化されたDBインスタンスを変更して暗号化を無効にすることはできない
◦暗号化機能に対応しているインスタンスは db.m4.xx / db.r3.xx / db.t2.large / db.m3.xx のみ
■制限と緩和
・初期状態では制限がかかっている
◦RDSインスタンス数:40
◦1マスターあたりのリードレプリカ数:5
◦手動スナップショット数:100
◦すべてのDBインスタンスの合計ストレージ:100TB
・必要に応じて上限緩和を申請できる
おわりに
前回のEC2に引き続きRDSのウェビナーを受講した際のメモを展開いたしました。
メモを整理したことでAWS RDSについての知識を深めることができました。
まだまだわからないことも多いですが、他サービスについても同様に記事を作っていければと思います。
本記事が自分のようにこれからAWSの勉強を開始される方の参考になれば何よりです。
次回もお楽しみに!