Amazon Relational Database Service (Amazon RDS) に SQL Server データベースのネイティブバックアップを行い、そのバックアップファイルを Amazon Simple Storage Service (Amazon S3) に保存したいと考えています。また、SQL Server を実行している Amazon RDS データベースインスタンスと同じ、または別の Amazon RDS データベースインスタンスにバックアップを復元したいと考えています。
解決策
ネイティブバックアップを開始する前に、ネイティブバックアップと復元の設定が済んでいることを確認してください。
注: Amazon S3 バケットは、Amazon RDS データベースインスタンスと同じ AWS リージョンに配置する必要があります。
SQL Server データベースのネイティブバックアップを設定する
次の手順を実行します。
- Amazon Aurora と RDS コンソールを開きます。
- ナビゲーションペインで [オプショングループ] をクリックします。
- [グループを作成] を選択し、サーバーの名前、説明、エンジン、およびエンジンのバージョンを入力します。
- [作成] をクリックします。
- オプショングループを選択し、[オプションの追加] をクリックします。
- [オプション名] で SQLSERVER_BACKUP_RESTORE を選択します。
注: 新しい AWS Identity and Access Management (IAM) ロールを作成し、ロールに必要なアクセス許可を設定することをお勧めします。
- [S3 の宛先] で該当する S3 バケットを選択します。
- [スケジュール] で [即時] を選択します。
- [オプションを追加] をクリックします。
オプショングループをデータベースインスタンスに関連付ける
次の手順を実行します。
- ナビゲーションペインで [データベース] をクリックし、バックアップするインスタンスを選択します。
- [変更] をクリックし、[その他の構成] を選択します。
- [データベースオプション] でオプショングループを選択し、[続行] をクリックします。
- [変更の概要] を確認します。
- [スケジュールの変更] で [すぐに適用] を選択し、[DB インスタンスの変更] を選択します。
注: この変更自体はダウンタイムを発生させませんが、[すぐに適用] オプションを選択する場合は注意が必要です。データベースインスタンスのダウンタイムを必要とする保留中の変更がある場合、[すぐに適用] オプションを使用すると、予期しないダウンタイムが発生する可能性があります。詳細については、「スケジュール変更設定の使用」を参照してください。
- ステータスが Modifying から Available に変わるまで待ちます。
SSMS 経由でデータベースインスタンスに接続する
次の手順を実行します。
- db_owner または db_backupoperator として Microsoft SQL Server Management Studio (SSMS) にログインします。
- [新しいクエリ] をクリックし、データベースのバックアップを開始します。
- 次のいずれかの 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
注: @overwrite_s3_backup_file=1 を使用して、既存のバックアップファイルを上書きします。デフォルト値は 0 です。
注: 上記のステートメントで database_name、bucket_name、file_name_and_extension、region、account-id、key-id を実際の値に置き換えてください。ユーザーデータベースを新しい RDS データベースインスタンスに復元するには、S3 バケットで生成されたバックアップファイルを使用します。プロシージャ rds_backup_database または rds_restore_database を呼び出す際、タスクはそのタスクに関する情報を生成します。
タスクのライフサイクルステータスが SUCCESS と表示される場合、そのタスクは完了しています。Amazon S3 コンソールを使用して、ユーザーデータベースのバックアップを作成したバケット内のバックアップファイルを確認します。データベースインスタンスを復元するには、S3 バケット内のバックアップファイルをダウンロードするか、ユーザーデータベースのバックアップファイルを使用します。同じ Amazon RDS for SQL Server データベースインスタンスに復元することも、新しい Amazon RDS データベースインスタンスに復元することもできます。このバックアップファイルは、オンプレミスのサーバーまたは SQL Server を実行している別の Amazon RDS データベースインスタンスに復元することも可能です。詳細については、Microsoft のウェブサイトで「Quickstart: Backup and restore a SQL Server database with SSMS」(クイックスタート: SSMS を使用した SQL Server データベースのバックアップと復元) を参照してください。
S3 バケット内のバックアップファイルから復元するには、次のいずれかの SQL ステートメントを使用します。
暗号化されていないバックアップを復元するには、次のステートメントを実行します。
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';
注: 前のステートメントで、Amazon リソースネーム (ARN) 全体を実際の値に置き換えてください。
バックアップまたは復元ステートメントの進行状況を追跡するには、出力からタスク ID を特定します。または、次のステートメントを使用して特定のデータベースに対して完了したタスクと保留中のタスクをすべて特定できます。
exec msdb.dbo.rds_task_status @db_name='database_name';
注: database_name をデータベース名に置き換えてください。
ジョブのステータスを追跡するには、次の SQL ステートメントを実行します。
exec msdb.dbo.rds_task_status @task_id=Task_id;
注: 前のステートメントで、Task_id を実際の値に置き換えてください。
発生する可能性のあるエラーとその解決策については、「Migrating Microsoft SQL Server enterprise workloads to Amazon RDS」(Microsoft SQL Server Enterprise のワークロードを Amazon RDS に移行する) を参照してください。
関連情報
バックアップの概要
データのバックアップ、復元、エクスポート
ネイティブバックアップと復元を使用した SQL Server データベースのインポートとエクスポート