SQL Server を実行している Amazon RDS DB インスタンスのネイティブバックアップを実行する方法を教えてください。

最終更新日: 2020 年 11 月 9 日

SQL Server を実行している Amazon Relational Database Service (Amazon RDS) DB インスタンスのユーザーデータベースのネイティブバックアップを実行したいです。バックアップファイルを Amazon Simple Storage Service (Amazon S3) に保存するか、データベースバックアップファイルを使用して同じ RDS SQL Server DB インスタンスまたは別の RDS SQL Server DB インスタンスに復元する必要があります。どうすればそれができますか?

簡単な説明

Amazon RDS は、Microsoft SQL Server データベースのネイティブバックアップと復元をサポートしています。オンプレミスのデータベースのフルバックアップを作成し、ファイルを Amazon S3 に保存できます。その後、SQL Server を実行している既存の Amazon RDS DB インスタンスにバックアップファイルを復元できます。このバックアップファイルをオンプレミスサーバーまたは SQL Server を実行している別の Amazon RDS DB インスタンスに復元することもできます。

解決方法

SQL Server データベースのネイティブバックアップを設定するには、次のサービスを使用します。

  • バックアップファイルを保存するための Amazon S3 バケット
  • バケットにアクセスするための AWS Identity and Access Management (IAM) ロール
  • DB インスタンスのオプショングループに追加された SQLSERVER_BACKUP_RESTORE オプション

注: RDS DB インスタンスと同じリージョンに S3 バケットを作成してください。

  1. Amazon RDS コンソールを開き、ナビゲーションペインで [Option Groups] (オプショングループ) を選択します。[Create Group] (グループの作成) を選択して、サーバーの名前、説明、エンジン、およびエンジンバージョンを入力します。次に、[Create] (作成) をクリックします。
  2. 作成したオプショングループを選択して、[Add Option] (オプションの追加) をクリックします。SQLSERVER_BACKUP_RESTORE を選択します。新しい IAM ロールを作成し、[Add Option] (オプションの追加) を選択して、IAM ロールが必要な権限を持つようにすることをお勧めします。S3 バケットを選択するか、新しい S3 バケットを作成します。次に、[Apply Immediately] (今すぐ適用) と [Add Option] (オプションの追加) を選択します。
  3. ナビゲーションペインで [Databases] (データベース) をクリックしてオプショングループを DB インスタンスに関連付け、次にバックアップするインスタンスを選択します。[Actions] (アクション)、[Modify] (変更) の順にクリックします。
  4. [Database Options] (データベースオプション) で、作成したオプショングループを選択し、次に [Apply Immediately] (今すぐ適用) と [Continue] (続行) をクリックします。情報を確認して、[Modify DB Instance] (DB インスタンスの変更) を選択します。インスタンスグループの再起動が不要なため、このオプショングループの変更にはダウンタイムがありません
  5. ステータスが変更中から使用可能に変わったら、SQL Server Management Studio を介して DB インスタンスに接続し、[New Query] (新規クエリ) をクリックします。次の SQL ステートメントのいずれかを入力して、目的のデータベースのバックアップを開始します。

暗号化されていないデータベースのバックアップを開始する

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;

暗号化されたデータベースのバックアップを開始する

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;

注: シナリオに合うようにこれらの例に記載されている database_name、bucket_name、file_name_and_extension、region、account-id、および key-id を置き換えます。S3 バケットで生成されたバックアップファイルを使用して、ユーザーデータベースを新しい RDS DB インスタンスに復元できます。rds_backup_database または rds_restore_database ストアドプロシージャが呼び出されると、タスクが開始され、タスクに関する情報が出力されます。

タスクのライフサイクル状況が SUCCESS の場合、タスクは完了しています。その後、Amazon S3 コンソールを開き、ユーザーデータベースのバックアップを作成したバケットを選択して、バックアップファイルを表示できます。このファイルをダウンロードするか、ユーザーデータベースのバックアップファイルを使用して、同じ RDS SQL Server DB インスタンスまたは新しい RDS DB インスタンスに復元できます。

以下の SQL ステートメントのいずれかを使用して、S3 バケットで使用可能なバックアップファイルから復元します。

暗号化されていないデータベースを復元する

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';

バックアップまたは復元ステートメントを実行した後でタスク ID を取得できます。または、次のスクリプトを使用して、特定のデータベースに対して完了したタスクと保留中のタスクをすべて識別できます。

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

ジョブの状況を追跡するには、次の SQL ステートメントを使用します。

exec msdb..rds_task_status @task_id= 5

潜在的なエラーと解決策の一覧については、Microsoft SQL Server Enterprise ワークロードの Amazon RDS への移行を参照してください。