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

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


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

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

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

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

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

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

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

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

制限と推奨事項

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

  • 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 の対称カスタマーマスターキー (CMK) を使用します。Amazon RDS は非対称 CMK をサポートしていません。詳細については、AWS Key Management Service Developer Guide の「対称キーと非対称キーの使用」を参照してください。

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

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

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

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

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

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

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

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

    S3 の使用方法の概要については、『Amazon Simple Storage Service 入門ガイド』を参照してください。詳細については、「Amazon Simple Storage Service コンソールユーザーガイド」を参照してください。

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

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

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

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

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

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

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

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

例 ネイティブバックアップと復元の信頼関係

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

次の例では、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:GetObject", "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::bucket_name/*" } ] }

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

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

注記

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

IAM ロールは、AWS KMS CMK のキーユーザーおよびキー管理者であることも必要です。つまり、キーポリシーで指定する必要があります。詳細については、AWS Key Management Service Developer Guide の「対称 CMK の作成」を参照してください。

{ "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: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 リージョンを必要としません。

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

注記

KMS CMK を使用するかどうかにかかわらず、ネイティブバックアップおよび復元タスクでは、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 – アイテムの暗号化に使用する対称 AWS KMS CMK の ARN。

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

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

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

    • Amazon RDS は非対称 CMK をサポートしていません。詳細については、AWS Key Management Service Developer Guide の「対称キーと非対称キーの使用」を参照してください。

  • @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 – バックアップファイルを暗号化した場合、ファイルの復号に使用する AWS KMS カスタマーマスターキー (CMK)。

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

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

注記

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

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

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

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

例 単一ファイルの復元

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 – ログを暗号化した場合、ログの復号に使用する AWS KMS カスタマーマスターキー (CMK)。

  • @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 (バックアップ時の) 暗号化および (復元時の) 復号に使用する AWS KMS CMK の ARN。
filepath ネイティブバックアップおよびタスクの復元には適用されません。
overwrite_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';

トラブルシューティング

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

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

Access Denied

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

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

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

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

BACKUP DATABASE WITH COMPRESSION isn't supported on <edition_name> Edition

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

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

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 レプリケーションを使用して、正しい ARW リージョンにバックアップファイルをコピーできます。

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

The specified bucket does not exist

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

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

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

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

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

The Restore task is unable to restore from more than 10 backup file(s). Please reduce the number of files matched and try again. 復元しようとしているファイル数を減らします。必要に応じて、個々のファイルを大きくすることができます。