Amazon Web Services ブログ

Amazon RDS for SQL Server での追加のストレージボリューム設定

Amazon Relational Database Service (Amazon RDS) for SQL Server インスタンスは、従来、データベースファイルを格納するために単一の Amazon Elastic Block Store (Amazon EBS) ボリュームを使用していました。追加ストレージボリューム機能の導入により、Amazon RDS for SQL Server インスタンスに最大 3 つの追加ストレージボリュームをアタッチできるようになりました。この機能を使用することで、データファイルとログファイルを複数のボリュームに分散できます。この拡張機能により、ストレージ構成とパフォーマンス最適化に対するより細かい制御が可能になります。

この投稿では、追加ストレージボリューム機能を使用するためのさまざまなシナリオを紹介します。

ソリューション概要

以下のアーキテクチャ図は、追加ストレージボリューム構成を示しており、マルチアベイラビリティゾーン (マルチ AZ) 構成において、それぞれ 3 つのボリュームを持つプライマリホストとセカンダリホストの使用を表しています。

この投稿では、以下のシナリオについて学習します:

  • 新しいストレージボリュームの追加
  • 既存のストレージボリュームのスケーリング
  • 追加のストレージボリュームでのデータベースの復元
  • ストレージボリュームの削除

このソリューションには、お客様のアカウントで費用が発生する新しい AWS リソースが必要です。詳細については、AWS 料金表をご確認ください。

前提条件

AWS Management Console の操作に慣れていることを前提としています。この投稿では、AWS アカウントで以下のリソースとサービスが有効になっている必要があります:

注意 : 追加ストレージボリューム機能の最新の制限については、「SQL Server でのストレージ動作」を参照してください。

新しいストレージボリュームの追加

インスタンスの作成時またはインスタンスのデプロイ後に、最大 3 つの追加ストレージボリュームを追加できます。追加ストレージボリュームは、デフォルトのストレージボリュームを補完します。デフォルトボリュームは、ドライブレターとして D:\ を使用します。追加ストレージボリュームは、汎用 SSD(gp3) とプロビジョンド IOPS(io2) の 2 つのストレージタイプをサポートしているため、データベースワークロードに最適なストレージパフォーマンスを選択できます。ボリューム名は次のように Windows ドライブレターにマッピングされます:

  • rdsdbdata2 – H:\ ドライブ
  • rdsdbdata3 – I:\ ドライブ
  • rdsdbdata4 – J:\ ドライブ

インスタンス作成時にストレージボリュームを追加

インスタンス作成時に追加のストレージボリュームを追加するには、以下の手順を実行してください:

  1. Microsoft SQL Server データベースを Amazon RDS で作成して、接続する方法の詳細な手順については、「Amazon RDS を使用した Microsoft SQL Server データベースの作成と接続」を参照してください。
  2. ストレージについては、適切なストレージタイプを選択してください。これがあなたの D:\ ボリュームになります。
  3. 追加のストレージボリューム – オプションについては、追加のストレージボリュームを追加を選択してください。
  4. ボリューム名ストレージタイプ割り当てストレージプロビジョンド IOPS、およびストレージスループットに適切な値を入力または選択してください。

既存のインスタンスにストレージボリュームを追加

既存の RDS for SQL Server インスタンスにストレージボリュームを追加するには、以下の手順を完了してください:

  1. Amazon RDS コンソールで、データベースを選択します。
  2. DB 識別子で、RDS for SQL Server インスタンスを選択します。この例では、rds-asv-demo を選択しました。
  3. 設定タブを選択します。
  4. 追加のストレージボリュームの追加を選択します。
  5. ボリューム名ストレージタイプ割り当てストレージプロビジョンド IOPS、およびストレージスループットに適切な値を選択します。
  6. スケジューリングで、すぐに適用を選択し、送信を選択します。

または、以下の AWS Command Line Interface (AWS CLI) を使用して、既存の Amazon RDS for SQL Server インスタンスに新しいストレージボリュームを追加します:

<db-instance-name><region><volumename><storagetype>、および <value> を適切な値で置き換えてください。

この例では、<volumename> には rdsdbdata2rdsdbdata3、または rdsdbdata4 を使用してください。<storagetype> には gp3 または io2 を使用してください。

aws rds-asv modify-db-instance \
  --db-instance-identifier  --region  \
  --additional-storage-volumes '[{"VolumeName":"","StorageType":"","AllocatedStorage":}]' \
  --apply-immediately
Code

追加ストレージボリュームのスケーリング

既存の RDS for SQL Server インスタンスで追加のストレージボリュームをスケールするには、以下の手順を実行してください。この操作は通常ダウンタイムなしで実行されますが、アクティビティが少ない時間帯に実行することをお勧めします。

  1. Amazon RDS コンソールで、データベースを選択します。
  2. DB インスタンス識別子で、データベースを選択します。
  3. 設定タブを選択します。
  4. 追加のストレージボリュームで、スケールさせるストレージボリュームを選択し、変更を選択します。
  5. ストレージボリュームの変更で、ストレージタイプ割り当てストレージプロビジョンド IOPSストレージスループットに適切な値を選択します。
  6. スケジューリングで、適切な値を選択し、送信を選択します

既存のストレージボリュームをスケールするには、AWS CLI を使用します:

<db-instance-name><region><volumename> を適切な値に置き換えてください。

次の例では、rdsdbdata2 ボリュームの IOPS を 4000 にスケールします。

aws rds-asv modify-db-instance \
  --db-instance-identifier  --region  \
  --additional-storage-volumes '[{"VolumeName":"rdsdbdata2","IOPS": 4000}]' \
  --apply-immediately
Code

追加ストレージボリュームでのデータベースの復元

追加のストレージボリュームでデータベースを復元するには、以下の手順を実行してください。

  1. SQL Server Management Studio で RDS for SQL Server インスタンスに接続します。
  2. 新しいクエリを選択します。
  3. 以下のサンプルコマンドを使用して、追加のストレージボリューム上に AdventureWorks2019 という名前のデータベースを復元します。AdventureWorks2019 からサンプルバックアップをダウンロードできます。<bucket-name> を適切な値に置き換えてください。

    ネイティブバックアップと復元を使用した SQL Server データベースのインポートとエクスポート」を参照してください。このコマンドは、RDS for SQL Server インスタンス上に HI という名前の追加ストレージボリュームが設定されていることを前提としています。

    exec msdb.dbo.rds_restore_database    
        @restore_db_name='AdventureWorks2019',
        @s3_arn_to_restore_from='arn:aws:s3:::/AdventureWorks2019.bak',
        @data_file_volume='H:',
        @log_file_volume='I:'
    SQL
  4. 次のコマンドを使用してリストアのステータスを確認してください。<task_id> を適切な値に置き換えてください。

exec msdb.dbo.rds_task_status @task_id=<task_id>;

  1. 復元が正常に完了するまで待機してください。物理ファイルの場所を確認するには、以下のコマンドを使用してください。
    Use AdventureWorks2019
    GO
    select * from sys.database_files
    SQL

追加ストレージボリュームの削除

インスタンスの追加ストレージボリュームは、使用されていない場合にのみ削除でき、D:\ ドライブは削除できません。既存の RDS for SQL Server インスタンスの追加ストレージボリュームを削除するには、以下の手順を実行してください:

  1. Amazon RDS コンソールで、データベースを選択します。
  2. DB 識別子で、データベースを選択します。
  3. 設定タブを選択します。
  4. 追加のストレージボリュームで、削除するストレージボリュームを選択し、削除を選択します。
  5. ストレージボリュームの削除ポップアップウィンドウで、削除と入力し、削除を選択します。

または、以下の AWS CLI コマンドを使用して、RDS for SQL Server インスタンスの既存のストレージボリュームを削除します:

<db-instance-name><region><volumename> を適切な値に置き換えてください。

aws rds-asv modify-db-instance \
  --db-instance-identifier  --region  \ 
  --additional-storage-volumes '[{"VolumeName":"", "SetForDelete": true}]' \
  --apply-immediately
Code

クリーンアップ

不要なコストの発生を避けるため、作成した不要になったボリュームは、前のセクションの手順に従って削除してください。

結論

この投稿では、Amazon RDS for SQL Server インスタンス向けの追加ストレージボリューム機能を紹介し、実用的な実装シナリオを実演しました。追加ストレージボリュームのプロビジョニング、削除、管理のプロセスを説明し、ストレージアーキテクチャを最適化するためにこれらのボリュームにデータベースを復元する方法を示しました。追加ストレージボリュームは、ワークロードタイプ別にデータを整理する柔軟性を提供し、専用の IOPS 割り当てによってパフォーマンスを向上させ、高可用性と耐久性を維持しながらストレージを独立してスケールすることができます。

翻訳はソリューションアーキテクトの Yoshinori Sawada が担当しました。原文はこちらです。


著者について

Minesh Chande

Minesh Chande

Minesh は、Amazon Web Services のシニアデータベーススペシャリストソリューションアーキテクトです。彼は様々な業界のお客様が SQL Server ワークロードを設計し、Amazon RDS や Amazon RDS Custom などのマネージドデータベースプラットフォームに移行し、最適化することを支援しています。