Amazon Relational Database Service
ユーザーガイド (API バージョン 2014-10-31)

SQL Server データベースのインポートとエクスポート

Amazon RDS では、完全バックアップファイル (.bak ファイル) を使用した Microsoft SQL Server データベースのネイティブバックアップおよび復元がサポートされています。簡単に移動可能な 1 つのファイルで SQL Server データベースのインポートとエクスポートを行うことができます。オンプレミスデータベースの完全バックアップを作成して Amazon Simple Storage Service (Amazon S3) に保存した後、SQL Server を実行する既存の Amazon RDS DB インスタンスにバックアップファイルを復元できます。Amazon RDS SQL Server データベースをバックアップして Amazon S3 に保存した後、バックアップファイルをオンプレミスサーバーや、SQL Server を実行する別の Amazon RDS DB インスタンスに復元できます。

次の図は、サポートされるシナリオを示しています。


			ネイティブバックアップおよび復元アーキテクチャ

.bak ファイルを使用したデータベースのバックアップと復元はかなり最適化されているため、通常はデータベースを最もすばやくバックアップおよび復元できます。ネイティブバックアップおよび復元を使用することには、他にも多くの利点があります。以下の操作を行うことができます。

  • データベースを Amazon RDS に移行できます。

  • Amazon RDS SQL Server DB インスタンス間でデータベースを移動できます。

  • データのインポートとエクスポート

  • スキーマ、ストアドプロシージャ、トリガー、他のデータベースコードを移行できます。

  • DB インスタンス全体ではなく、1 つのデータベースをバックアップおよび復元できます。

  • テスト、トレーニング、デモの目的でデータベースのコピーを作成できます。

  • Amazon S3 を通じて Amazon RDS との間でバックアップファイルを保存したり移動したりすることにより、災害復旧用の保護レイヤーが追加されます。

ネイティブバックアップおよび復元は、すべての AWS リージョンで、シングル AZ とマルチ AZ の両方の DB インスタンスで利用できます。ネイティブバックアップおよび復元は、Amazon RDS でサポートされているすべてのエディションの Microsoft SQL Server で使用できます。

ネイティブバックアップおよび復元を使用する際の制限事項を以下に示します。

  • Amazon RDS DB インスタンスとは異なる AWS リージョンで Amazon S3 バケットへのバックアップまたは復元をすることはできません。

  • あるタイムゾーンのバックアップファイルを、別のタイムゾーンに復元しないことを強くお勧めします。バックアップファイルを別のタイムゾーンに復元した場合は、タイムゾーンの変更によるクエリとアプリケーションへの影響を精査する必要があります。​

  • 1 TB を超えるサイズのデータベースをバックアップすることはできません。

  • 4 TB を超えるサイズのデータベースを復元することはできません。

  • メンテナンスウィンドウ中や、Amazon RDS がデータベースのスナップショットを作成しているときは、データベースをバックアップすることができません。

  • マルチ AZ DB インスタンスでは、完全な復旧モデルでバックアップされたデータベースのみ復元できます。

バックアップファイルの作成、コピー、復元時にデータベースをオフラインにできる場合、データベースを Amazon RDS に移行する方法としてネイティブバックアップおよび復元をお勧めします。オンプレミスデータベースをオフラインにできない場合、AWS Database Migration Service を使用してデータベースを Amazon RDS に移行することをお勧めします。詳細については、「AWS Database Migration Service とは」を参照してください。

ネイティブバックアップおよび復元は、クロスリージョンスナップショットコピー機能のデータ復旧機能に代わるものではありません。Amazon RDS におけるクロスリージョン災害復旧のために、データベーススナップショットを別のリージョンにコピーする方法としてスナップショットコピーの使用をお勧めします。詳細については、「スナップショットのコピー」を参照してください。

ネイティブバックアップおよび復元のセットアップ

ネイティブバックアップおよび復元をセットアップするには、3 つのコンポーネントが必要です。

  • バックアップファイルを保存する Amazon S3 バケット。

  • バケットにアクセスするための AWS Identity and Access Management (IAM) ロール。

  • DB インスタンスのオプショングループに追加された SQLSERVER_BACKUP_RESTORE オプション。

Amazon S3 バケットがすでにある場合はそれを使用できます。Amazon S3 バケットがない場合、手動で新しいバケットを作成できます。または、AWS マネジメントコンソール を使用して SQLSERVER_BACKUP_RESTORE オプションを追加するときに新しいバケットの作成を選択することもできます。新しいバケットを手動で作成する場合は、「バケットの作成」を参照してください。

IAM ロールがすでにある場合はそれを使用できます。IAM ロールがない場合、手動で新しいロールを作成できます。または、AWS マネジメントコンソール を使用して SQLSERVER_BACKUP_RESTORE オプションを追加するときに新しい IAM ロールの作成を選択することもできます。新しい IAM ロールを手動で作成する場合や、信頼ポリシーとアクセス権限ポリシーを既存の IAM ロールにアタッチする場合は、次のセクションで説明されているアプローチを取ります。

DB インスタンスでネイティブバックアップおよび復元を有効にするには、DB インスタンスのオプショングループに SQLSERVER_BACKUP_RESTORE オプションを追加します。詳細と手順については、「Microsoft SQL Server によるネイティブバックアップおよび復元のサポート」を参照してください。

ネイティブバックアップおよび復元用の IAM ロールの手動作成

ネイティブバックアップおよび復元で使用する新しい IAM ロールを手動で作成するには、Amazon RDS サービスから Amazon S3 バケットにアクセス権限を委任するロールを作成します。IAM ロールを作成したら、信頼ポリシーとアクセス権限ポリシーをアタッチします。ネイティブバックアップおよび復元機能では、次の例と同様の信頼ポリシーおよびアクセス権限ポリシーを使用します。ロールの作成の詳細については、「AWS サービスにアクセス許可を委任するロールの作成」を参照してください。

信頼ポリシーとアクセス権限ポリシーを使用するには、Amazon リソースネーム (ARN) を指定する必要があります。ARN 形式の詳細については、「Amazon リソースネーム (ARN) と AWS サービスの名前空間」を参照してください。

以下の最初の例では、すべてのサービスアカウントにサービスのプリンシパル名 rds.amazon.aws.com をエイリアスとして使用します。他の例では、ARN を指定して、信頼ポリシーでアクセス権限を付与している別のアカウント、ユーザー、またはロールを特定します。

例 ネイティブバックアップおよび復元の信頼ポリシー

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": {"Service": "rds.amazonaws.com"}, "Action": "sts:AssumeRole" }] }

例 暗号化をサポートしないネイティブバックアップおよび復元のアクセス権限ポリシー

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::bucket_name" }, { "Effect": "Allow", "Action": [ "s3:GetObjectMetaData", "s3:GetObject", "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::bucket_name/*" } ] }

例 暗号化をサポートするネイティブバックアップおよび復元のアクセス権限ポリシー

バックアップファイルを暗号化する場合は、アクセス権限ポリシーに暗号化キーを含めます。暗号化キーの詳細については、AWS Key Management Service (AWS KMS) のドキュメントの「はじめに」を参照してください。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:DescribeKey", "kms:GenerateDataKey", "kms:Encrypt", "kms:Decrypt" ], "Resource": "arn:aws:kms:region:account-id:key/key-id" }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::bucket_name" }, { "Effect": "Allow", "Action": [ "s3:GetObjectMetaData", "s3:GetObject", "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::bucket_name/*" } ] }

ネイティブバックアップおよび復元の使用

ネイティブバックアップおよび復元を有効に設定した後、使用を開始できます。最初に、Microsoft SQL Server データベースに接続し、Amazon RDS ストアドプロシージャを呼び出して作業を行います。データベースに接続する手順については、「Microsoft SQL Server データベースエンジンを実行する DB インスタンスに接続する」を参照してください。

ストアドプロシージャによっては、Amazon リソースネーム (ARN) を Amazon S3 バケットおよびファイルに指定する必要があります。ARN の形式は arn:aws:s3:::bucket_name/file_name です。Amazon S3 は ARN のアカウント番号またはリージョンを必要としません。オプションの AWS KMS 暗号化キーも指定する場合、ARN の形式は arn:aws:kms:region:account-id:key/key-id です。詳細については、「Amazon リソースネーム (ARN) と AWS サービスの名前空間」を参照してください。

データベースのバックアップ、データベースの復元、進行中のタスクのキャンセル、バックアップおよび復元タスクのステータスの追跡を行うためのストアドプロシージャがあります。各ストアドプロシージャを呼び出す方法については、以下のサブセクションを参照してください。

データベースのバックアップ

データベースをバックアップするには、rds_backup_database ストアドプロシージャを呼び出します。

注記

メンテナンスウィンドウまたは Amazon RDS がスナップショットを作成している間は、データベースをバックアップできません。

以下のパラメータは必須です:

  • @source_db_name – The name of the database to back up

  • @s3_arn_to_backup_to – バックアップに使用するバケットとファイル名 (Amazon S3 バケット + キー ARN)。

    ファイルは任意の拡張子を持つことができますが、.bak は従来の拡張子です。

以下のパラメータはオプションです。

  • @kms_master_key_arn – バックアップを暗号化するためのキー (KMS 顧客マスターキー ARN)。

    暗号化キーの詳細については、AWS Key Management Service (AWS KMS) のドキュメントの「はじめに」を参照してください。

  • @overwrite_S3_backup_file – デフォルトは 0 です。

    • 0 – 既存のファイルを上書きしないでください。ファイルがすでに存在する場合はエラーを返します。

    • 1 – バックアップファイルではない場合でも、指定された名前を持つ既存のファイルを上書きします。

  • @type – デフォルトは FULL で、大文字と小文字は区別されません。

    • differential – 差分バックアップを取ります。

    • full – 完全バックアップを取ります。

例 暗号化なしの差分バックアップ

exec msdb.dbo.rds_backup_database @source_db_name='database_name', @s3_arn_to_backup_to='arn:aws:s3:::bucket_name/file_name_and_extension', @overwrite_S3_backup_file=1, @type='differential';

例 暗号化による完全バックアップ

exec msdb.dbo.rds_backup_database @source_db_name='database_name', @s3_arn_to_backup_to='arn:aws:s3:::bucket_name/file_name_and_extension', @kms_master_key_arn='arn:aws:kms:region:account-id:key/key-id', @overwrite_S3_backup_file=1, @type='FULL';

差分バックアップは、最後の完全バックアップに基づいています。差分バックアップを機能させるには、最後の完全バックアップと差分バックアップの間でスナップショットを作成することはできません。差分バックアップを作成し、スナップショットが存在する場合は、差分バックアップを続行する前に別の完全バックアップを作成してください。

最後の完全バックアップまたはスナップショットは、次のサンプル SQL を使用して検索できます。

select top 1 database_name , backup_start_date , backup_finish_date from msdb.dbo.backupset where database_name='name-of-database' and type = 'D' order by backup_start_date desc;

データベースの復元

データベースを復元するには、rds_restore_database ストアドプロシージャを呼び出します。

以下のパラメーターは必須です。

  • @restore_db_name – 復元するデータベースの名前。

  • @s3_arn_to_restore_from – バックアップファイルが含まれる Amazon S3 バケットと、ファイルの名前。

以下のパラメータはオプションです。

  • @kms_master_key_arn – バックアップファイルを暗号化した場合、ファイルの復号化に使用するキー。

例 暗号化なし

exec msdb.dbo.rds_restore_database @restore_db_name='database_name', @s3_arn_to_restore_from='arn:aws:s3:::bucket_name/file_name_and_extension';

例 暗号化あり

exec msdb.dbo.rds_restore_database @restore_db_name='database_name', @s3_arn_to_restore_from='arn:aws:s3:::bucket_name/file_name_and_extension', @kms_master_key_arn='arn:aws:kms:region:account-id:key/key-id';

タスクのキャンセル

バックアップまたは復元タスクをキャンセルするには、rds_cancel_task ストアドプロシージャを呼び出します。

以下のパラメータはオプションです。

  • @db_name – タスクをキャンセルするデータベースの名前。

  • @task_id – キャンセルするタスクの ID。rds_task_status を呼び出すことにより、タスク ID を取得できます。

exec msdb.dbo.rds_cancel_task @task_id=1234;

タスクのステータスの追跡

バックアップおよび復元タスクのステータスを追跡するには、rds_task_status ストアドプロシージャを呼び出します。パラメータを何も指定しない場合、ストアドプロシージャによりすべてのタスクのステータスが返されます。タスクのステータスは、約 2 分ごとに更新されます。

以下のパラメータはオプションです。

  • @db_name – タスクのステータスを表示するデータベースの名前。

  • @task_id – タスクのステータスを表示するタスクの ID。

exec msdb.dbo.rds_task_status @db_name='database_name';

rds_task_status ストアドプロシージャは、次の列を返します。

説明

task_id

タスクの ID。

task_type

バックアップタスクの BACKUP_DB、または復元タスクの RESTORE_DB の両方。

database_name

タスクが関連付けられているデータベースの名前。

% complete

タスクの進行状況の割合。

duration (mins)

タスクにかかった時間 (分単位)。

lifecycle

タスクのステータス。タスクのステータスは以下のとおりです。

  • CREATEDrds_backup_database または rds_restore_database を呼び出すとすぐ、タスクが作成されてステータスが CREATED に設定されます。

  • IN_PROGRESS – バックアップまたは復元タスクが開始されると、ステータスが IN_PROGRESS に設定されます。ステータスが CREATED から IN_PROGRESS に変わるまで、最大 5 分かかることがあります。

  • SUCCESS – バックアップまたは復元タスクが完了すると、ステータスが SUCCESS に設定されます。

  • ERROR – バックアップまたは復元タスクに失敗した場合、ステータスが ERROR に設定されます。エラーの詳細については、task_info 列をご覧ください。

  • CANCEL_REQUESTEDrds_cancel_task を呼び出すとすぐに、タスクのステータスが CANCEL_REQUESTED に設定されます。

  • CANCELLED – タスクが正常にキャンセルされると、タスクのステータスが CANCELLED に設定されます。

task_info

タスクに関する追加情報。

データベースのバックアップまたは復元中にエラーが発生した場合は、この列にエラーに関する情報が表示されます。発生する可能性があるエラーのリストと軽減戦略については、「トラブルシューティング」を参照してください。

last_updated

タスクのステータスが最後に更新された日時。5% 進行するたびに、ステータスが更新されます。

created_at

タスクが作成された日時。

overwrite_S3_backup_file

バックアップタスクを呼び出すときに指定される @overwrite_S3_backup_file パラメータの値。詳細については、「データベースのバックアップ」を参照してください。

バックアップファイルの圧縮

Amazon S3 バケットの容量を節約するために、バックアップファイルを圧縮できます。バックアップファイルの圧縮の詳細については、Microsoft ドキュメントの「バックアップの圧縮」を参照してください。

バックアップファイルの圧縮は、以下のデータベースエディションでサポートされています。

  • Microsoft SQL Server Enterprise Edition

  • Microsoft SQL Server Standard Edition

バックアップファイルの圧縮を有効にするには、以下のコードを実行します。

exec rdsadmin..rds_set_configuration 'S3 backup compression', 'true';

バックアップファイルの圧縮を無効にするには、以下のコードを実行します。

exec rdsadmin..rds_set_configuration 'S3 backup compression', 'false';

ネイティブバックアップおよび復元を使用した Amazon RDS への移行

社内データセンターから Amazon RDS にデータベースを移行するには、このトピックの手順に従います。ただし、次のステップを実行して準備できます。

  1. Amazon S3 バケットを作成します。詳細については、「バケットの作成」を参照してください。

  2. データベースバックアップファイルを Amazon S3 バケットにアップロードします。詳細については、「Amazon S3 へのオブジェクトのアップロード」を参照してください。

トラブルシューティング

以下は、ネイティブ バックアップおよび復元を使用する場合に遭遇する可能性のある問題です。

問題 トラブルシューティングの提案

Access Denied

バックアップまたは復元プロセスは、バックアップファイルにアクセスできません。通常、この原因は以下のような問題にあります。

  • 間違ったバケットを参照している。間違った形式を使用してバケットを参照している。ARN を使用しないでファイル名を参照している。

  • バケットファイルへのアクセス許可が正しくない。たとえば、アクセスを試行しているアカウントとは別のアカウントでファイルが作成されている場合は、正しいアクセス許可を追加します。

  • IAM ポリシーが正しくないか、不完全である。IAM ロールには、すべての必要な要素 (正しいバージョンなど) を含める必要があります。これらについては、「SQL Server データベースのインポートとエクスポート」で詳しく説明しています。

BACKUP DATABASE WITH COMPRESSION is not supported on <edition_name> Edition

バックアップファイルの圧縮は、Microsoft SQL Server Enterprise Edition と Standard Edition でのみサポートされています。

詳細については、「バックアップファイルの圧縮」を参照してください。

Database <database_name> cannot be restored because there is already an existing database with the same family_guid on the instance

バックアップファイルを、バックアップファイルの作成に使用したのと同じ DB インスタンスに復元することはできません。代わりに、新しい DB インスタンスにバックアップファイルを復元してください。

また、同じバックアップファイルを 1 つの DB インスタンスに繰り返し復元することはできません。つまり、復元するデータベースを既に含む DB インスタンスにバックアップファイルを復元することはできません。代わりに、新しい DB インスタンスにバックアップファイルを復元してください。

Key <ARN> does not exist

暗号化されたバックアップを復元しようとしましたが、有効な暗号化キーを指定しませんでした。暗号化キーを確認し、再試行してください。

詳細については、「データベースの復元」を参照してください。

Please reissue task with correct type and overwrite property

データベースをバックアップする際に、既存のファイル名を指定して上書きのプロパティを false に設定すると、保存オペレーションは失敗します。このエラーを修正するには、既存のファイル名以外の名前を指定するか、上書きのプロパティを true に設定します。

詳細については、「データベースのバックアップ」を参照してください。

また、データベースを復元しようとして、間違えて rds_backup_database ストアドプロシージャを呼び出した可能性もあります。この場合は、代わりに rds_restore_database ストアドプロシージャを呼び出します。

詳細については、「データベースの復元」を参照してください。

データベースを復元するために rds_restore_database ストアドプロシージャを呼び出した場合は、有効なバックアップファイルの名前を指定したことを確認してください。

詳細については、「ネイティブバックアップおよび復元の使用」を参照してください。

Please specify a bucket that is in the same region as RDS instance

Amazon RDS DB インスタンスとは異なる AWS リージョンで Amazon S3 バケットへのバックアップまたは復元をすることはできません。Amazon S3 レプリケーションを使用すると、正しいリージョンにバックアップファイルをコピーできます。

詳細については、Amazon S3 ドキュメントの「クロスリージョンレプリケーション」を参照してください。

The specified bucket does not exist

バケットとファイルの正しい ARN を正しい形式で指定したこと確認してください。

詳細については、「ネイティブバックアップおよび復元の使用」を参照してください。

User <ARN> is not authorized to perform <kms action> on resource <ARN>

暗号化されたオペレーションをリクエストしましたが、指定した AWS KMS のアクセス権限が正しくありません。適切なアクセス権限を持っていることを確認してください。持っていない場合は、追加してください。

詳細については、「ネイティブバックアップおよび復元のセットアップ」を参照してください。

関連トピック