0
0

【AWS】RDS備忘録

Last updated at Posted at 2024-02-08

RDSのチュートリアル

RDSのベストプラクティス

RDS概要

RDSインスタンスタイプは主に3つあり、それぞれ用途が異なっている。
常時アクティビティが発生するケースはr/t クラス、増減の激しいアクティビティのケースはサーバーレスv2が適している。

  • サーバーレス v2
    高速ケーリング可能対応のRDS
    1 ACUで0.20 USD/時 (144 USD/月)
  • メモリ最適化クラス (r クラスを含む)
    db.r6g.2xlargeインスタンスで914.69 USD/月
  • バースト可能クラス (t クラスを含む)
    db.t3.mediumで91.25 USD/月
  • 最適化された読み取りクラス - 新規*
    db.r6gd.xlargeインスタンスで0.51 USD/時
    *PostgresSQLの読み取り専用DB

RDSとAuroraの違いは、データベース構造が異なっており、Auroraはコンピューティングインスタンスとストレージが分離しており、データを複数のアベイラビリティーゾーンに複製して、同時にアクセスしている。

RDS_16.PNG

RDSの作成

  1. Amazon RDSコンソール画面を開く
  2. データベース->データベースの作成を押す
  3. データベース作成方法は、標準作成を選択
    RDS_1.PNG
  4. エンジンは、Aurora (MySQL comparable)を選択
    RDS_2.PNG
  5. テンプレートは、開発/テストを選択
    RDS_3.PNG
  6. DB クラスター識別子は、そのまま、database-1
    RDS_4.PNG
  7. マスターユーザー名は、admin
  8. マスターパスワードは、適当な8文字以上
    RDS_5.PNG
  9. もしくはSecret ManagerでKMSキーを管理・発行・ローテーションを行うよう設定する
    RDS_6.PNG
  10. クラスターストレージ設定は、Aurora スタンダードを選択
    RDS_7.PNG
  11. インスタンスの設定は、開発段階なら安いバースト可能なtクラスのインスタンスにする
    RDS_8.PNG
  12. 可用性と耐久性は、別の AZ で Aurora レプリカ/リーダーノードを作成する (可用性のスケーリングに推奨)を選択
    RDS_9.PNG
  13. 接続は、一旦EC2 コンピューティングリソースに接続しないでよい。後から、編集可能。
    RDS_11.PNG
  14. データベース認証で、IAMデータベース認証を設定することもできる。
    RDS_12.PNG
  15. *オプションで、その他の設定をする
  16. データベースの作成を押す
    RDS_14.PNG

10~20分ほどで作成され、実行可能になる。

RDSの設定

  1. コンソール画面でデータベース->対象のデータベースを選択する
  2. アクションから必要な操作を行う
アクション 意味
一時的に停止 2
データベースアクティビティストリームを開始 リアルタイムモニタリング
削除
EC2接続のセットアップ VPC セキュリティグループを自動的に設定
Lambda接続のセットアップ RDS プロキシ経由の接続を設定
AWSリージョンを追加
リーダーの追加 グローバルデータベース
クロスリージョンのリードレプリカの作成 クロスリージョンのリードレプリカ
プルー/グリーンデプロイの作成-新規 デプロイ方法
クローンの作成 複製
昇格 レプリカの昇格
スナップショットの取得 スナップショット作成
特定時点への復元 復元
バックトラック 巻き戻し
Amazon S3にエクスポート-新規
レプリカのAuto Scalingの追加
RDSプロキシの作成 RDSプロキシ
ElastiCacheクラスターの作成-新規 ElastiCache

ElastiCacheとRDS Proxyの追加設定をAWSは推奨しているようです。
RDS_15.PNG

クエリエディタでコンソール画面からSQL実行

Aurora Serverless v2でかつPostgresSQLのみ利用可能
しかも最近 2023/12/21
https://aws.amazon.com/jp/about-aws/whats-new/2023/12/amazon-aurora-postgresql-rds-data-api/

  1. RDSコンソール画面 -> クエリエディタを開く
  2. Aurora Serverless v2を立ち上げて、Data API を有効にしている場合は、下記入力画面が表示される。
    データベース名:postgres
    データベースパスワード:8桁
    データベースの名前:インスタンスの名前
    RDS_17.PNG
    RDS_18.PNG
  3. 正常にログインできると、下記のようにSQLが打てる画面に遷移する
    RDS_19.PNG

RDSの接続

  1. コンソール画面「接続とセキュリティ」タブからDB エンドポイントを確認する

データベース認証でSecrets Managerを使用する

  1. AWS Secrets Managerを開く
  2. 新しいシークレットを保存するを押す
  3. Amazon RDS データベースの認証情報を選択
    SM1.PNG
  4. RDSで指定したユーザー名、パスワードを入力する
    SM2.PNG
  5. 対象のRDインスタンス識別子を選択
    SM3.PNG
  6. 次へを押す
  7. シークレットの名前を入力する
    SM4.PNG
  8. 次へを押す
  9. 自動ローテーションを有効にする
  10. ローテーションスケジュール を設定する
    SM5.PNG
  11. Lambda ローテーション関数の関数名を入力する
    SM6.PNG
  12. 保存を押す
    SM7.PNG
  13. 下記コマンドで認証情報を取得する

AWS CLIの場合

aws secretsmanager get-secret-value --secret-id シークレットの名前 --region ap-northeast-1
{
    "ARN": "arn:aws:secretsmanager:ap-northeast-1:*************:secret:aaaaa-ASUwXN",
    "Name": "aaaaa",
    "VersionId": "******-ad9b-41ea-bf89-c40******",
    "SecretString": "{\"username\":\"admin\",\"password\":\"aaaaaaaa\",\"engine\":\"mysql\",\"host\":\"database-1.cluster-cuuhfadkqugz.ap-northeast-1.rds.amazonaws.com\",\"port\":3306,\"dbClusterIdentifier\":\"database-1\"}",
    "VersionStages": [
        "AWSCURRENT"
    ],
    "CreatedDate": "2024-02-08T10:18:59.858000+09:00"
}

Python SDKの場合

import boto3
from botocore.exceptions import ClientError

def get_secret():

    secret_name = "aaaaa"
    region_name = "ap-northeast-1"

    # Create a Secrets Manager client
    session = boto3.session.Session()
    client = session.client(
        service_name='secretsmanager',
        region_name=region_name
    )

    try:
        get_secret_value_response = client.get_secret_value(
            SecretId=secret_name
        )
    except ClientError as e:
        raise e

    secret = get_secret_value_response['SecretString']

Aurora Serverless v2 の特徴

起動・停止・再起動

RDS全般だが起動・停止・再起動で数十分くらいかかる。
再起動する場合は、ダウンタイムの発生に気を付ける。

再起動は5~10分程度
RDS0124.PNG

容量のスケールダウンの仕様

Aurora Serverless v2の容量のスケールダウンは、以下の仕様がある。

  1. 下記の機能を使用していると、容量が最小容量までスケールダウンしない場合がある。
  2. かつ設定変更後は再起動しないと、設定が変更されないパラメータ(共有メモリパラメータ:max_connectionsやmax_locks_per_transaction 等)がある。
  • Aurora Global Database
  • CloudWatch Logs のエクスポート
  • Aurora PostgreSQL 互換 DB クラスターでの pg_audit の有効化
  • 拡張モニタリング
  • Performance Insights

Aurora Auto Scalingはサポート外

自動で滑らかに垂直スケーリングするため、Auto Scalingによる水平スケーリングはあまり意味を持たないため、サポート外となっている。

モニタリング

  1. デフォルトでコンソール画面からメトリクスを確認することができる。
    重要なメトリクス

    • ServerlessDatabaseCapacity
      DB インスタンスの容量で表される ACU 値
    • ACUUtilization
      ACU の使用率
    • CPUUtilization
      CPU の使用率
    • FreeableMemory
      未使用のメモリ量
    • TempStorageIops
      DB インスタンスにアタッチされたローカルストレージで実行された IOPS の数
    • TempStorageThroughput
      DB インスタンスに関連するローカルストレージとの間で転送されるデータの量
  2. Performance Insights を使用したDB 負荷のモニタリング
    より詳細にメトリクスをリアルタイムで監視・可視化することができるダッシュボード。
    DB クラスターレベルで有効化可能。

CloudWatchログへ詳細なログを送る方法

  1. RDSコンソール画面を開く
  2. コンソール画面左メニューからパラメータグループを選択する
  3. パラメータグループの作成を押す
    RDS_20.PNG
  4. 対象のデータベースと同じDB ファミリー(クラスターパラメータ)を選択し、適当にグループ名、説明を入力する
    RDS_21.PNG
  5. 作成を押す
  6. 作成したパラメータグループを選択し、編集を押す
  7. general_logを検索し、値を1に変更する
    RDS_22.PNG
  8. 変更を保存を押す
  9. 対象のデータベースの変更を押す
  10. 追加設定からDB クラスターのパラメータグループを選択する
  11. その下のログのエクスポートのセクションで、CloudWatch Logs に公開するログを選択する
    監査ログ, 全般ログ, スロークエリログ, ログ出力
    RDS_23.PNG
  12. 続行 -> クラスターの変更を押す
  13. DB インスタンスを再起動する

Aurora Serverless v2とAurora RDS Cluster間の変換

まとめ

今回は、RDSの作成・設定・接続・パスワードの管理について、紹介した。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0