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

最終更新日: 2019 年 6 月 27 日

SQL Server を実行している Amazon Relational Database Service (Amazon RDS) DB インスタンスのネイティブバックアップを実行したいです。バックアップファイルを Amazon Simple Storage Service (Amazon S3) に保存するか、バックアップファイルを使用して RDS 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 コンソール] を開き、ナビゲーションペインで [オプショングループ] を選択します。[グループの作成] を選択して、サーバーの名前、説明、エンジン、およびエンジンバージョンを入力します。次に、[作成] をクリックします。
  2. 作成したオプショングループを選択して、[オプションの追加] をクリックします。「SQLSERVER_BACKUP_RESTORE」を選択します。新しい IAM ロールを作成し、[オプションの追加] を選択して、IAM ロールが必要な権限を持つようにすることをお勧めします。S3 バケットを選択するか、新しい S3 バケットを作成します。次に、[今すぐ適用] と [オプションの追加] を選択します。
  3. ナビゲーションペインで [データベース] をクリックしてオプショングループを DB インスタンスに関連付け、次にバックアップするインスタンスを選択します。[アクション] を選択してから、[変更] をクリックします。
  4. [データベースオプション] で、作成したオプショングループを選択し、次に [今すぐ適用] と [続行] をクリックします。情報を確認して、[DB インスタンスの変更] を選択します。インスタンスグループの再起動が不要なため、このオプショングループの変更にはダウンタイムがありません
  5. ステータスが変更中から使用可能に変わったら、SQL Server Management Studio を介して DB インスタンスに接続し、[新規クエリ] をクリックします。次の 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_namebucket_namefile_name_and_extensionregionaccount-id、および key-id を置き換えます。S3 バケットで生成されたバックアップファイルを使用して、新しい RDS DB インスタンスを復元できます。rds_backup_database または rds_restore_database ストアドプロシージャが呼び出されると、タスクが開始され、タスクに関する情報が出力されます。

タスクのライフサイクル状況が SUCCESS の場合、タスクは完了しています。その後、[Amazon S3 コンソール] を開き、バックアップを作成したバケットを選択して、バックアップファイルを表示できます。このファイルをダウンロードするか、またはファイルを使用して新しい 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 への移行」を参照してください。