RDS for SQL Server のストレージの使用 - Amazon Relational Database Service

RDS for SQL Server のストレージの使用

RDS for SQL Server では、RDS for SQL Server インスタンスに最大 3 つの追加ボリュームをアタッチでき、それぞれが一意の Windows ドライブ文字にマッピングされます。これにより、データベースファイルをデフォルトの D: ドライブ以外の複数のボリュームに分散できます。ストレージボリュームを追加すると、データベースファイル管理とストレージ最適化の柔軟性が向上します。

その他の利点には以下が含まれます。

  • 柔軟なファイル配布 – データベースデータファイルとログファイルを複数のボリュームに分散して、I/O パフォーマンスを向上させます。

  • ストレージの最適化 – ワークロード要件に応じて異なるストレージタイプと設定を使用します。

  • スケーラビリティ – 既存のボリュームを変更せずにストレージ容量を追加します。

RDS for SQL Server で追加のストレージボリュームを使用する際の考慮事項

RDS for SQL Server で追加のストレージボリュームを使用する場合は、次の機能と制限に注意してください。

  • SQL Server Standard Edition (SE) と Enterprise Edition (EE) でのみストレージボリュームを追加できます。

  • インスタンスごとに最大 3 つのストレージボリュームを追加できます。

  • ボリューム名は、次のように Windows ドライブ文字に自動的にマッピングされます。

    • rdsdbdata2H: ドライブ

    • rdsdbdata3I: ドライブ

    • rdsdbdata4J: ドライブ

  • TempDB ファイルは、NVMe インスタンスストレージを使用するときに引き続き T: ドライブを使用します。SQL Server 監査ファイルと Microsoft Business Intelligence (MSBI) ファイルは D: ドライブに残ります。

  • 汎用 SSD (gp3) およびプロビジョンド IOPS SSD (io2) ストレージタイプのみを追加できます。

  • 追加のストレージボリュームには最小サイズ制限はありません。DB インスタンスの最大ストレージサイズは、すべてのボリュームで合計 256 TiB です。

  • リードレプリカを持つインスタンスまたはリードレプリカインスタンスへのストレージボリュームの追加はサポートされていません。

  • 作成後のボリューム間のファイルの移動はサポートされていません。

  • D: ボリュームを削除することはできませんが、空である限り、他のストレージボリュームを削除することはできます。

  • スナップショット復元またはポイントインタイムリカバリ (PITR) 中の既存のボリュームのサイズの変更はサポートされていません。ただし、復元オペレーション中に新しいストレージボリュームを追加できます。

RDS for SQL Server を使用してストレージボリュームを追加、削除、または変更する

AWS CLI またはAWS マネジメントコンソールを使用して、追加のストレージボリュームを追加、変更、削除できます。すべてのオペレーションは、additional-storage-volumes パラメータで modify-db-instance API オペレーションを使用します。

重要

ストレージボリュームを追加または削除すると、バックアップ保留中のアクションとポイントインタイムリストアブラックアウトウィンドウが作成されます。このウィンドウは、バックアップワークフローが完了すると閉じます。

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

デフォルトの D: ドライブ以外に最大 3 つのストレージボリュームを追加できます。RDS for SQL Server インスタンスに新しいストレージボリュームを追加するには、additional-storage-volumes パラメータを指定して modify-db-instance コマンドを使用します。

次の例では、rdsdbdata4 という名前の新しい 4,000 GiB 汎用 SSD (gp3) ボリュームを追加します。

aws rds modify-db-instance \ --db-instance-identifier my-sql-server-instance \ --region us-east-1 \ --additional-storage-volumes '[{"VolumeName":"rdsdbdata4","StorageType":"gp3","AllocatedStorage":4000}]' \ --apply-immediately

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

ストレージサイズを除き、追加ボリュームの任意のストレージ設定を変更できます。次の例では、rdsdbdata2 ボリュームの IOPS 設定を変更します。

aws rds modify-db-instance \ --db-instance-identifier my-sql-server-instance \ --region us-east-1 \ --additional-storage-volumes '[{"VolumeName":"rdsdbdata2","IOPS":4000}]' \ --apply-immediately

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

D: ボリュームは削除できませんが、空になった他のストレージボリュームは削除できます。

警告

追加のストレージボリュームを削除する前に、データベースファイルがボリュームに保存されていないことを確認してください。

次の例では、rdsdbdata4 ボリュームを削除しています。

aws rds modify-db-instance \ --db-instance-identifier my-sql-server-instance \ --region us-east-1 \ --additional-storage-volumes '[{"VolumeName":"rdsdbdata4","SetForDelete":true}]' \ --apply-immediately

RDS for SQL Server を使用した追加のストレージボリュームの復元オペレーション

データベースを復元するときに、ストレージボリュームを追加できます。既存のボリュームのストレージ設定を変更することもできます。

スナップショット復元

スナップショットから復元する場合、新しいストレージボリュームを追加したり、既存のボリュームの IOPS、スループット、ストレージタイプの設定を変更したりできます。

次の例では、スナップショットから DB インスタンスを復元し、rdsdbdata2 ボリュームの IOPS 設定を変更します。

aws rds restore-db-instance-from-db-snapshot \ --db-instance-identifier my-restored-instance \ --db-snapshot-identifier my-snapshot \ --region us-east-1 \ --additional-storage-volumes '[{"VolumeName":"rdsdbdata2","IOPS":5000}]'

ポイントインタイムリカバリ

ポイントインタイムリカバリ (PITR) 中に、カスタム設定で新しいストレージボリュームを追加できます。

次の例では、PITR を実行し、新しい 5,000 GiB の汎用 SSD (gp3) ボリュームを追加します。

aws rds restore-db-instance-to-point-in-time \ --source-db-instance-identifier my-source-instance \ --target-db-instance my-pitr-instance \ --use-latest-restorable-time \ --region us-east-1 \ --additional-storage-volumes '[{"VolumeName":"rdsdbdata4","StorageType":"gp3","AllocatedStorage":5000,"IOPS":5000,"StorageThroughput":200}]'

ネイティブデータベースの復元

rds_restore_database ストアドプロシージャを使用して、特定の追加のストレージボリュームにデータベースを復元できます。2 つの新しいパラメータがボリューム選択をサポートします。

data_file_volume

データベースデータファイルのドライブ文字を指定します。

log_file_volume

データベースログファイルのドライブ文字を指定します。

次の例では、H: ドライブ上のデータファイルと I: ドライブ上のログファイルを含むデータベースを復元します。

EXEC msdb.dbo.rds_restore_database @restore_db_name='my_database', @s3_arn_to_restore_from='arn:aws:s3:::my-bucket/backup-file.bak', @data_file_volume='H:', @log_file_volume='I:';

ボリュームパラメータを指定しない場合、または両方のパラメータに D: ドライブを指定した場合、データベースファイルはデフォルトの D: ドライブに復元されます。

EXEC msdb.dbo.rds_restore_database @restore_db_name='my_database', @s3_arn_to_restore_from='arn:aws:s3:::my-bucket/backup-file.bak';

RDS for SQL Server を使用した追加のストレージボリュームのユースケース

追加のストレージボリュームは、さまざまなデータベース管理シナリオをサポートします。以下のセクションでは、一般的なユースケースと実装アプローチについて説明します。

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

標準の SQL Server CREATE DATABASE ステートメントを使用して、追加のストレージボリュームで新しいデータベースを直接作成できます。

次の例では、H: ドライブにデータファイル、I: ドライブにログファイルを含むデータベースを作成します。

CREATE DATABASE MyDatabase ON ( NAME = 'MyDatabase_Data', FILENAME = 'H:\rdsdbdata\data\MyDatabase_Data.mdf', SIZE = 100MB, FILEGROWTH = 10MB ) LOG ON ( NAME = 'MyDatabase_Log', FILENAME = 'I:\rdsdbdata\data\MyDatabase_Log.ldf', SIZE = 10MB, FILEGROWTH = 10% );

ストレージ容量の拡張

デフォルトの D: ドライブが最大容量に達したら、ストレージボリュームを追加し、既存のボリュームをスケールして、新しいボリュームに新しいデータファイルまたはログファイルを作成できます。

ストレージ容量を拡張するには
  1. modify-db-instance コマンドを使用して、インスタンスにストレージボリュームを追加します。

  2. 追加のストレージボリュームに新しいデータファイルを追加します。

    ALTER DATABASE MyDatabase ADD FILE ( NAME = 'MyDatabase_Data2', FILENAME = 'H:\rdsdbdata\data\MyDatabase_Data2.ndf', SIZE = 500MB, FILEGROWTH = 50MB );

ボリューム間のデータベースの移動

データベースを別のボリュームに移動するには、rds_backup_database および rds_restore_database ストアドプロシージャでバックアップと復元の方法を使用します。詳細については、「ネイティブバックアップおよび復元の使用」を参照してください。

データベースを別のボリュームに移動するには
  1. rds_backup_database を使用してデータベースをバックアップします。

    EXEC msdb.dbo.rds_backup_database @source_db_name='MyDatabase', @s3_arn_to_backup_to='arn:aws:s3:::my-bucket/database-backup.bak';
  2. データベースをターゲットボリュームに復元します。

    EXEC msdb.dbo.rds_restore_database @restore_db_name='MyDatabase_New', @s3_arn_to_restore_from='arn:aws:s3:::my-bucket/database-backup.bak', @data_file_volume='H:', @log_file_volume='I:';
  3. 古いドライブからデータベースを削除して、スペースを解放します。詳細については、「Amazon RDS for Microsoft SQL Server DB インスタンスのデータベースの削除」を参照してください。

コスト効率の高いストレージへのデータのアーカイブ

パーティション化されたテーブルの場合、古いデータを異なるパフォーマンス特性を持つ追加のストレージボリュームにアーカイブできます。

パーティション化されたデータをアーカイブするには
  1. 適切なストレージタイプと容量を持つストレージボリュームを追加します。

  2. 追加のストレージボリュームに新しいファイルグループを作成します。

    ALTER DATABASE MyDatabase ADD FILEGROUP ArchiveFileGroup; ALTER DATABASE MyDatabase ADD FILE ( NAME = 'Archive_Data', FILENAME = 'H:\rdsdbdata\data\Archive_Data.ndf', SIZE = 1GB, FILEGROWTH = 100MB ) TO FILEGROUP ArchiveFileGroup;
  3. SQL Server パーティション管理コマンドを使用して、パーティションを新しいファイルグループに移動します。