ネイティブバックアップと復元を使用した SQL Server データベースのインポートとエクスポート - Amazon Relational Database Service

ネイティブバックアップと復元を使用した SQL Server データベースのインポートとエクスポート

Amazon RDS では、完全バックアップファイル (.bak ファイル) を使用した Microsoft SQL Server データベースのネイティブバックアップおよび復元がサポートされています。RDS を使用すると、データベースサーバー上のローカルファイルシステムを使用せずに Amazon S3 に格納されているファイルにアクセスします。

例えば、ローカルサーバーから完全バックアップを作成し、それを S3 に保存してから、既存の Amazon RDS DB インスタンスに復元することができます。RDS からバックアップを作成して S3 に保存することで、どこへでも復元することが可能となります。

ネイティブバックアップと復元は、すべての AWS リージョンで、シングル AZ DB インスタンスおよびマルチ AZ DB インスタンス (リードレプリカを持つマルチ AZ DB インスタンスを含む) に対して使用できます。ネイティブバックアップおよび復元は、Amazon RDS でサポートされているすべてのエディションの Microsoft SQL Server で使用できます。

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

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

ネイティブの .bak ファイルを使用したデータベースのバックアップと復元は、通常は、最も素早いデータベースのバックアップと復元を実現します。ネイティブバックアップおよび復元を使用することには、他にも多くの利点があります。例えば、次の操作を実行できます。

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

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

  • データ、スキーマ、ストアドプロシージャ、トリガー、その他のデータベースコードを .bak ファイル内に移行します。

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

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

  • 災害対策の追加保護レイヤーとして、Amazon S3 を使用したバックアップファイルの保管および転送ができます。

  • 透過的なデータ暗号化 (TDE) がオンになっているデータベースのネイティブバックアップを作成し、これらのバックアップをオンプレミスのデータベースに復元します。詳細については、「SQL サーバーの透過的なデータの暗号化サポート」を参照してください。

  • TDE がオンになっているオンプレミスデータベースのネイティブバックアップを RDS for SQL Server DB インスタンスに復元します。詳細については、「SQL サーバーの透過的なデータの暗号化サポート」を参照してください。

制限と推奨事項

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

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

  • 既存のデータベースと同じ名前のデータベースを復元することはできません。データベース名は一意です。

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

  • Amazon S3 のサイズ制限は 1 ファイルあたり 5 TB です。大規模なデータベースのネイティブバックアップでは、マルチファイルバックアップを使用できます。

  • S3 にバックアップできる最大データベースサイズは、DB インスタンスで使用可能なメモリ、CPU、I/O、ネットワークリソースによって異なります。データベースが大きくなるほど、バックアップエージェントが消費するメモリは多くなります。テストでは、十分なシステムリソースがあれば、2xlarge インスタンスサイズ以上の最新世代のインスタンスタイプで、16 TB のデータベースの圧縮バックアップを作成できることが示されています。

  • 同時に 10 以上のバックファイルから復元することはできません。

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

  • ファイルの file_guid (一意の識別子) が NULL に設定されているデータベースでは、差分復元とログ復元はサポートされていません 。

  • 最大 2 のバックアップまたは復元タスクを同時に実行できます。

  • Amazon RDS では、SQL Server からネイティブログバックアップを実行できません。

  • RDS では最大 16 TB のデータベースのネイティブ復元をサポートしています。SQL Server Express Edition のデータベースのネイティブリストアは、10 GB に制限されています。

  • メンテナンスウィンドウや、Amazon RDS がデータベースのスナップショットを作成しているときは、ネイティブバックを行うことはできません。ネイティブバックアップタスクが RDS の毎日のバックアップウィンドウと重複する場合、ネイティブバックアップタスクはキャンセルされます。

  • マルチ AZ DB インスタンスでは、完全な復元モデルでバックアップされているデータベースのみを、ネイティブに復元することができます。

  • マルチ AZ インスタンスの差分バックアップからの復元は、サポートされていません。

  • トランザクション内でのネイティブバックアップと復元を目的とした RDS プロシージャの呼び出しはサポートされていません。

  • 対称暗号化 AWS KMS key を使用してバックアップを暗号化します。Amazon RDS は非対称 KMS キーをサポートしていません。詳細については、AWS Key Management Service デベロッパーガイドの「非対称 KMS キーを作成する」を参照してください。

  • ネイティブバックアップファイルは、「暗号化のみ」の暗号モードを使用して、指定された KMS キーで暗号化されます。暗号化されたバックアップファイルを復元するときは、「暗号化のみ」の暗号モードで暗号化されていることに注意してください。

  • FILESTREAM ファイルグループを含むデータベースは復元できません。

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

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

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

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

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

    バックアップファイルに使用する S3 バケットを用意してから、RDS に移行するバックアップをアップロードする必要があります。Amazon S3 バケットが既にある場合はそれを使用できます。バケットがない場合、バケットを作成できます。または、SQLSERVER_BACKUP_RESTORE を使用して AWS Management Console オプションを追加するときに新しいバケットの作成を選択することもできます。

    S3 を使用する方法の詳細については、「Amazon Simple Storage Service ユーザーガイド」を参照してください。

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

    IAM ロールが既にある場合はそれを使用できます。AWS Management Console を使用して SQLSERVER_BACKUP_RESTORE オプションを追加する際に、新しい IAM ロールの作成を選択することもできます。または、手動で新しいロールを作成することもできます。

    手動で新しい IAM ロールを作成する場合は、次のセクションで示されている方法を使用します。既存の IAM ロールに信頼関係ポリシーとアクセス許可ポリシーをアタッチする場合は、同じ操作を行います。

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

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

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

ネイティブバックアップおよび復元用の新しいIAM ロールを手動で作成したい場合、作成することが可能です。その場合、 Amazon RDS サービスから Amazon S3 バケットに許可を委任する役割を作成します。IAM ロールを作成するときは、信頼関係とアクセス権限ポリシーをアタッチします。信頼関係により、RDS はこのロールを引き受けることができます。許可ポリシーは、このロールが実行できるアクションを定義します。ロールの作成の詳細については、「AWS のサービスにアクセス許可を委任するロールの作成」を参照してください。

ネイティブバックアップおよび復元機能では、このセクションの例と同様の信頼関係ポリシーおよびアクセス許可ポリシーを使用します。次の例では、すべてのサービスアカウントのエイリアスとしてサービスプリンシパル名 rds.amazonaws.com を使用します。他の例では、Amazon リソースネーム (ARN) を指定して、信頼ポリシーでアクセス許可を付与している別のアカウント、ユーザー、またはロールを特定します。

リソースベースの信頼関係では aws:SourceArn および aws:SourceAccount のグローバル条件コンテキストキーを使用して、サービスに付与する特定のリソースへのアクセス許可を制限することをお勧めします。これは、混乱した使節の問題に対する最も効果的な保護方法です。

両方のグローバル条件コンテキストキーを使用し、aws:SourceArn 値にアカウント ID を含めます。この場合は、aws:SourceAccount 値と aws:SourceArn 値のアカウントは、同じステートメントで使用する場合、同じアカウント ID を使用する必要があります。

  • 単一リソースに対するクロスサービスアクセスが必要な場合は aws:SourceArn を使用します。

  • そのアカウント内の任意のリソースをクロスサービス使用に関連付けることを許可する場合、aws:SourceAccountを使用します。

信頼関係では、ロールにアクセスするリソースの完全な ARN を持つ aws:SourceArn グローバル条件コンテキストキーを必ず使用してください。ネイティブバックアップおよび復元では、次の例に示すように、DB オプショングループと DB インスタンスの両方を含めるようにしてください。

例 ネイティブバックアップおよび復元のグローバル条件コンテキストキーとの信頼関係
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceArn": [ "arn:aws:rds:Region:my_account_ID:db:db_instance_identifier", "arn:aws:rds:Region:my_account_ID:og:option_group_name" ] } } } ] }

次の例では、ARN を使用してリソースを指定しています。ARN の使用の詳細については、「Amazon リソースネーム (ARN)」を参照してください。

例 暗号化をサポートしないネイティブバックアップおよび復元のアクセス許可ポリシー
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::bucket_name" }, { "Effect": "Allow", "Action": [ "s3:GetObjectAttributes", "s3:GetObject", "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::bucket_name/*" } ] }
例 暗号化をサポートするネイティブバックアップおよび復元のアクセス許可ポリシー

バックアップファイルを暗号化する場合は、アクセス権限ポリシーに暗号化キーを含めます。暗号化キーの詳細については、AWS Key Management Service デベロッパーガイドの「開始方法」を参照してください。

注記

バックアップを暗号化するには、対称暗号化 KMS キーを使用する必要があります。Amazon RDS は非対称 KMS キーをサポートしていません。詳細については、AWS Key Management Service デベロッパーガイドの「非対称 KMS キーを作成する」を参照してください。

IAM ロールは、KMS キーのキーユーザーおよびキー管理者であることも必要です。つまり、キーポリシーで指定する必要があります。詳細については、AWS Key Management Service デベロッパーガイドの「非対称 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:GetObjectAttributes", "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.extension です。Amazon S3 には、ARN のアカウント番号または AWS リージョンは不要です。

オプションの KMS キーも指定する場合、キーの ARN の形式は arn:aws:kms:region:account-id:key/key-id となります。詳細については、「Amazon リソースネーム (ARN) と AWS のサービスの名前空間」を参照してください。バックアップを暗号化するには、対称暗号化 KMS キーを使用する必要があります。Amazon RDS は非対称 KMS キーをサポートしていません。詳細については、AWS Key Management Service デベロッパーガイドの「非対称 KMS キーを作成する」を参照してください。

注記

KMS キーを使用するかどうかにかかわらず、ネイティブバックアップおよび復元タスクでは、S3 にアップロードされたファイルに対して、サーバー側の高度な暗号化標準 (AES) 256 ビット暗号化がデフォルトで有効になります。

各ストアドプロシージャを呼び出す方法については、以下のトピックを参照してください。

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

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

注記

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

使用方法

exec msdb.dbo.rds_backup_database @source_db_name='database_name', @s3_arn_to_backup_to='arn:aws:s3:::bucket_name/file_name.extension', [@kms_master_key_arn='arn:aws:kms:region:account-id:key/key-id'], [@overwrite_s3_backup_file=0|1], [@type='DIFFERENTIAL|FULL'], [@number_of_files=n];

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

  • @source_db_name – バックアップするデータベースの名前。

  • @s3_arn_to_backup_to– バックアップに使用する Amazon S3 バケットとバックアップファイル名を表示する ARN。

    ファイルは任意の拡張子を持つことができますが、通常は .bak が使用されます。

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

  • @kms_master_key_arn - 項目の暗号化に使用する対称暗号化 KMS キーの ARN。

    • デフォルトの暗号化キーは使用できません。デフォルトキーを使用すると、データベースはバックアップされません。

    • KMS キー識別子を指定しない場合、バックアップファイルは暗号化されません。詳細については、「Amazon RDS リソースの暗号化」を参照してください。

    • KMS キーを指定すると、クライアント側の暗号化が使用されます。

    • Amazon RDS は非対称 KMS キーをサポートしていません。詳細については、AWS Key Management Service デベロッパーガイドの「非対称 KMS キーを作成する」を参照してください。

  • @overwrite_s3_backup_file – 既存のバックアップファイルを上書きするかどうかを表す値。

    • 0 – 既存のファイルを上書きしません。この値はデフォルト値です。

      設定 @overwrite_s3_backup_file を 0 にすると、ファイルが既に存在している場合はエラーが返されます。

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

  • @type – バックアップのタイプ。

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

    • FULL – 完全バックアップを取ります。この値はデフォルト値です。

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

    最後のフルバックアップまたはスナップショットは、以下の SQL クエリの例を使用して検索できます。

    select top 1 database_name , backup_start_date , backup_finish_date from msdb.dbo.backupset where database_name='mydatabase' and type = 'D' order by backup_start_date desc;
  • @number_of_files – バックアップが分割される (チャンク) ファイルの数。最大数は 10 です。

    • マルチファイルバックアップは、完全バックアップと差分バックアップの両方でサポートされています。

    • 値 1 を入力するか、パラメータを省略すると、1 つのバックアップファイルが作成されます。

    ファイルに共通のプレフィックスを付けてから、そのプレフィックスにアスタリスクを付けます (*)。アスタリスクは、S3 ARN の file_name 部分のどこにでも使用できます。生成されたファイルのアスタリスクは、1-of-number_of_files で始まる一連の英数字文字列に置き換えられます。

    例えば、S3 ARN のファイル名が backup*.bak@number_of_files=4 を設定した場合、生成されるバックアップファイルは backup1-of-4.bakbackup2-of-4.bakbackup3-of-4.bakbackup4-of-4.bak です。

    • いずれかのファイル名が既に存在し、@overwrite_s3_backup_file が 0 の場合は、エラーが返されます。

    • マルチファイルバックアップでは、S3 ARN の file_name 部分にアスタリスクを 1 つだけ含めることができます。

    • シングルファイルバックアップでは、S3 ARN の file_name 部分にアスタリスクをいくつでも含めることができます。アスタリスクは、生成されたファイル名から削除されません。

例 差分バックアップ
exec msdb.dbo.rds_backup_database @source_db_name='mydatabase', @s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup1.bak', @overwrite_s3_backup_file=1, @type='DIFFERENTIAL';
例 暗号化による完全バックアップ
exec msdb.dbo.rds_backup_database @source_db_name='mydatabase', @s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup1.bak', @kms_master_key_arn='arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE', @overwrite_s3_backup_file=1, @type='FULL';
例 マルチファイルバックアップ
exec msdb.dbo.rds_backup_database @source_db_name='mydatabase', @s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak', @number_of_files=4;
例 マルチファイル差分バックアップ
exec msdb.dbo.rds_backup_database @source_db_name='mydatabase', @s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak', @type='DIFFERENTIAL', @number_of_files=4;
例 暗号化によるマルチファイルバックアップ
exec msdb.dbo.rds_backup_database @source_db_name='mydatabase', @s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak', @kms_master_key_arn='arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE', @number_of_files=4;
例 S3 の上書きによるマルチファイルバックアップ
exec msdb.dbo.rds_backup_database @source_db_name='mydatabase', @s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak', @overwrite_s3_backup_file=1, @number_of_files=4;
例 @number_of_files パラメータを使用したシングルファイルバックアップ

この例では、backup*.bak という名前のバックアップファイルを生成します。

exec msdb.dbo.rds_backup_database @source_db_name='mydatabase', @s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak', @number_of_files=1;

データベースの復元

データベースを復元するには、rds_restore_database ストアドプロシージャを呼び出します。復元タスクが完了しデータベースが開くと、Amazon RDSによりデータベースの最初のスナップショットが作成されます。

使用方法

exec msdb.dbo.rds_restore_database @restore_db_name='database_name', @s3_arn_to_restore_from='arn:aws:s3:::bucket_name/file_name.extension', @with_norecovery=0|1, [@kms_master_key_arn='arn:aws:kms:region:account-id:key/key-id'], [@type='DIFFERENTIAL|FULL'];

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

  • @restore_db_name – 復元するデータベースの名前。データベース名は一意です。既存のデータベースと同じ名前のデータベースを復元することはできません。

  • @s3_arn_to_restore_from – Amazon S3 プレフィックスと、データベースの復元に使用するバックアップファイルの名前を示す ARN。

    • 単一ファイルのバックアップの場合は、ファイル名全体を入力します。

    • マルチファイルのバックアップの場合は、ファイルに共通のプレフィックスを付けてから、そのプレフィックスにアスタリスクを付けます (*)。

    • @s3_arn_to_restore_from が空の場合は、次のエラーメッセージが返ります: S3 ARN prefix cannot be empty

以下のパラメータは、差分復元には必須ですが、完全復元ではオプションです。

  • @with_norecovery – 復元操作に使用する復元句。

    • 0 に設定して、RECOVERY で復元します。この場合、復元後にデータベースがオンラインになります。

    • 1 に設定して、NORECOVERY で復元します。この場合、復元タスクの完了後もデータベースが RESTORING 状態を保持します。このアプローチで、後から差分復元も実行することができます。

    • DIFFERENTIAL 復元は、0 または 1 を指定してください。

    • FULL 復元の場合、この値はデフォルトで 0 です。

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

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

    KMS キーを指定すると、クライアント側の暗号化が使用されます。

  • @type – 復元のタイプ。有効なタイプは、DIFFERENTIALFULL です。デフォルト値は FULL です。

注記

差分復元は、データベースが RESTORING 状態にあるか、NORECOVERY で復元するタスクが既に存在している必要があります。

データベースがオンラインの場合、後から差分バックアップを復元することはできません。

データベースに、RECOVERY を使用した復元中のタスクがある場合、復元タスクを提出することはできません。

マルチ AZ インスタンスでは、NORECOVERY を使用した完全復元および差分復元はサポートされていません。

リードレプリカを持つマルチ AZ インスタンス上のデータベースの復元は、マルチ AZ インスタンス上のデータベースの復元に似ています。レプリカ上のデータベースを復元するために、追加のアクションを実行する必要はありません。

例 単一ファイルの復元
exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak';
例 マルチファイルの復元

複数ファイル復元中のエラーを回避するために、すべてのバックアップファイルに同じプレフィックスがあり、他のファイルでそのプレフィックスが使用されていないことを確認します。

exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup*';
例 RECOVERY を使用したデータベースの復元

以下の 3 つの例は、RECOVERY を使用した完全復元という同じタスクを実行します。

exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak';
exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak', [@type='DIFFERENTIAL|FULL'];
exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak', @type='FULL', @with_norecovery=0;
例 暗号化を使用したデータベースの完全復元
exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak', @kms_master_key_arn='arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE';
例 NORECOVERY を使用したデータベースの完全復元
exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak', @type='FULL', @with_norecovery=1;
例 NORECOVERY を使用した差分復元
exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak', @type='DIFFERENTIAL', @with_norecovery=1;
例 RECOVERY を使用した差分復元
exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak', @type='DIFFERENTIAL', @with_norecovery=0;

ログの復元

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

使用方法

exec msdb.dbo.rds_restore_log @restore_db_name='database_name', @s3_arn_to_restore_from='arn:aws:s3:::bucket_name/log_file_name.extension', [@kms_master_key_arn='arn:aws:kms:region:account-id:key/key-id'], [@with_norecovery=0|1], [@stopat='datetime'];

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

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

  • @s3_arn_to_restore_from – ARN が、Amazon S3プレフィックスと、ログを復元する際に使用するログファイル名を表示します。ファイルは任意の拡張子を持つことができますが、通常は .trn が使用されます。

    @s3_arn_to_restore_from が空の場合は、次のエラーメッセージが返ります: S3 ARN prefix cannot be empty

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

  • @kms_master_key_arn - ログを暗号化した場合の、ログの復号に使用する KMS キー。

  • @with_norecovery – 復元操作に使用する復元句。この値のデフォルト値は1です。

    • 0 に設定して、RECOVERY で復元します。この場合、復元後にデータベースがオンラインになります。データベースがオンラインの場合、さらにログバックアップを復元することはできません。

    • 1 に設定して、NORECOVERY で復元します。この場合、復元タスクの完了後もデータベースが RESTORING 状態を保持します。このアプローチで、後からログ復元も実行することができます。

  • @stopat – データべ-スが、指定の日付と時間の状態に復元されたこと(日付時間形式)を指定するための値。指定の日時以前に書き込まれた取引きログ記録のみが、データベースに適用されます。

    このパラメータを指定していない場合 (NULL)、完全なログが復元されます。

注記

ログ復元は、データベースが復元状態にあるか、NORECOVERY で復元するタスクが既に存在している必要があります。

データベースがオンラインの場合、ログバックアップを復元することはできません。

データベースに、RECOVERY を使用した復元中のタスクがある場合、ログ復元タスクを提出することはできません。

マルチ AZ インスタンスでは、ログの復元はサポートされていません。

例 ログの復元
exec msdb.dbo.rds_restore_log @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn';
例 暗号化を使用したログの復元
exec msdb.dbo.rds_restore_log @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn', @kms_master_key_arn='arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE';
例 NORECOVERY を使用したログの復元

以下の 2 つの例は、NORECOVERY を使用したログ復元という同じタスクを実行します。

exec msdb.dbo.rds_restore_log @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn', @with_norecovery=1;
exec msdb.dbo.rds_restore_log @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn';
例 RECOVERY を使用したログの復元
exec msdb.dbo.rds_restore_log @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn', @with_norecovery=0;
例 STOPAT 句を使用したログの復元
exec msdb.dbo.rds_restore_log @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn', @with_norecovery=0, @stopat='2019-12-01 03:57:09';

データベースの復元を終了する

データベースの最後の復元タスクを @with_norecovery=1 を使用して実行した場合、データベースが RESTORING 状態になります。rds_finish_restoreストアドプロシージャを使用して、このデータベースを通常操作用に開きます。

使用方法

exec msdb.dbo.rds_finish_restore @db_name='database_name';
注記

このアプローチを使用するには、実行中の復元タスクのない状態で、データベースが RESTORING 状態である必要があります。

rds_finish_restoreプロシージャは、マルチ AZ インスタンスではサポートされていません。

データベースの復元が終了したら、マスターログインを使用してください。または、NORECOVERY を使用して直近にデータベースを復元したユーザーログインを使用またはログします。

部分的に復元したデータベースの使用

部分的に復元したデータベースの削除

部分的に復元したデータベースを削除するには(RESTORING状態のまま)、rds_drop_database ストアドプロシージャを使用してください。

exec msdb.dbo.rds_drop_database @db_name='database_name';
注記

復元の中断中または復元タスクが完了したデータベースに対し、DROP データベースリクエストを送信することはできません。

データベースを削除するには、マスターログインを使用します。または、NORECOVERY を使用して直近にデータベースを復元したユーザーログインを使用またはログします。

部分的に復元したデータベースのスナップショット復元とポイントインタイム復元の動作

ソースインスタンス内の部分的に復元されたデータベース(RESTORING状態のまま)は、スナップショットの復元またはポイントインタイム復元中に対象のインスタンスから削除されます。

タスクのキャンセル

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

注記

FINISH_RESTORE タスクはキャンセルできません。

使用方法

exec msdb.dbo.rds_cancel_task @task_id=ID_number;

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

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

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

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

使用方法

exec msdb.dbo.rds_task_status [@db_name='database_name'], [@task_id=ID_number];

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

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

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

例 特定タスクのステータスのリスト化
exec msdb.dbo.rds_task_status @task_id=5;
例 特定データベースおよびタスクのステータスのリスト化
exec msdb.dbo.rds_task_status @db_name='my_database', @task_id=5;
例 特定データベースのすべてのタスクおよびステータスのリスト化
exec msdb.dbo.rds_task_status @db_name='my_database';
例 現在のインスタンスのすべてのタスクおよびステータスのリスト化
exec msdb.dbo.rds_task_status;

レスポンス

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

説明

task_id

タスクの ID。

task_type

入力パラメータによるタスクタイプは以下の通りです。

  • バックアップタスク:

    • BACKUP_DB – 完全データベース復元

    • BACKUP_DB_DIFFERENTIAL – 差分データベースバックアップ

  • タスクの復元:

    • RESTORE_DB – RECOVERY を使用した完全データベースの復元

    • RESTORE_DB_NORECOVERY –NORECOVERY を使用した完全データベースの復元

    • RESTORE_DB_DIFFERENTIAL – RECOVERYで差分データベースの復元

    • RESTORE_DB_DIFFERENTIAL_NORECOVERY – NORECOVERY で差分データベースの復元

    • RESTORE_DB_LOG – RECOVERY でのログの復元

    • RESTORE_DB_LOG_NORECOVERY – NORECOVERY でログの復元

  • 復元を終了するタスク:

    • FINISH_RESTORE – 復元を終了しデータベースを開きます

以下の復元タスクが完了してデータベースが開くと、Amazon RDSが初期のスナップショットを作成します。

  • RESTORE_DB

  • RESTORE_DB_DIFFERENTIAL

  • RESTORE_DB_LOG

  • FINISH_RESTORE

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

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

S3_object_arn Amazon S3プレフィックスを表す ARN とバックアップまたは復元したファイルの名前。

overwrite_s3_backup_file

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

KMS_master_key_arn (バックアップ時の) 暗号化および (復元時の) 復号に使用する KMS キーの ARN。
filepath ネイティブバックアップおよびタスクの復元には適用されません。
overwrite_file ネイティブバックアップおよびタスクの復元には適用されません。

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

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

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

  • Microsoft SQL Server Enterprise Edition

  • Microsoft SQL Server Standard Edition

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

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

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

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

トラブルシューティング

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

問題 トラブルシューティングの推奨事項

データベースのバックアップ/復元オプションが有効になっていないか、有効化中です。後で再試行してください。

DB インスタンスに関連付けられた DB オプショングループにSQLSERVER_BACKUP_RESTOREオプションが追加されていることを確認します。詳細については、「ネイティブバックアップおよび復元オプションの追加」を参照してください。

アクセスが拒否されました

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

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

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

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

BACKUP DATABASE WITH COMPRESSION は <edition_name> エディションではサポートされていません

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

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

キー <ARN> が存在しません

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

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

正しいタイプでタスクを再発行し、プロパティを上書きしてください

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

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

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

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

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

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

RDS インスタンスと同じリージョンにあるバケットを指定してください

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

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

指定されたバケットは存在しません

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

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

ユーザー <ARN> にはリソース <ARN> で <kms action> を実行する権限がありません

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

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

Restore タスクは、10 個を超えるバックアップファイルから復元できません。一致するファイルの数を減らして、もう一度お試しください。

復元しようとしているファイル数を減らします。必要に応じて、個々のファイルを大きくすることができます。

データベース「database_name」は既に存在します。大文字と小文字またはアクセントのみが異なる 2 つのデータベースは使用できません。別のデータベース名を選択します。

既存のデータベースと同じ名前のデータベースを復元することはできません。データベース名は一意です。